diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b443d42 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +FROM node:14.0.0 + + +RUN apt-get update +RUN apt-get install -y build-essential +RUN apt-get install -y python +RUN npm install -g @nestjs/cli +RUN npm install pm2 -g + + +RUN mkdir /home/node/app +RUN mkdir /home/node/app/node_modules + +COPY ./package.json /home/node/app/package.json + +RUN chmod -R 777 /home/node +USER node + +RUN cd /home/node/app && ls + + +WORKDIR /home/node/app +COPY . /home/node/app + +# Install development packages if NODE_ENV is set to "development" +# ARG NODE_ENV +# ENV NODE_ENV $NODE_ENV + +RUN npm install diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..6ed560a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,68 @@ +version: '3' + +services: + taskme-api: + build: + context: ./ + dockerfile: Dockerfile + expose: + - 3000 + ports: + - 3000:3000 + depends_on: + - taskme-postgres + - taskme-redis + - taskme-minio + links: + - taskme-postgres + - taskme-redis + - taskme-minio + volumes: + - ./:/home/node/app + command: npm run start + + taskme-postgres: + image: postgres:11 + restart: always + + ports: + - 3303:5432 + + environment: + POSTGRES_PASSWORD: ${DATABASE_PASS} + POSTGRES_USER: ${DATABASE_USER} + POSTGRES_DB: ${DATABASE_DB} + + taskme-redis: + image: 'redis:4-alpine' + command: redis-server --requirepass ${REDIS_PASS} + ports: + - '6379:6379' + + taskme-minio: + hostname: taskme-minio + image: minio/minio + container_name: taskme-minio + + volumes: + - './taskme/data/:/data' + - './taskme/config:/root/.minio' + ports: + - 9000:9000 + environment: + MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY} + MINIO_SECRET_KEY: ${MINIO_SECRET_KEY} + command: server /data + + taskme-createbuckets: + image: minio/mc + depends_on: + - taskme-minio + entrypoint: > + /bin/sh -c " + sleep 10; + /usr/bin/mc config host add data http://${MINIO_HOST}:${MINIO_PORT} ${MINIO_ACCESS_KEY} ${MINIO_SECRET_KEY}; + /usr/bin/mc mb data/${MINIO_BUCKET}; + /usr/bin/mc policy set public data/${MINIO_BUCKET}; + exit 0; + " diff --git a/documentation/classes/CustomExeption.html b/documentation/classes/CustomExeption.html new file mode 100644 index 0000000..51fc727 --- /dev/null +++ b/documentation/classes/CustomExeption.html @@ -0,0 +1,202 @@ + + + + + + TaskMe + + + + + + + + + + + + + + +
+
+ + +
+
+ + + + + + + + + + + + + + + +
+
+

+

File

+

+

+ src/core/exeptions/custom.exeptions.ts +

+ + + + + + +
+

Index

+ + + + + + + + + + + + + + + +
+
Properties
+
+ +
+
+ + +
+ +

+ Properties +

+ + + + + + + + + + + +
+ + + isCustom + + +
+ +
+
+ + + + + + + +
+ + +
+
export class CustomExeption {
+	isCustom: true
+}
+
+
+
+ + + + + + + + +
+
+

result-matching ""

+
    +
    +
    +

    No results matching ""

    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/classes/User.html b/documentation/classes/User.html index dabfbf7..06b4662 100644 --- a/documentation/classes/User.html +++ b/documentation/classes/User.html @@ -3,18 +3,19 @@ - api-taskme documentation + TaskMe + @@ -66,15 +67,15 @@ +

    -

    Extends

    +

    Implements

    - BaseEntity +

    -

    Index

    @@ -87,9 +88,24 @@ @@ -109,6 +125,41 @@

    Properties

    +
    + + + + + + + + + + + + + + + + +
    + + + email + + +
    + Type : string + +
    + Decorators : +
    + + @Column({type: 'varchar', nullable: false, unique: true})
    +
    +
    + +
    @@ -137,7 +188,147 @@ + + + + +
    - + +
    + + + + + + + + + + + + + + + + + +
    + + + password + + +
    + Type : string + +
    + Decorators : +
    + + @Column({type: 'varchar', nullable: false, select: false})
    +
    +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + passwordSalt + + +
    + Type : string + +
    + Decorators : +
    + + @Column({type: 'varchar', nullable: false, select: false})
    +
    +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + phoneNumber + + +
    + Type : string + +
    + Decorators : +
    + + @Column({type: 'varchar', nullable: false, unique: true})
    +
    +
    + +
    + + + + + + + + + + + + + @@ -156,12 +347,28 @@
    -
    import { BaseEntity, Entity, PrimaryGeneratedColumn } from 'typeorm'
    +        
    import { Users } from 'src/core'
    +import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'
     
     @Entity('users')
    -export class User extends BaseEntity {
    +export class User implements Users.UserModel {
     	@PrimaryGeneratedColumn()
     	id: number
    +
    +	@Column({ type: 'char', default: Users.Role.User, nullable: false })
    +	role: Users.Role
    +
    +	@Column({ type: 'varchar', nullable: false, unique: true })
    +	email: string
    +
    +	@Column({ type: 'varchar', nullable: false, unique: true })
    +	phoneNumber: string
    +
    +	@Column({ type: 'varchar', nullable: false, select: false })
    +	password: string
    +
    +	@Column({ type: 'varchar', nullable: false, select: false })
    +	passwordSalt: string
     }
     
    diff --git a/documentation/classes/UserAlreadyExistException.html b/documentation/classes/UserAlreadyExistException.html new file mode 100644 index 0000000..0c59d4e --- /dev/null +++ b/documentation/classes/UserAlreadyExistException.html @@ -0,0 +1,215 @@ + + + + + + TaskMe + + + + + + + + + + + + + + +
    +
    + + +
    +
    + + + + + + + + + + + + + + + +
    +
    +

    +

    File

    +

    +

    + src/core/exeptions/users.exeptions.ts +

    + + + +

    +

    Extends

    +

    +

    + CustomExeption +

    + + + +
    +

    Index

    +
    + + + role + + +
    + Type : Users.Role + +
    + Decorators : +
    + + @Column({type: 'char', default: undefined, nullable: false})
    +
    +
    +
    + + + + + + + + + + + + + + +
    +
    Properties
    +
    + +
    +
    + + +
    + +

    + Properties +

    + + + + + + + + + + + + + + +
    + + + isCustom + + +
    +
    Inherited from CustomExeption +
    +
    +
    Defined in CustomExeption:2 +
    +
    +
    + + + + + + + + + + +
    +
    import { CustomExeption } from './custom.exeptions'
    +
    +export class UserAlreadyExistException extends CustomExeption {}
    +
    +
    + + + + + + + + + +
    +
    +

    result-matching ""

    +
      +
      +
      +

      No results matching ""

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/classes/UserCreator.html b/documentation/classes/UserCreator.html index 9f0c52f..2c6e40f 100644 --- a/documentation/classes/UserCreator.html +++ b/documentation/classes/UserCreator.html @@ -3,18 +3,19 @@ - api-taskme documentation + TaskMe + @@ -81,6 +82,10 @@ diff --git a/documentation/images/coverage-badge-documentation.svg b/documentation/images/coverage-badge-documentation.svg index 4908863..1a0f0df 100644 --- a/documentation/images/coverage-badge-documentation.svg +++ b/documentation/images/coverage-badge-documentation.svg @@ -4,6 +4,6 @@ documentation - 18% + 12% diff --git a/documentation/images/logo.png b/documentation/images/logo.png new file mode 100644 index 0000000..922463a Binary files /dev/null and b/documentation/images/logo.png differ diff --git a/documentation/index.html b/documentation/index.html index bed0b9c..3c46b0a 100644 --- a/documentation/index.html +++ b/documentation/index.html @@ -3,18 +3,19 @@ - api-taskme documentation + TaskMe + diff --git a/documentation/injectables/UsersPasswordsService.html b/documentation/injectables/UsersPasswordsService.html new file mode 100644 index 0000000..5df2025 --- /dev/null +++ b/documentation/injectables/UsersPasswordsService.html @@ -0,0 +1,610 @@ + + + + + + TaskMe + + + + + + + + + + + + + + +
      +
      + + +
      +
      + + + + + + + + + + + +
      +
      +

      +

      File

      +

      +

      + src/domain/users/services/users-passwords.service.ts +

      + + + + + +
      +

      Index

      + + + + + + + + + + + + + + + + + + + + + +
      +
      Properties
      +
      + +
      +
      Methods
      +
      + +
      +
      + + +
      + +

      + Methods +

      + + + + + + + + + + + + + + + + + + + +
      + + + Private + Async + comparePass + + +
      + + comparePass(password: string, salt: string, hash: string) +
      + +
      + +
      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameTypeOptional
      password + string + + No +
      salt + string + + No +
      hash + string + + No +
      +
      +
      +
      +
      + Returns : Promise<boolean> + +
      +
      + +
      +
      + + + + + + + + + + + + + + + + + + + +
      + + + Public + createUserSalt + + +
      + + createUserSalt() +
      + +
      + +
      + Returns : string + +
      +
      + + + + + + + + + + + + + + + + + + + +
      + + + Private + getSalt + + +
      + + getSalt(userSalt: string) +
      + +
      + +
      + Parameters : + + + + + + + + + + + + + + + + + + +
      NameTypeOptional
      userSalt + string + + No +
      +
      +
      +
      +
      + Returns : string + +
      +
      + +
      +
      + + + + + + + + + + + + + + + + + + + +
      + + + Public + Async + hashPassword + + +
      + + hashPassword(password: string, salt: string) +
      + +
      + +
      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameTypeOptional
      password + string + + No +
      salt + string + + No +
      +
      +
      +
      +
      + Returns : Promise<string> + +
      +
      + +
      +
      +
      +
      + +

      + Properties +

      + + + + + + + + + + + + + + + + + +
      + + + Private + localHashSalt + + +
      + Type : string + +
      + Decorators : +
      + + @Inject(PASSWORD_HASH_SALT)
      +
      +
      + +
      + + + + + + + + + + + + + + + + + +
      + + + Private + Readonly + saltRounds + + +
      + Type : number + +
      + Default value : 10 +
      + +
      +
      + +
      + + +
      +
      import { Inject, Injectable } from '@nestjs/common'
      +import * as bcrypt from 'bcryptjs'
      +import * as randomstring from 'randomstring'
      +import { Repository } from 'typeorm'
      +import { PASSWORD_HASH_SALT } from '../consts'
      +
      +@Injectable()
      +export class UsersPasswordsService {
      +	private readonly saltRounds = 10
      +
      +	@Inject(PASSWORD_HASH_SALT)
      +	private localHashSalt: string
      +
      +	// public async compareUserPasswords(userId: number, password: string) {
      +	// 	const user = await this.usersRepository.findOne({id: userId})
      +	// 	return this.comparePass(password, user.passwordSalt, user.password)
      +	// }
      +
      +	// public async changeUserPassword(userId: number, newPassword: string): Promise<void> {
      +	// 	const user = await this.usersRepository.findOne({id: userId})
      +	// 	user.password = await this.hashPassword(newPassword, user.passwordSalt)
      +	// 	await this.usersRepository.save(user)
      +	// }
      +
      +	public async hashPassword(password: string, salt: string): Promise<string> {
      +		return bcrypt.hash(this.getSalt(salt) + password, this.saltRounds)
      +	}
      +
      +	private async comparePass(password: string, salt: string, hash: string): Promise<boolean> {
      +		return await bcrypt.compare(this.getSalt(salt) + password, hash)
      +	}
      +
      +	public createUserSalt(): string {
      +		return randomstring.generate(10)
      +	}
      +
      +	private getSalt(userSalt: string): string {
      +		return this.localHashSalt + userSalt
      +	}
      +}
      +
      +
      + +
      + + + + + + + + + + + + +
      +
      +

      result-matching ""

      +
        +
        +
        +

        No results matching ""

        +
        +
        +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/injectables/UsersService.html b/documentation/injectables/UsersService.html index 871c898..7ed71d5 100644 --- a/documentation/injectables/UsersService.html +++ b/documentation/injectables/UsersService.html @@ -3,18 +3,19 @@ - api-taskme documentation + TaskMe + @@ -80,7 +81,7 @@
      • Public Async - getUser + save
      • @@ -104,27 +105,27 @@ - + Public Async - getUser - + save + - getUser(id: number) + save(payload: Users.SaveUserPaylod) - + @@ -146,9 +147,9 @@ - id + payload - number + Users.SaveUserPaylod @@ -163,7 +164,7 @@
        - Returns : Promise<any> + Returns : unknown
        @@ -181,26 +182,18 @@
        import { Injectable } from '@nestjs/common'
        -import { UserCreator } from '../classes/user-creator'
        +import { Users } from 'src/core'
         
         @Injectable()
        -export class UsersService {
        +export class UsersService implements Users.Service {
         	/**
         	 * Метод для отримання користувача по його ідентифікатору
         	 * @id Ідентифікатор користувача
        +	 * @payload - Данні нового користувача {{}}
         	 * @returns Обект користувача
         	 */
        -	public async getUser(id: number): Promise<any> {
        -		const userCreator = new UserCreator()
        -
        -		userCreator.setData({
        -			name: 'Vitalik',
        -			email: 'ebas@mail.ru',
        -		})
        -
        -		const user = await userCreator.save()
        -
        -		return user
        +	public async save(payload: Users.SaveUserPaylod) {
        +		return 1
         	}
         }
         
        diff --git a/documentation/interfaces/IDatabaseAsyncModuleParams.html b/documentation/interfaces/IDatabaseAsyncModuleParams.html index 3eaf86b..7440203 100644 --- a/documentation/interfaces/IDatabaseAsyncModuleParams.html +++ b/documentation/interfaces/IDatabaseAsyncModuleParams.html @@ -3,18 +3,19 @@ - api-taskme documentation + TaskMe + diff --git a/documentation/interfaces/IUsersService.html b/documentation/interfaces/IUsersService.html new file mode 100644 index 0000000..effffd2 --- /dev/null +++ b/documentation/interfaces/IUsersService.html @@ -0,0 +1,338 @@ + + + + + + TaskMe + + + + + + + + + + + + + + +
        +
        + + +
        +
        + + + + + + + + + + + + + + + + +
        +
        +

        +

        File

        +

        +

        + src/core/namespaces/users.namespace.ts +

        + + + + +
        +

        Index

        + + + + + + + + + +
        +
        Methods
        +
        + +
        +
        + +
        + +

        + Methods +

        + + + + + + + + + + + + + + + + + + + +
        + + + save + + +
        +save(payload: SaveUserPaylod) +
        + +
        +

        Метод для створення користувача

        +
        + +
        + Parameters : + + + + + + + + + + + + + + + + + + + + +
        NameTypeOptionalDescription
        payload + SaveUserPaylod + + No + +
          +
        • Данні нового користувача
        • +
        + +
        +
        +
        +
        +
        + Returns : Promise<number> + +
        +
        +

        Повертає id створеного користувача

        + +
        +
        +
        + +
        + + +
        +
        export namespace Users {
        +	/**
        +	 * Роль користувача
        +	 */
        +	export enum Role {
        +		Admin = 'a',
        +		User = 'u',
        +	}
        +
        +	/**
        +	 *  Базовий інтерфейс користувача
        +	 */
        +	export interface UserModel {
        +		/** Унікальний ідентифікатор */
        +		id: number
        +
        +		/** Роль користувача, можливі значення Role.Admin, Role.User */
        +		role: Role
        +
        +		/** Почта користувача */
        +		email: string
        +
        +		/** Робочий номер телефону по якому відбуваеться авторизація */
        +		phoneNumber: string
        +
        +		/**  Пароль в зашифрованому вигляді */
        +		password: string
        +
        +		/** Сіль для шифрування паролю */
        +		passwordSalt: string
        +	}
        +
        +	/**
        +	 * Інтерфейс інформації про користувача
        +	 */
        +	export interface Info {
        +		/** Ідентифікатор користувача */
        +		userId: string
        +
        +		/** Імя користувача*/
        +		firstName: string
        +
        +		/** Прізвище користувача*/
        +		lastName: string
        +
        +		/** По-батькові */
        +		surname: string
        +
        +		/** Позиція на роботі */
        +		position: string
        +
        +		/** Дата народження */
        +		dateOfBirth: string
        +
        +		/** Посилання на зображення користувача */
        +		avatarUrl: string
        +
        +		/** Додаток активований*/
        +		isActivedApp: boolean
        +
        +		/** Дата створення */
        +		createdAt: string
        +
        +		/** Дата останньої зміни */
        +		updatedAt: string
        +	}
        +
        +	export interface SaveUserPaylod {
        +		role: Role
        +		email: string
        +		phoneNumber: string
        +		password: string
        +		firstName: string
        +		lastName: string
        +		surname: string
        +		position: string
        +		dateOfBirth: string
        +		avatarUrl: string
        +		isActivedApp: boolean
        +	}
        +
        +	export interface IUsersService {
        +		/**
        +		 * Метод для створення користувача
        +		 * @param {SaveUserPaylod} payload  - Данні нового користувача
        +		 * @returns Повертає id створеного користувача
        +		 */
        +
        +		save(payload: SaveUserPaylod): Promise<number>
        +	}
        +}
        +
        +
        +
        + + + + + + + +
        +
        +

        result-matching ""

        +
          +
          +
          +

          No results matching ""

          +
          +
          +
          + +
          +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/interfaces/Info.html b/documentation/interfaces/Info.html new file mode 100644 index 0000000..d258679 --- /dev/null +++ b/documentation/interfaces/Info.html @@ -0,0 +1,709 @@ + + + + + + TaskMe + + + + + + + + + + + + + + +
          +
          + + +
          +
          + + + + + + + + + + + + + + + + +
          +
          +

          +

          File

          +

          +

          + src/core/namespaces/users.namespace.ts +

          + + +

          +

          Description

          +

          +

          +

          Інтерфейс інформації про користувача

          + +

          + + +
          +

          Index

          + + + + + + + + + +
          +
          Properties
          +
          + +
          +
          + + + +
          +

          Properties

          + + + + + + + + + + + + + + + + + + + + + + +
          + + avatarUrl + + + + +
          + avatarUrl: string + +
          + Type : string + +
          +

          Посилання на зображення користувача

          +
          +
          + + + + + + + + + + + + + + + + + + + + + + +
          + + createdAt + + + + +
          + createdAt: string + +
          + Type : string + +
          +

          Дата створення

          +
          +
          + + + + + + + + + + + + + + + + + + + + + + +
          + + dateOfBirth + + + + +
          + dateOfBirth: string + +
          + Type : string + +
          +

          Дата народження

          +
          +
          + + + + + + + + + + + + + + + + + + + + + + +
          + + firstName + + + + +
          + firstName: string + +
          + Type : string + +
          +

          Імя користувача

          +
          +
          + + + + + + + + + + + + + + + + + + + + + + +
          + + isActivedApp + + + + +
          + isActivedApp: boolean + +
          + Type : boolean + +
          +

          Додаток активований

          +
          +
          + + + + + + + + + + + + + + + + + + + + + + +
          + + lastName + + + + +
          + lastName: string + +
          + Type : string + +
          +

          Прізвище користувача

          +
          +
          + + + + + + + + + + + + + + + + + + + + + + +
          + + position + + + + +
          + position: string + +
          + Type : string + +
          +

          Позиція на роботі

          +
          +
          + + + + + + + + + + + + + + + + + + + + + + +
          + + surname + + + + +
          + surname: string + +
          + Type : string + +
          +

          По-батькові

          +
          +
          + + + + + + + + + + + + + + + + + + + + + + +
          + + updatedAt + + + + +
          + updatedAt: string + +
          + Type : string + +
          +

          Дата останньої зміни

          +
          +
          + + + + + + + + + + + + + + + + + + + + + + +
          + + userId + + + + +
          + userId: string + +
          + Type : string + +
          +

          Ідентифікатор користувача

          +
          +
          +
          +
          + + +
          +
          export namespace Users {
          +	/**
          +	 * Роль користувача
          +	 */
          +	export enum Role {
          +		Admin = 'a',
          +		User = 'u',
          +	}
          +
          +	/**
          +	 *  Базовий інтерфейс користувача
          +	 */
          +	export interface UserModel {
          +		/** Унікальний ідентифікатор */
          +		id: number
          +
          +		/** Роль користувача, можливі значення Role.Admin, Role.User */
          +		role: Role
          +
          +		/** Почта користувача */
          +		email: string
          +
          +		/** Робочий номер телефону по якому відбуваеться авторизація */
          +		phoneNumber: string
          +
          +		/**  Пароль в зашифрованому вигляді */
          +		password: string
          +
          +		/** Сіль для шифрування паролю */
          +		passwordSalt: string
          +	}
          +
          +	/**
          +	 * Інтерфейс інформації про користувача
          +	 */
          +	export interface Info {
          +		/** Ідентифікатор користувача */
          +		userId: string
          +
          +		/** Імя користувача*/
          +		firstName: string
          +
          +		/** Прізвище користувача*/
          +		lastName: string
          +
          +		/** По-батькові */
          +		surname: string
          +
          +		/** Позиція на роботі */
          +		position: string
          +
          +		/** Дата народження */
          +		dateOfBirth: string
          +
          +		/** Посилання на зображення користувача */
          +		avatarUrl: string
          +
          +		/** Додаток активований*/
          +		isActivedApp: boolean
          +
          +		/** Дата створення */
          +		createdAt: string
          +
          +		/** Дата останньої зміни */
          +		updatedAt: string
          +	}
          +
          +	export interface SaveUserPaylod {
          +		role: Role
          +		email: string
          +		phoneNumber: string
          +		password: string
          +		firstName: string
          +		lastName: string
          +		surname: string
          +		position: string
          +		dateOfBirth: string
          +		avatarUrl: string
          +		isActivedApp: boolean
          +	}
          +
          +	export interface IUsersService {
          +		/**
          +		 * Метод для створення користувача
          +		 * @param {SaveUserPaylod} payload  - Данні нового користувача
          +		 * @returns Повертає id створеного користувача
          +		 */
          +
          +		save(payload: SaveUserPaylod): Promise<number>
          +	}
          +}
          +
          +
          +
          + + + + + + + +
          +
          +

          result-matching ""

          +
            +
            +
            +

            No results matching ""

            +
            +
            +
            + +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/interfaces/SaveUserPaylod.html b/documentation/interfaces/SaveUserPaylod.html new file mode 100644 index 0000000..4885d35 --- /dev/null +++ b/documentation/interfaces/SaveUserPaylod.html @@ -0,0 +1,681 @@ + + + + + + TaskMe + + + + + + + + + + + + + + +
            +
            + + +
            +
            + + + + + + + + + + + + + + + + +
            +
            +

            +

            File

            +

            +

            + src/core/namespaces/users.namespace.ts +

            + + + + +
            +

            Index

            + + + + + + + + + +
            +
            Properties
            +
            + +
            +
            + + + +
            +

            Properties

            + + + + + + + + + + + + + + + + + + + +
            + + avatarUrl + + + + +
            + avatarUrl: string + +
            + Type : string + +
            + + + + + + + + + + + + + + + + + + + +
            + + dateOfBirth + + + + +
            + dateOfBirth: string + +
            + Type : string + +
            + + + + + + + + + + + + + + + + + + + +
            + + email + + + + +
            + email: string + +
            + Type : string + +
            + + + + + + + + + + + + + + + + + + + +
            + + firstName + + + + +
            + firstName: string + +
            + Type : string + +
            + + + + + + + + + + + + + + + + + + + +
            + + isActivedApp + + + + +
            + isActivedApp: boolean + +
            + Type : boolean + +
            + + + + + + + + + + + + + + + + + + + +
            + + lastName + + + + +
            + lastName: string + +
            + Type : string + +
            + + + + + + + + + + + + + + + + + + + +
            + + password + + + + +
            + password: string + +
            + Type : string + +
            + + + + + + + + + + + + + + + + + + + +
            + + phoneNumber + + + + +
            + phoneNumber: string + +
            + Type : string + +
            + + + + + + + + + + + + + + + + + + + +
            + + position + + + + +
            + position: string + +
            + Type : string + +
            + + + + + + + + + + + + + + + + + + + +
            + + role + + + + +
            + role: Role + +
            + Type : Role + +
            + + + + + + + + + + + + + + + + + + + +
            + + surname + + + + +
            + surname: string + +
            + Type : string + +
            +
            +
            + + +
            +
            export namespace Users {
            +	/**
            +	 * Роль користувача
            +	 */
            +	export enum Role {
            +		Admin = 'a',
            +		User = 'u',
            +	}
            +
            +	/**
            +	 *  Базовий інтерфейс користувача
            +	 */
            +	export interface UserModel {
            +		/** Унікальний ідентифікатор */
            +		id: number
            +
            +		/** Роль користувача, можливі значення Role.Admin, Role.User */
            +		role: Role
            +
            +		/** Почта користувача */
            +		email: string
            +
            +		/** Робочий номер телефону по якому відбуваеться авторизація */
            +		phoneNumber: string
            +
            +		/**  Пароль в зашифрованому вигляді */
            +		password: string
            +
            +		/** Сіль для шифрування паролю */
            +		passwordSalt: string
            +	}
            +
            +	/**
            +	 * Інтерфейс інформації про користувача
            +	 */
            +	export interface Info {
            +		/** Ідентифікатор користувача */
            +		userId: string
            +
            +		/** Імя користувача*/
            +		firstName: string
            +
            +		/** Прізвище користувача*/
            +		lastName: string
            +
            +		/** По-батькові */
            +		surname: string
            +
            +		/** Позиція на роботі */
            +		position: string
            +
            +		/** Дата народження */
            +		dateOfBirth: string
            +
            +		/** Посилання на зображення користувача */
            +		avatarUrl: string
            +
            +		/** Додаток активований*/
            +		isActivedApp: boolean
            +
            +		/** Дата створення */
            +		createdAt: string
            +
            +		/** Дата останньої зміни */
            +		updatedAt: string
            +	}
            +
            +	export interface SaveUserPaylod {
            +		role: Role
            +		email: string
            +		phoneNumber: string
            +		password: string
            +		firstName: string
            +		lastName: string
            +		surname: string
            +		position: string
            +		dateOfBirth: string
            +		avatarUrl: string
            +		isActivedApp: boolean
            +	}
            +
            +	export interface IUsersService {
            +		/**
            +		 * Метод для створення користувача
            +		 * @param {SaveUserPaylod} payload  - Данні нового користувача
            +		 * @returns Повертає id створеного користувача
            +		 */
            +
            +		save(payload: SaveUserPaylod): Promise<number>
            +	}
            +}
            +
            +
            +
            + + + + + + + +
            +
            +

            result-matching ""

            +
              +
              +
              +

              No results matching ""

              +
              +
              +
              + +
              +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/interfaces/Service.html b/documentation/interfaces/Service.html new file mode 100644 index 0000000..765cf52 --- /dev/null +++ b/documentation/interfaces/Service.html @@ -0,0 +1,330 @@ + + + + + + api-taskme documentation + + + + + + + + + + + + + +
              +
              + + +
              +
              + + + + + + + + + + + + + + + + +
              +
              +

              +

              File

              +

              +

              + src/core/namespaces/users.namespace.ts +

              + + + + +
              +

              Index

              + + + + + + + + + +
              +
              Methods
              +
              + +
              +
              + +
              + +

              + Methods +

              + + + + + + + + + + + + + + + + + + + +
              + + + save + + +
              +save(paylod: SaveUserPaylod) +
              + +
              +

              Метод для створення користувача

              +
              + +
              + Parameters : + + + + + + + + + + + + + + + + + + +
              NameTypeOptional
              paylod + SaveUserPaylod + + No +
              +
              +
              +
              +
              + Returns : Promise<number> + +
              +
              +

              Повертає id створеного користувача

              + +
              +
              +
              + +
              + + +
              +
              export namespace Users {
              +	/**
              +	 * Роль користувача
              +	 */
              +	export enum Role {
              +		Admin = 'a',
              +		User = 'u',
              +	}
              +
              +	/**
              +	 *  Базовий інтерфейс користувача
              +	 */
              +	export interface UserModel {
              +		/** Унікальний ідентифікатор */
              +		id: number
              +
              +		/** Роль користувача, можливі значення Role.Admin, Role.User */
              +		role: Role
              +
              +		/** Почта користувача */
              +		email: string
              +
              +		/** Робочий номер телефону по якому відбуваеться авторизація */
              +		phoneNumber: string
              +
              +		/**  Пароль в зашифрованому вигляді */
              +		password: string
              +
              +		/** Сіль для шифрування паролю */
              +		passwordSalt: string
              +	}
              +
              +	/**
              +	 * Інтерфейс інформації про користувача
              +	 */
              +	export interface Info {
              +		/** Ідентифікатор користувача */
              +		userId: string
              +
              +		/** Імя користувача*/
              +		firstName: string
              +
              +		/** Прізвище користувача*/
              +		lastName: string
              +
              +		/** По-батькові */
              +		surname: string
              +
              +		/** Позиція на роботі */
              +		position: string
              +
              +		/** Дата народження */
              +		dateOfBirth: string
              +
              +		/** Посилання на зображення користувача */
              +		avatarUrl: string
              +
              +		/** Додаток активований*/
              +		isActivedApp: boolean
              +
              +		/** Дата створення */
              +		createdAt: string
              +
              +		/** Дата останньої зміни */
              +		updatedAt: string
              +	}
              +
              +	export interface SaveUserPaylod {
              +		role: Role
              +		email: string
              +		phoneNumber: string
              +		password: string
              +		firstName: string
              +		lastName: string
              +		surname: string
              +		position: string
              +		dateOfBirth: string
              +		avatarUrl: string
              +		isActivedApp: boolean
              +	}
              +
              +	export interface Service {
              +		/**
              +		 * Метод для створення користувача
              +		 * @payload - Данні нового користувача
              +		 * @returns Повертає id створеного користувача
              +		 */
              +
              +		save(paylod: SaveUserPaylod): Promise<number>
              +	}
              +}
              +
              +
              +
              + + + + + + + +
              +
              +

              result-matching ""

              +
                +
                +
                +

                No results matching ""

                +
                +
                +
                + +
                +
                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/interfaces/UserModel.html b/documentation/interfaces/UserModel.html new file mode 100644 index 0000000..0c5f73c --- /dev/null +++ b/documentation/interfaces/UserModel.html @@ -0,0 +1,529 @@ + + + + + + TaskMe + + + + + + + + + + + + + + +
                +
                + + +
                +
                + + + + + + + + + + + + + + + + +
                +
                +

                +

                File

                +

                +

                + src/core/namespaces/users.namespace.ts +

                + + +

                +

                Description

                +

                +

                +

                Базовий інтерфейс користувача

                + +

                + + +
                +

                Index

                + + + + + + + + + +
                +
                Properties
                +
                + +
                +
                + + + +
                +

                Properties

                + + + + + + + + + + + + + + + + + + + + + + +
                + + email + + + + +
                + email: string + +
                + Type : string + +
                +

                Почта користувача

                +
                +
                + + + + + + + + + + + + + + + + + + + + + + +
                + + id + + + + +
                + id: number + +
                + Type : number + +
                +

                Унікальний ідентифікатор

                +
                +
                + + + + + + + + + + + + + + + + + + + + + + +
                + + password + + + + +
                + password: string + +
                + Type : string + +
                +

                Пароль в зашифрованому вигляді

                +
                +
                + + + + + + + + + + + + + + + + + + + + + + +
                + + passwordSalt + + + + +
                + passwordSalt: string + +
                + Type : string + +
                +

                Сіль для шифрування паролю

                +
                +
                + + + + + + + + + + + + + + + + + + + + + + +
                + + phoneNumber + + + + +
                + phoneNumber: string + +
                + Type : string + +
                +

                Робочий номер телефону по якому відбуваеться авторизація

                +
                +
                + + + + + + + + + + + + + + + + + + + + + + +
                + + role + + + + +
                + role: Role + +
                + Type : Role + +
                +

                Роль користувача, можливі значення Role.Admin, Role.User

                +
                +
                +
                +
                + + +
                +
                export namespace Users {
                +	/**
                +	 * Роль користувача
                +	 */
                +	export enum Role {
                +		Admin = 'a',
                +		User = 'u',
                +	}
                +
                +	/**
                +	 *  Базовий інтерфейс користувача
                +	 */
                +	export interface UserModel {
                +		/** Унікальний ідентифікатор */
                +		id: number
                +
                +		/** Роль користувача, можливі значення Role.Admin, Role.User */
                +		role: Role
                +
                +		/** Почта користувача */
                +		email: string
                +
                +		/** Робочий номер телефону по якому відбуваеться авторизація */
                +		phoneNumber: string
                +
                +		/**  Пароль в зашифрованому вигляді */
                +		password: string
                +
                +		/** Сіль для шифрування паролю */
                +		passwordSalt: string
                +	}
                +
                +	/**
                +	 * Інтерфейс інформації про користувача
                +	 */
                +	export interface Info {
                +		/** Ідентифікатор користувача */
                +		userId: string
                +
                +		/** Імя користувача*/
                +		firstName: string
                +
                +		/** Прізвище користувача*/
                +		lastName: string
                +
                +		/** По-батькові */
                +		surname: string
                +
                +		/** Позиція на роботі */
                +		position: string
                +
                +		/** Дата народження */
                +		dateOfBirth: string
                +
                +		/** Посилання на зображення користувача */
                +		avatarUrl: string
                +
                +		/** Додаток активований*/
                +		isActivedApp: boolean
                +
                +		/** Дата створення */
                +		createdAt: string
                +
                +		/** Дата останньої зміни */
                +		updatedAt: string
                +	}
                +
                +	export interface SaveUserPaylod {
                +		role: Role
                +		email: string
                +		phoneNumber: string
                +		password: string
                +		firstName: string
                +		lastName: string
                +		surname: string
                +		position: string
                +		dateOfBirth: string
                +		avatarUrl: string
                +		isActivedApp: boolean
                +	}
                +
                +	export interface IUsersService {
                +		/**
                +		 * Метод для створення користувача
                +		 * @param {SaveUserPaylod} payload  - Данні нового користувача
                +		 * @returns Повертає id створеного користувача
                +		 */
                +
                +		save(payload: SaveUserPaylod): Promise<number>
                +	}
                +}
                +
                +
                +
                + + + + + + + +
                +
                +

                result-matching ""

                +
                  +
                  +
                  +

                  No results matching ""

                  +
                  +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/interfaces/UsersModuleOptions.html b/documentation/interfaces/UsersModuleOptions.html new file mode 100644 index 0000000..5f5fa7a --- /dev/null +++ b/documentation/interfaces/UsersModuleOptions.html @@ -0,0 +1,203 @@ + + + + + + TaskMe + + + + + + + + + + + + + + +
                  +
                  + + +
                  +
                  + + + + + + + + + + + + + + + + +
                  +
                  +

                  +

                  File

                  +

                  +

                  + src/domain/users/interfaces/users-module-options.interface.ts +

                  + + + + +
                  +

                  Index

                  + + + + + + + + + +
                  +
                  Properties
                  +
                  + +
                  +
                  + + + +
                  +

                  Properties

                  + + + + + + + + + + + + + + + + + + + +
                  + + passwordHashSalt + + + + +
                  + passwordHashSalt: string + +
                  + Type : string + +
                  +
                  +
                  + + +
                  +
                  export interface UsersModuleOptions {
                  +	passwordHashSalt: string
                  +}
                  +
                  +
                  +
                  + + + + + + + +
                  +
                  +

                  result-matching ""

                  +
                    +
                    +
                    +

                    No results matching ""

                    +
                    +
                    +
                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/js/menu-wc.js b/documentation/js/menu-wc.js index d8d6206..96b5a8c 100644 --- a/documentation/js/menu-wc.js +++ b/documentation/js/menu-wc.js @@ -16,7 +16,9 @@ customElements.define('compodoc-menu', class extends HTMLElement {
                    @@ -135,12 +152,6 @@ customElements.define('compodoc-menu', class extends HTMLElement {
                  • Documentation coverage
                  • -
                  • - `); diff --git a/documentation/js/menu-wc_es5.js b/documentation/js/menu-wc_es5.js index db678a3..2d90a5f 100644 --- a/documentation/js/menu-wc_es5.js +++ b/documentation/js/menu-wc_es5.js @@ -51,7 +51,7 @@ customElements.define('compodoc-menu', /*#__PURE__*/function (_HTMLElement) { }, { key: "render", value: function render(isNormalMode) { - var tp = lithtml.html("\n \n ")); + var tp = lithtml.html("\n \n ")); this.innerHTML = tp.strings; } }]); diff --git a/documentation/js/search/search_index.js b/documentation/js/search/search_index.js index 87023bc..3099dad 100644 --- a/documentation/js/search/search_index.js +++ b/documentation/js/search/search_index.js @@ -1,4 +1,4 @@ var COMPODOC_SEARCH_INDEX = { - "index": {"version":"2.3.9","fields":["title","body"],"fieldVectors":[["title/modules/AppModule.html",[0,0.847,1,1.516]],["body/modules/AppModule.html",[0,1.145,1,2.788,2,1.128,3,2.05,4,2.133,5,2.133,6,2.239,7,0.055,8,1.937,9,2.886,10,2.133,11,2.133,12,0.624,13,0.528,14,0.528,15,1.779,16,2,17,1.198,18,1.304,19,2.408,20,2.671,21,2.671,22,2.133,23,2.133,24,2.133,25,0.624,26,0.624,27,0.028,28,0.038,29,0.028]],["title/modules/DatabaseModule.html",[0,0.847,6,1.305]],["body/modules/DatabaseModule.html",[0,1.215,2,0.996,6,1.872,7,0.056,8,0.996,12,0.55,13,0.466,14,0.466,16,1.151,17,1.047,18,1.151,25,0.55,26,0.55,27,0.025,28,0.035,29,0.025,30,2.357,31,1.337,32,2.648,33,2.648,34,1.882,35,3.834,36,4.16,37,4.16,38,1.151,39,2.357,40,1.151,41,0.996,42,0.466,43,1.151,44,3.063,45,1.337,46,3.063,47,3.315,48,2.357,49,2.648,50,3.315,51,0.996,52,1.4,53,2.357,54,1.882,55,1.882,56,1.882,57,1.57,58,1.337,59,1.882]],["title/interfaces/IDatabaseAsyncModuleParams.html",[60,0.624,61,1.781]],["body/interfaces/IDatabaseAsyncModuleParams.html",[0,0.941,7,0.054,12,0.694,13,0.588,14,0.588,16,2.236,17,0.811,25,0.694,27,0.031,28,0.041,29,0.031,42,0.854,43,1.894,49,2.374,51,1.255,57,3.051,60,0.694,61,2.585,62,1.451,63,2.374,64,2.374,65,0.588,66,1.639,67,3.657,68,3.099,69,2.972,70,2.374]],["title/interfaces/IUser.html",[60,0.624,71,1.781]],["body/interfaces/IUser.html",[7,0.057,12,0.426,13,0.361,14,0.361,17,0.498,25,0.642,27,0.019,28,0.029,29,0.019,42,0.822,60,0.426,62,0.891,65,0.361,66,1.162,71,1.833,72,1.457,73,1.8,74,2.091,75,2.456,76,2.944,77,2.944,78,2.959,79,2.704,80,1.878,81,2.197,82,2.197,83,1.824,84,1.457,85,1.457]],["title/interfaces/TUser.html",[60,0.624,86,1.781]],["body/interfaces/TUser.html",[7,0.057,12,0.393,13,0.333,14,0.333,25,0.736,27,0.018,28,0.027,29,0.018,42,0.797,60,0.393,62,0.822,65,0.333,66,1.093,73,1.727,74,2.006,75,2.356,76,2.825,77,2.825,78,2.356,79,2.656,80,1.788,81,2.067,82,2.067,84,1.345,85,1.345,86,1.724,87,1.122,88,1.345,89,2.825,90,1.683,91,1.345,92,0.616,93,1.345]],["title/classes/User.html",[26,0.624,92,0.978]],["body/classes/User.html",[7,0.053,12,0.724,13,0.613,14,0.613,17,0.846,25,0.724,26,0.724,27,0.033,28,0.042,29,0.033,38,1.514,42,0.613,51,1.31,65,0.613,66,1.685,74,2.501,80,2.262,92,1.46,94,2.066,95,2.476,96,3.987,97,4.408,98,3.1,99,4.408,100,3.1,101,2.476,102,3.1]],["title/classes/UserCreator.html",[26,0.624,103,1.305]],["body/classes/UserCreator.html",[7,0.054,12,0.463,13,0.392,14,0.392,17,0.541,25,0.463,26,0.463,27,0.021,28,0.031,29,0.021,31,1.661,38,2.001,40,1.429,41,1.47,42,0.76,43,1.429,45,1.974,51,0.838,52,1.47,58,1.974,60,0.463,65,0.392,66,1.237,73,0.968,79,1.661,94,1.321,103,1.429,104,2.857,105,1.321,106,3.425,107,2.779,108,2.779,109,3.097,110,3.069,111,2.927,112,2.927,113,2.432,114,1.983,115,3.033,116,1.983,117,1.983,118,1.983,119,2.338,120,1.983,121,2.338,122,2.338,123,1.983,124,2.338,125,1.584]],["title/interfaces/UserPaylod.html",[60,0.624,113,1.516]],["body/interfaces/UserPaylod.html",[7,0.055,12,0.598,13,0.507,14,0.507,17,0.699,25,0.598,26,0.598,27,0.027,28,0.037,29,0.027,41,1.822,42,0.695,51,1.082,52,1.693,58,1.453,60,0.598,62,1.251,65,0.507,66,1.484,73,2.106,79,2.648,103,1.251,104,1.707,105,1.707,106,2.806,107,2.046,108,2.046,109,2.671,110,2.046,113,2.447,115,2.873,119,2.046,121,2.046,122,2.046,124,2.806,125,2.046]],["title/modules/UsersModule.html",[0,0.847,8,1.129]],["body/modules/UsersModule.html",[0,1.358,2,1.066,7,0.055,8,1.81,12,0.589,13,0.499,14,0.499,17,0.949,18,1.232,25,0.589,26,0.589,27,0.026,28,0.037,29,0.026,31,1.431,32,3.59,33,2.015,34,2.776,38,1.697,40,1.232,41,1.066,42,0.499,43,1.232,44,3.176,45,1.972,46,3.59,52,1.468,54,2.776,126,2.523,127,3.976,128,2.523,129,2.523,130,2.256,131,2.523,132,2.523,133,2.523]],["title/injectables/UsersService.html",[130,1.516,134,1.516]],["body/injectables/UsersService.html",[7,0.057,12,0.53,13,0.449,14,0.449,17,0.882,18,1.109,22,2.579,25,0.53,26,0.53,27,0.024,28,0.034,29,0.024,31,1.832,38,1.109,40,1.109,41,1.364,42,0.449,43,1.109,45,1.832,52,0.959,58,2.132,59,1.814,65,0.449,70,2.579,73,1.109,74,1.832,80,2.132,92,1.182,103,1.835,109,2.504,130,1.832,134,1.832,135,2.271,136,1.814,137,3.229,138,3.229,139,2.271,140,2.271,141,2.271,142,1.814,143,2.271,144,2.271,145,2.271,146,2.271]],["title/coverage.html",[147,2.409]],["body/coverage.html",[0,0.74,7,0.054,14,0.462,15,1.555,16,1.14,19,1.555,26,0.769,27,0.025,28,0.035,29,0.025,42,0.462,60,0.968,61,1.555,63,1.865,64,1.865,68,1.865,71,1.555,72,1.865,86,1.555,87,1.555,92,0.855,95,1.865,103,1.14,104,2.194,105,2.194,113,1.324,130,1.324,134,1.324,136,1.865,142,1.865,147,1.555,148,2.335,149,2.335,150,2.335,151,4.369,152,4.903,153,4.533,154,2.63,155,1.865,156,2.335,157,2.335,158,2.335,159,2.335,160,2.335,161,2.335,162,1.865,163,1.865,164,2.335,165,2.335,166,2.335,167,1.865,168,1.865,169,1.865,170,2.335,171,1.865,172,1.865,173,2.335,174,2.335]],["title/dependencies.html",[3,1.818,175,2.247]],["body/dependencies.html",[3,1.827,7,0.055,18,1.572,27,0.034,28,0.043,29,0.034,51,1.36,176,4.487,177,3.22,178,3.22,179,3.22,180,3.22,181,3.22,182,3.22,183,3.22,184,2.572,185,3.22,186,3.22,187,3.22,188,3.22,189,3.22,190,3.22,191,3.22,192,3.22,193,3.22]],["title/miscellaneous/enumerations.html",[194,0.949,195,2.56]],["body/miscellaneous/enumerations.html",[7,0.055,27,0.035,28,0.044,29,0.035,65,0.654,78,2.767,87,2.202,89,3.317,91,3.317,92,1.52,93,3.317,194,1.396,195,2.64,196,3.305,197,3.305,198,3.305,199,3.805]],["title/miscellaneous/functions.html",[194,0.949,200,2.56]],["body/miscellaneous/functions.html",[7,0.048,27,0.04,28,0.048,29,0.04,65,0.759,171,3.064,172,3.873,194,1.621,200,3.064,201,3.836]],["title/index.html",[65,0.444,202,2.247,203,2.247]],["body/index.html",[7,0.054,13,0.455,27,0.024,28,0.034,29,0.024,88,1.839,115,1.534,147,1.534,204,2.302,205,2.302,206,3.261,207,2.302,208,2.302,209,2.302,210,2.302,211,2.302,212,2.302,213,2.302,214,2.302,215,2.302,216,3.786,217,2.302,218,2.302,219,2.302,220,4.64,221,2.302,222,2.302,223,2.302,224,4.513,225,2.302,226,2.302,227,3.261,228,2.302,229,2.302,230,2.302,231,2.302,232,3.261,233,3.261,234,2.302,235,2.302,236,2.302,237,3.261,238,3.261,239,2.302,240,2.302,241,2.302,242,2.302,243,2.302,244,1.839,245,2.302,246,2.302,247,2.302,248,2.302,249,2.302,250,2.302,251,2.302,252,2.302,253,2.302,254,2.302,255,2.302,256,2.302,257,2.302,258,2.302,259,2.302,260,2.302,261,2.302,262,2.302]],["title/modules.html",[2,1.527]],["body/modules.html",[1,2.081,2,1.549,6,1.791,7,0.047,8,1.549,27,0.039,28,0.047,29,0.039,244,2.93,263,3.668,264,3.668,265,4.757,266,4.428,267,4.428]],["title/overview.html",[268,2.888]],["body/overview.html",[1,2.832,2,1.378,3,2.336,4,2.605,5,2.605,6,2.204,7,0.05,8,1.907,9,3.29,10,2.605,11,2.605,27,0.034,28,0.043,29,0.034,62,1.593,94,2.173,134,1.85,268,2.605,269,3.262,270,3.262,271,3.262,272,3.262]],["title/miscellaneous/variables.html",[194,0.949,273,2.56]],["body/miscellaneous/variables.html",[7,0.056,15,1.506,16,1.572,19,2.145,23,1.806,24,1.806,27,0.024,28,0.034,29,0.024,40,1.104,41,1.36,42,0.808,52,1.36,55,1.806,56,1.806,57,1.506,65,0.447,67,1.806,75,1.506,92,0.828,101,1.806,154,1.806,155,2.994,162,1.806,163,2.571,167,1.806,168,2.571,169,2.571,184,1.806,194,0.955,199,3.448,273,1.806,274,3.748,275,2.261,276,2.261,277,2.261,278,4.316,279,2.261,280,2.261,281,2.261,282,2.261,283,2.261,284,2.261,285,2.261,286,2.261,287,2.261,288,2.261,289,2.261,290,2.261,291,3.219,292,2.261]]],"invertedIndex":[["",{"_index":7,"title":{},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUser.html":{},"interfaces/TUser.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"index.html":{},"modules.html":{},"overview.html":{},"miscellaneous/variables.html":{}}}],["0",{"_index":152,"title":{},"body":{"coverage.html":{}}}],["0.1.13",{"_index":188,"title":{},"body":{"dependencies.html":{}}}],["0.2.36",{"_index":193,"title":{},"body":{"dependencies.html":{}}}],["0/1",{"_index":153,"title":{},"body":{"coverage.html":{}}}],["0/2",{"_index":164,"title":{},"body":{"coverage.html":{}}}],["0/3",{"_index":161,"title":{},"body":{"coverage.html":{}}}],["0/4",{"_index":170,"title":{},"body":{"coverage.html":{}}}],["0/6",{"_index":160,"title":{},"body":{"coverage.html":{}}}],["1",{"_index":270,"title":{},"body":{"overview.html":{}}}],["1.0.2",{"_index":185,"title":{},"body":{"dependencies.html":{}}}],["1/2",{"_index":166,"title":{},"body":{"coverage.html":{}}}],["10.0.0",{"_index":183,"title":{},"body":{"dependencies.html":{}}}],["100",{"_index":158,"title":{},"body":{"coverage.html":{}}}],["2",{"_index":271,"title":{},"body":{"overview.html":{}}}],["3",{"_index":269,"title":{},"body":{"overview.html":{}}}],["3.0.2",{"_index":190,"title":{},"body":{"dependencies.html":{}}}],["4",{"_index":272,"title":{},"body":{"overview.html":{}}}],["50",{"_index":165,"title":{},"body":{"coverage.html":{}}}],["6.5.4",{"_index":192,"title":{},"body":{"dependencies.html":{}}}],["6/7",{"_index":157,"title":{},"body":{"coverage.html":{}}}],["7.0.0",{"_index":176,"title":{},"body":{"dependencies.html":{}}}],["7/7",{"_index":159,"title":{},"body":{"coverage.html":{}}}],["8.0.1",{"_index":181,"title":{},"body":{"dependencies.html":{}}}],["85",{"_index":156,"title":{},"body":{"coverage.html":{}}}],["admin",{"_index":91,"title":{},"body":{"interfaces/TUser.html":{},"miscellaneous/enumerations.html":{}}}],["amazing",{"_index":245,"title":{},"body":{"index.html":{}}}],["angular",{"_index":215,"title":{},"body":{"index.html":{}}}],["app",{"_index":222,"title":{},"body":{"index.html":{}}}],["applications",{"_index":212,"title":{},"body":{"index.html":{}}}],["appmodule",{"_index":1,"title":{"modules/AppModule.html":{}},"body":{"modules/AppModule.html":{},"modules.html":{},"overview.html":{}}}],["args",{"_index":69,"title":{},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{}}}],["async",{"_index":58,"title":{},"body":{"modules/DatabaseModule.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"injectables/UsersService.html":{}}}],["author",{"_index":255,"title":{},"body":{"index.html":{}}}],["available",{"_index":267,"title":{},"body":{"modules.html":{}}}],["await",{"_index":59,"title":{},"body":{"modules/DatabaseModule.html":{},"injectables/UsersService.html":{}}}],["backers",{"_index":246,"title":{},"body":{"index.html":{}}}],["baseentity",{"_index":97,"title":{},"body":{"classes/User.html":{}}}],["bootstrap",{"_index":172,"title":{},"body":{"coverage.html":{},"miscellaneous/functions.html":{}}}],["browse",{"_index":265,"title":{},"body":{"modules.html":{}}}],["browser",{"_index":263,"title":{},"body":{"modules.html":{}}}],["building",{"_index":207,"title":{},"body":{"index.html":{}}}],["class",{"_index":26,"title":{"classes/User.html":{},"classes/UserCreator.html":{}},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{},"coverage.html":{}}}],["classes",{"_index":94,"title":{},"body":{"classes/User.html":{},"classes/UserCreator.html":{},"overview.html":{}}}],["classes/user",{"_index":140,"title":{},"body":{"injectables/UsersService.html":{}}}],["cluster_appmodule",{"_index":4,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["cluster_appmodule_imports",{"_index":5,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["config",{"_index":19,"title":{},"body":{"modules/AppModule.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["connection",{"_index":291,"title":{},"body":{"miscellaneous/variables.html":{}}}],["connection.getrepository(entity",{"_index":292,"title":{},"body":{"miscellaneous/variables.html":{}}}],["connectionoptions",{"_index":49,"title":{},"body":{"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{}}}],["console.log(usersmodule.options",{"_index":133,"title":{},"body":{"modules/UsersModule.html":{}}}],["const",{"_index":22,"title":{},"body":{"modules/AppModule.html":{},"injectables/UsersService.html":{}}}],["coverage",{"_index":147,"title":{"coverage.html":{}},"body":{"coverage.html":{},"index.html":{}}}],["createconnection",{"_index":50,"title":{},"body":{"modules/DatabaseModule.html":{}}}],["creator",{"_index":141,"title":{},"body":{"injectables/UsersService.html":{}}}],["creator.ts",{"_index":105,"title":{},"body":{"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"coverage.html":{}}}],["creator.ts:10",{"_index":114,"title":{},"body":{"classes/UserCreator.html":{}}}],["creator.ts:12",{"_index":120,"title":{},"body":{"classes/UserCreator.html":{}}}],["creator.ts:16",{"_index":123,"title":{},"body":{"classes/UserCreator.html":{}}}],["creator.ts:21",{"_index":117,"title":{},"body":{"classes/UserCreator.html":{}}}],["creator.ts:9",{"_index":116,"title":{},"body":{"classes/UserCreator.html":{}}}],["database",{"_index":287,"title":{},"body":{"miscellaneous/variables.html":{}}}],["database_connection",{"_index":56,"title":{},"body":{"modules/DatabaseModule.html":{},"miscellaneous/variables.html":{}}}],["databasemodule",{"_index":6,"title":{"modules/DatabaseModule.html":{}},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"modules.html":{},"overview.html":{}}}],["databasemodule.forroot(...$config.getdatabaseconfig",{"_index":24,"title":{},"body":{"modules/AppModule.html":{},"miscellaneous/variables.html":{}}}],["decorators",{"_index":98,"title":{},"body":{"classes/User.html":{}}}],["default",{"_index":278,"title":{},"body":{"miscellaneous/variables.html":{}}}],["defined",{"_index":38,"title":{},"body":{"modules/DatabaseModule.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{}}}],["dependencies",{"_index":3,"title":{"dependencies.html":{}},"body":{"modules/AppModule.html":{},"dependencies.html":{},"overview.html":{}}}],["description",{"_index":88,"title":{},"body":{"interfaces/TUser.html":{},"index.html":{}}}],["development",{"_index":223,"title":{},"body":{"index.html":{}}}],["documentation",{"_index":148,"title":{},"body":{"coverage.html":{}}}],["domain/users/users.module",{"_index":20,"title":{},"body":{"modules/AppModule.html":{}}}],["dotenv",{"_index":182,"title":{},"body":{"dependencies.html":{}}}],["dynamicmodule",{"_index":46,"title":{},"body":{"modules/DatabaseModule.html":{},"modules/UsersModule.html":{}}}],["e2e",{"_index":234,"title":{},"body":{"index.html":{}}}],["ebas@mail.ru",{"_index":145,"title":{},"body":{"injectables/UsersService.html":{}}}],["efficient",{"_index":208,"title":{},"body":{"index.html":{}}}],["email",{"_index":73,"title":{},"body":{"interfaces/IUser.html":{},"interfaces/TUser.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"injectables/UsersService.html":{}}}],["entities",{"_index":36,"title":{},"body":{"modules/DatabaseModule.html":{}}}],["entity",{"_index":101,"title":{},"body":{"classes/User.html":{},"miscellaneous/variables.html":{}}}],["entity('users",{"_index":102,"title":{},"body":{"classes/User.html":{}}}],["entityschema",{"_index":37,"title":{},"body":{"modules/DatabaseModule.html":{}}}],["enum",{"_index":90,"title":{},"body":{"interfaces/TUser.html":{}}}],["enumerations",{"_index":195,"title":{"miscellaneous/enumerations.html":{}},"body":{"miscellaneous/enumerations.html":{}}}],["export",{"_index":25,"title":{},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUser.html":{},"interfaces/TUser.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{}}}],["express",{"_index":179,"title":{},"body":{"dependencies.html":{}}}],["extends",{"_index":96,"title":{},"body":{"classes/User.html":{}}}],["file",{"_index":14,"title":{},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUser.html":{},"interfaces/TUser.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{},"coverage.html":{}}}],["forfeature",{"_index":127,"title":{},"body":{"modules/UsersModule.html":{}}}],["forroot",{"_index":33,"title":{},"body":{"modules/DatabaseModule.html":{},"modules/UsersModule.html":{}}}],["forroot(options",{"_index":34,"title":{},"body":{"modules/DatabaseModule.html":{},"modules/UsersModule.html":{}}}],["framework",{"_index":206,"title":{},"body":{"index.html":{}}}],["function",{"_index":68,"title":{},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"coverage.html":{}}}],["functions",{"_index":200,"title":{"miscellaneous/functions.html":{}},"body":{"miscellaneous/functions.html":{}}}],["getdatabaseconfig",{"_index":155,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["getrepositoryhelper",{"_index":169,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["getting",{"_index":202,"title":{"index.html":{}},"body":{}}],["getuser",{"_index":137,"title":{},"body":{"injectables/UsersService.html":{}}}],["getuser(id",{"_index":138,"title":{},"body":{"injectables/UsersService.html":{}}}],["global",{"_index":47,"title":{},"body":{"modules/DatabaseModule.html":{}}}],["graph",{"_index":266,"title":{},"body":{"modules.html":{}}}],["grow",{"_index":241,"title":{},"body":{"index.html":{}}}],["heavily",{"_index":213,"title":{},"body":{"index.html":{}}}],["here",{"_index":252,"title":{},"body":{"index.html":{}}}],["host",{"_index":280,"title":{},"body":{"miscellaneous/variables.html":{}}}],["https://nestjs.com",{"_index":259,"title":{},"body":{"index.html":{}}}],["id",{"_index":74,"title":{},"body":{"interfaces/IUser.html":{},"interfaces/TUser.html":{},"classes/User.html":{},"injectables/UsersService.html":{}}}],["idatabaseasyncmoduleparams",{"_index":61,"title":{"interfaces/IDatabaseAsyncModuleParams.html":{}},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"coverage.html":{}}}],["identifier",{"_index":149,"title":{},"body":{"coverage.html":{}}}],["import",{"_index":17,"title":{},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUser.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{}}}],["imports",{"_index":16,"title":{},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["index",{"_index":65,"title":{"index.html":{}},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUser.html":{},"interfaces/TUser.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"injectables/UsersService.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["info",{"_index":12,"title":{},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUser.html":{},"interfaces/TUser.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{}}}],["inject",{"_index":67,"title":{},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"miscellaneous/variables.html":{}}}],["injectable",{"_index":134,"title":{"injectables/UsersService.html":{}},"body":{"injectables/UsersService.html":{},"coverage.html":{},"overview.html":{}}}],["injectables",{"_index":135,"title":{},"body":{"injectables/UsersService.html":{}}}],["inspired",{"_index":214,"title":{},"body":{"index.html":{}}}],["installation",{"_index":219,"title":{},"body":{"index.html":{}}}],["installrunning",{"_index":221,"title":{},"body":{"index.html":{}}}],["interface",{"_index":60,"title":{"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUser.html":{},"interfaces/TUser.html":{},"interfaces/UserPaylod.html":{}},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUser.html":{},"interfaces/TUser.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"coverage.html":{}}}],["interfaces",{"_index":62,"title":{},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUser.html":{},"interfaces/TUser.html":{},"interfaces/UserPaylod.html":{},"overview.html":{}}}],["iuser",{"_index":71,"title":{"interfaces/IUser.html":{}},"body":{"interfaces/IUser.html":{},"coverage.html":{}}}],["join",{"_index":248,"title":{},"body":{"index.html":{}}}],["kamil",{"_index":256,"title":{},"body":{"index.html":{}}}],["libs",{"_index":21,"title":{},"body":{"modules/AppModule.html":{}}}],["license",{"_index":262,"title":{},"body":{"index.html":{}}}],["licensed",{"_index":238,"title":{},"body":{"index.html":{}}}],["matching",{"_index":28,"title":{},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUser.html":{},"interfaces/TUser.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"index.html":{},"modules.html":{},"overview.html":{},"miscellaneous/variables.html":{}}}],["metadata",{"_index":187,"title":{},"body":{"dependencies.html":{}}}],["methods",{"_index":31,"title":{},"body":{"modules/DatabaseModule.html":{},"classes/UserCreator.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{}}}],["miscellaneous",{"_index":194,"title":{"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}},"body":{"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["mit",{"_index":237,"title":{},"body":{"index.html":{}}}],["mode",{"_index":227,"title":{},"body":{"index.html":{}}}],["module",{"_index":0,"title":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"modules/UsersModule.html":{}},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"modules/UsersModule.html":{},"coverage.html":{}}}],["modules",{"_index":2,"title":{"modules.html":{}},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"modules/UsersModule.html":{},"modules.html":{},"overview.html":{}}}],["more",{"_index":251,"title":{},"body":{"index.html":{}}}],["myśliwiec",{"_index":257,"title":{},"body":{"index.html":{}}}],["name",{"_index":41,"title":{},"body":{"modules/DatabaseModule.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{},"miscellaneous/variables.html":{}}}],["namespace",{"_index":84,"title":{},"body":{"interfaces/IUser.html":{},"interfaces/TUser.html":{}}}],["nest",{"_index":216,"title":{},"body":{"index.html":{}}}],["nestframework",{"_index":261,"title":{},"body":{"index.html":{}}}],["nestjs/common",{"_index":18,"title":{},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{},"dependencies.html":{}}}],["nestjs/core",{"_index":177,"title":{},"body":{"dependencies.html":{}}}],["nestjs/platform",{"_index":178,"title":{},"body":{"dependencies.html":{}}}],["nestjs/typeorm",{"_index":180,"title":{},"body":{"dependencies.html":{}}}],["new",{"_index":142,"title":{},"body":{"injectables/UsersService.html":{},"coverage.html":{}}}],["node.js",{"_index":205,"title":{},"body":{"index.html":{}}}],["npm",{"_index":220,"title":{},"body":{"index.html":{}}}],["number",{"_index":80,"title":{},"body":{"interfaces/IUser.html":{},"interfaces/TUser.html":{},"classes/User.html":{},"injectables/UsersService.html":{}}}],["number(process.env.database_port",{"_index":283,"title":{},"body":{"miscellaneous/variables.html":{}}}],["object",{"_index":277,"title":{},"body":{"miscellaneous/variables.html":{}}}],["open",{"_index":239,"title":{},"body":{"index.html":{}}}],["optional",{"_index":43,"title":{},"body":{"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"classes/UserCreator.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{}}}],["options",{"_index":44,"title":{},"body":{"modules/DatabaseModule.html":{},"modules/UsersModule.html":{}}}],["out",{"_index":11,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["overview",{"_index":268,"title":{"overview.html":{}},"body":{"overview.html":{}}}],["package",{"_index":175,"title":{"dependencies.html":{}},"body":{}}],["parameters",{"_index":40,"title":{},"body":{"modules/DatabaseModule.html":{},"classes/UserCreator.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{},"miscellaneous/variables.html":{}}}],["params.interfaces.ts",{"_index":64,"title":{},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"coverage.html":{}}}],["partial",{"_index":35,"title":{},"body":{"modules/DatabaseModule.html":{}}}],["password",{"_index":75,"title":{},"body":{"interfaces/IUser.html":{},"interfaces/TUser.html":{},"miscellaneous/variables.html":{}}}],["passwordsalt",{"_index":76,"title":{},"body":{"interfaces/IUser.html":{},"interfaces/TUser.html":{}}}],["payload",{"_index":107,"title":{},"body":{"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{}}}],["paylod",{"_index":121,"title":{},"body":{"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{}}}],["phonenumber",{"_index":77,"title":{},"body":{"interfaces/IUser.html":{},"interfaces/TUser.html":{}}}],["please",{"_index":249,"title":{},"body":{"index.html":{}}}],["port",{"_index":282,"title":{},"body":{"miscellaneous/variables.html":{}}}],["postgres",{"_index":184,"title":{},"body":{"dependencies.html":{},"miscellaneous/variables.html":{}}}],["primarygeneratedcolumn",{"_index":99,"title":{},"body":{"classes/User.html":{}}}],["private",{"_index":106,"title":{},"body":{"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{}}}],["process.env.database_db",{"_index":288,"title":{},"body":{"miscellaneous/variables.html":{}}}],["process.env.database_host",{"_index":281,"title":{},"body":{"miscellaneous/variables.html":{}}}],["process.env.database_pass",{"_index":286,"title":{},"body":{"miscellaneous/variables.html":{}}}],["process.env.database_type",{"_index":279,"title":{},"body":{"miscellaneous/variables.html":{}}}],["process.env.database_user",{"_index":285,"title":{},"body":{"miscellaneous/variables.html":{}}}],["production",{"_index":229,"title":{},"body":{"index.html":{}}}],["progressive",{"_index":204,"title":{},"body":{"index.html":{}}}],["project",{"_index":240,"title":{},"body":{"index.html":{}}}],["promise",{"_index":70,"title":{},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"injectables/UsersService.html":{}}}],["properties",{"_index":66,"title":{},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUser.html":{},"interfaces/TUser.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{}}}],["provide",{"_index":55,"title":{},"body":{"modules/DatabaseModule.html":{},"miscellaneous/variables.html":{}}}],["providers",{"_index":54,"title":{},"body":{"modules/DatabaseModule.html":{},"modules/UsersModule.html":{}}}],["public",{"_index":109,"title":{},"body":{"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"injectables/UsersService.html":{}}}],["read",{"_index":250,"title":{},"body":{"index.html":{}}}],["reflect",{"_index":186,"title":{},"body":{"dependencies.html":{}}}],["repository",{"_index":115,"title":{},"body":{"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"index.html":{}}}],["repository.helper.ts",{"_index":168,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["reset",{"_index":10,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["result",{"_index":27,"title":{},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUser.html":{},"interfaces/TUser.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"index.html":{},"modules.html":{},"overview.html":{},"miscellaneous/variables.html":{}}}],["results",{"_index":29,"title":{},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUser.html":{},"interfaces/TUser.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"index.html":{},"modules.html":{},"overview.html":{},"miscellaneous/variables.html":{}}}],["return",{"_index":52,"title":{},"body":{"modules/DatabaseModule.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{},"miscellaneous/variables.html":{}}}],["returns",{"_index":45,"title":{},"body":{"modules/DatabaseModule.html":{},"classes/UserCreator.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{}}}],["rimraf",{"_index":189,"title":{},"body":{"dependencies.html":{}}}],["role",{"_index":78,"title":{},"body":{"interfaces/IUser.html":{},"interfaces/TUser.html":{},"miscellaneous/enumerations.html":{}}}],["role.admin",{"_index":81,"title":{},"body":{"interfaces/IUser.html":{},"interfaces/TUser.html":{}}}],["role.user",{"_index":82,"title":{},"body":{"interfaces/IUser.html":{},"interfaces/TUser.html":{}}}],["run",{"_index":224,"title":{},"body":{"index.html":{}}}],["rxjs",{"_index":191,"title":{},"body":{"dependencies.html":{}}}],["save",{"_index":110,"title":{},"body":{"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{}}}],["scalable",{"_index":209,"title":{},"body":{"index.html":{}}}],["server",{"_index":210,"title":{},"body":{"index.html":{}}}],["services/users.service",{"_index":131,"title":{},"body":{"modules/UsersModule.html":{}}}],["setdata",{"_index":111,"title":{},"body":{"classes/UserCreator.html":{}}}],["setdata(paylod",{"_index":119,"title":{},"body":{"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{}}}],["setrepository",{"_index":112,"title":{},"body":{"classes/UserCreator.html":{}}}],["setrepository(repository",{"_index":122,"title":{},"body":{"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{}}}],["side",{"_index":211,"title":{},"body":{"index.html":{}}}],["source",{"_index":13,"title":{},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUser.html":{},"interfaces/TUser.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{},"index.html":{}}}],["sponsors",{"_index":243,"title":{},"body":{"index.html":{}}}],["src/.../app.module.ts",{"_index":276,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../get",{"_index":275,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../index.ts",{"_index":274,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../main.ts",{"_index":201,"title":{},"body":{"miscellaneous/functions.html":{}}}],["src/.../role.enum.ts",{"_index":196,"title":{},"body":{"miscellaneous/enumerations.html":{}}}],["src/.../users.namespace.ts",{"_index":197,"title":{},"body":{"miscellaneous/enumerations.html":{}}}],["src/app.module.ts",{"_index":15,"title":{},"body":{"modules/AppModule.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/config/index.ts",{"_index":154,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/core/enums",{"_index":83,"title":{},"body":{"interfaces/IUser.html":{}}}],["src/core/enums/role.enum.ts",{"_index":198,"title":{},"body":{"miscellaneous/enumerations.html":{}}}],["src/core/interfaces/entities/user.interface.ts",{"_index":72,"title":{},"body":{"interfaces/IUser.html":{},"coverage.html":{}}}],["src/core/namespaces/users.namespace.ts",{"_index":87,"title":{},"body":{"interfaces/TUser.html":{},"coverage.html":{},"miscellaneous/enumerations.html":{}}}],["src/domain/users/classes/user",{"_index":104,"title":{},"body":{"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"coverage.html":{}}}],["src/domain/users/entities/index.ts",{"_index":162,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/domain/users/entities/user.entity.ts",{"_index":95,"title":{},"body":{"classes/User.html":{},"coverage.html":{}}}],["src/domain/users/entities/user.entity.ts:6",{"_index":100,"title":{},"body":{"classes/User.html":{}}}],["src/domain/users/services/users.service.ts",{"_index":136,"title":{},"body":{"injectables/UsersService.html":{},"coverage.html":{}}}],["src/domain/users/services/users.service.ts:11",{"_index":139,"title":{},"body":{"injectables/UsersService.html":{}}}],["src/domain/users/users.module",{"_index":48,"title":{},"body":{"modules/DatabaseModule.html":{}}}],["src/domain/users/users.module.ts",{"_index":126,"title":{},"body":{"modules/UsersModule.html":{}}}],["src/domain/users/users.module.ts:17",{"_index":128,"title":{},"body":{"modules/UsersModule.html":{}}}],["src/domain/users/users.module.ts:8",{"_index":129,"title":{},"body":{"modules/UsersModule.html":{}}}],["src/libs/database/database.module.ts",{"_index":30,"title":{},"body":{"modules/DatabaseModule.html":{}}}],["src/libs/database/database.module.ts:8",{"_index":39,"title":{},"body":{"modules/DatabaseModule.html":{}}}],["src/libs/database/helpers/get",{"_index":167,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/libs/database/interfaces/database",{"_index":63,"title":{},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"coverage.html":{}}}],["src/main.ts",{"_index":171,"title":{},"body":{"coverage.html":{},"miscellaneous/functions.html":{}}}],["start",{"_index":225,"title":{},"body":{"index.html":{}}}],["start:dev",{"_index":228,"title":{},"body":{"index.html":{}}}],["start:prodtest",{"_index":230,"title":{},"body":{"index.html":{}}}],["started",{"_index":203,"title":{"index.html":{}},"body":{}}],["starter",{"_index":218,"title":{},"body":{"index.html":{}}}],["statements",{"_index":150,"title":{},"body":{"coverage.html":{}}}],["static",{"_index":32,"title":{},"body":{"modules/DatabaseModule.html":{},"modules/UsersModule.html":{}}}],["stay",{"_index":253,"title":{},"body":{"index.html":{}}}],["string",{"_index":79,"title":{},"body":{"interfaces/IUser.html":{},"interfaces/TUser.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{}}}],["support",{"_index":244,"title":{},"body":{"index.html":{},"modules.html":{}}}],["svg",{"_index":264,"title":{},"body":{"modules.html":{}}}],["synchronize",{"_index":289,"title":{},"body":{"miscellaneous/variables.html":{}}}],["table",{"_index":174,"title":{},"body":{"coverage.html":{}}}],["tablesort(document.getelementbyid('coverage",{"_index":173,"title":{},"body":{"coverage.html":{}}}],["test",{"_index":233,"title":{},"body":{"index.html":{}}}],["test:covsupport",{"_index":236,"title":{},"body":{"index.html":{}}}],["test:e2e",{"_index":235,"title":{},"body":{"index.html":{}}}],["tests",{"_index":232,"title":{},"body":{"index.html":{}}}],["thanks",{"_index":242,"title":{},"body":{"index.html":{}}}],["this.payload",{"_index":124,"title":{},"body":{"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{}}}],["this.userrepository",{"_index":125,"title":{},"body":{"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{}}}],["touch",{"_index":254,"title":{},"body":{"index.html":{}}}],["trole",{"_index":89,"title":{},"body":{"interfaces/TUser.html":{},"miscellaneous/enumerations.html":{}}}],["true",{"_index":290,"title":{},"body":{"miscellaneous/variables.html":{}}}],["tuser",{"_index":86,"title":{"interfaces/TUser.html":{}},"body":{"interfaces/TUser.html":{},"coverage.html":{}}}],["twitter",{"_index":260,"title":{},"body":{"index.html":{}}}],["type",{"_index":42,"title":{},"body":{"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUser.html":{},"interfaces/TUser.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"modules/UsersModule.html":{},"injectables/UsersService.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["typeorm",{"_index":51,"title":{},"body":{"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"dependencies.html":{}}}],["typescript",{"_index":217,"title":{},"body":{"index.html":{}}}],["u",{"_index":93,"title":{},"body":{"interfaces/TUser.html":{},"miscellaneous/enumerations.html":{}}}],["unit",{"_index":231,"title":{},"body":{"index.html":{}}}],["unknown",{"_index":118,"title":{},"body":{"classes/UserCreator.html":{}}}],["usefactory",{"_index":57,"title":{},"body":{"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"miscellaneous/variables.html":{}}}],["user",{"_index":92,"title":{"classes/User.html":{}},"body":{"interfaces/TUser.html":{},"classes/User.html":{},"injectables/UsersService.html":{},"coverage.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/variables.html":{}}}],["usercreator",{"_index":103,"title":{"classes/UserCreator.html":{}},"body":{"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"injectables/UsersService.html":{},"coverage.html":{}}}],["usercreator.save",{"_index":146,"title":{},"body":{"injectables/UsersService.html":{}}}],["usercreator.setdata",{"_index":143,"title":{},"body":{"injectables/UsersService.html":{}}}],["username",{"_index":284,"title":{},"body":{"miscellaneous/variables.html":{}}}],["userpaylod",{"_index":113,"title":{"interfaces/UserPaylod.html":{}},"body":{"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{},"coverage.html":{}}}],["userrepository",{"_index":108,"title":{},"body":{"classes/UserCreator.html":{},"interfaces/UserPaylod.html":{}}}],["users",{"_index":85,"title":{},"body":{"interfaces/IUser.html":{},"interfaces/TUser.html":{}}}],["users_entities",{"_index":163,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["usersmodule",{"_index":8,"title":{"modules/UsersModule.html":{}},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"modules/UsersModule.html":{},"modules.html":{},"overview.html":{}}}],["usersmodule.forfeature",{"_index":53,"title":{},"body":{"modules/DatabaseModule.html":{}}}],["usersmodule.forroot('some",{"_index":23,"title":{},"body":{"modules/AppModule.html":{},"miscellaneous/variables.html":{}}}],["usersmodule.options",{"_index":132,"title":{},"body":{"modules/UsersModule.html":{}}}],["usersservice",{"_index":130,"title":{"injectables/UsersService.html":{}},"body":{"modules/UsersModule.html":{},"injectables/UsersService.html":{},"coverage.html":{}}}],["value",{"_index":199,"title":{},"body":{"miscellaneous/enumerations.html":{},"miscellaneous/variables.html":{}}}],["variable",{"_index":151,"title":{},"body":{"coverage.html":{}}}],["variables",{"_index":273,"title":{"miscellaneous/variables.html":{}},"body":{"miscellaneous/variables.html":{}}}],["vitalik",{"_index":144,"title":{},"body":{"injectables/UsersService.html":{}}}],["watch",{"_index":226,"title":{},"body":{"index.html":{}}}],["website",{"_index":258,"title":{},"body":{"index.html":{}}}],["you'd",{"_index":247,"title":{},"body":{"index.html":{}}}],["zoom",{"_index":9,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}]],"pipeline":["stemmer"]}, - "store": {"modules/AppModule.html":{"url":"modules/AppModule.html","title":"module - AppModule","body":"\n \n\n\n\n\n Modules\n AppModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\ndependencies\n\ncluster_AppModule\n\n\n\ncluster_AppModule_imports\n\n\n\n\nDatabaseModule\n\nDatabaseModule\n\n\n\nAppModule\n\nAppModule\n\nAppModule -->\n\nDatabaseModule->AppModule\n\n\n\n\n\nUsersModule\n\nUsersModule\n\nAppModule -->\n\nUsersModule->AppModule\n\n\n\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n src/app.module.ts\n \n\n\n\n\n\n \n \n \n Imports\n \n \n DatabaseModule\n \n \n UsersModule\n \n \n \n \n \n\n\n \n\n\n \n import { Module } from '@nestjs/common'\nimport { $config } from './config'\nimport { UsersModule } from './domain/users/users.module'\nimport { DatabaseModule } from './libs'\n\nconst imports = [\n\tUsersModule.forRoot('some'),\n\tDatabaseModule.forRoot(...$config.getDatabaseConfig()),\n]\n\n@Module({ imports })\nexport class AppModule {}\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules/DatabaseModule.html":{"url":"modules/DatabaseModule.html","title":"module - DatabaseModule","body":"\n \n\n\n\n\n Modules\n DatabaseModule\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n src/libs/database/database.module.ts\n \n\n\n\n\n\n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n \n \n Static\n forRoot\n \n \n \n \n \n \n \n forRoot(options: Partial, entities: EntitySchema[])\n \n \n\n\n \n \n Defined in src/libs/database/database.module.ts:8\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n options\n \n Partial\n \n\n \n No\n \n\n\n \n \n entities\n \n EntitySchema[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : DynamicModule\n\n \n \n \n \n \n \n \n \n\n \n\n\n \n import { DynamicModule, Global, Module } from '@nestjs/common';\nimport { UsersModule } from 'src/domain/users/users.module';\nimport { ConnectionOptions, createConnection, EntitySchema } from 'typeorm';\n\n@Global()\n@Module({})\nexport class DatabaseModule {\n static forRoot(\n options: Partial,\n entities: EntitySchema[],\n ): DynamicModule {\n return {\n module: DatabaseModule,\n imports: [UsersModule.forFeature()],\n providers: [\n {\n provide: 'DATABASE_CONNECTION',\n useFactory: async () => {\n return await createConnection({\n ...options,\n entities,\n } as ConnectionOptions);\n },\n },\n ],\n };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/IDatabaseAsyncModuleParams.html":{"url":"interfaces/IDatabaseAsyncModuleParams.html","title":"interface - IDatabaseAsyncModuleParams","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n IDatabaseAsyncModuleParams\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/libs/database/interfaces/database-module-params.interfaces.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n \n imports\n \n \n \n \n inject\n \n \n \n \n useFactory\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n imports\n \n \n \n \n \n \n \n \n imports: any[]\n\n \n \n\n\n \n \n Type : any[]\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n inject\n \n \n \n \n \n \n \n \n inject: any[]\n\n \n \n\n\n \n \n Type : any[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n useFactory\n \n \n \n \n \n \n \n \n useFactory: function\n\n \n \n\n\n \n \n Type : function\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { ConnectionOptions } from 'typeorm';\n\nexport interface IDatabaseAsyncModuleParams {\n imports?: any[];\n useFactory: (...args: any[]) => Promise>;\n inject: any[];\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/IUser.html":{"url":"interfaces/IUser.html","title":"interface - IUser","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n IUser\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/core/interfaces/entities/user.interface.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n email\n \n \n \n \n id\n \n \n \n \n password\n \n \n \n \n passwordSalt\n \n \n \n \n phoneNumber\n \n \n \n \n role\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n email\n \n \n \n \n \n \n \n \n email: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Почта користувача\n\n \n \n \n \n \n \n \n \n \n id\n \n \n \n \n \n \n \n \n id: number\n\n \n \n\n\n \n \n Type : number\n\n \n \n\n\n\n\n\n \n \n Ідентифікатор користувача\n\n \n \n \n \n \n \n \n \n \n password\n \n \n \n \n \n \n \n \n password: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Пароль в зашифрованому вигляді\n\n \n \n \n \n \n \n \n \n \n passwordSalt\n \n \n \n \n \n \n \n \n passwordSalt: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Соль для шифрування паролю\n\n \n \n \n \n \n \n \n \n \n phoneNumber\n \n \n \n \n \n \n \n \n phoneNumber: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Робочий номер телефону по якому відбуваеться авторизація\n\n \n \n \n \n \n \n \n \n \n role\n \n \n \n \n \n \n \n \n role: Role\n\n \n \n\n\n \n \n Type : Role\n\n \n \n\n\n\n\n\n \n \n Роль користувача, можливі значення Role.Admin, Role.User\n\n \n \n \n \n \n \n\n\n \n import { Role } from 'src/core/enums'\n\n/**\n * Базовий інтерфейс користувача\n */\nexport namespace Users {\n\texport interface IUser {\n\t\t/**\n\t\t * Ідентифікатор користувача\n\t\t */\n\t\tid: number\n\n\t\t/**\n\t\t * Роль користувача, можливі значення Role.Admin, Role.User\n\t\t */\n\t\trole: Role\n\n\t\t/**\n\t\t * Почта користувача\n\t\t */\n\t\temail: string\n\n\t\t/**\n\t\t * Робочий номер телефону по якому відбуваеться авторизація\n\t\t */\n\t\tphoneNumber: string\n\n\t\t/**\n\t\t * Пароль в зашифрованому вигляді\n\t\t */\n\t\tpassword: string\n\n\t\t/**\n\t\t * Соль для шифрування паролю\n\t\t */\n\t\tpasswordSalt: string\n\t}\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/TUser.html":{"url":"interfaces/TUser.html","title":"interface - TUser","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n TUser\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/core/namespaces/users.namespace.ts\n \n\n\n \n Description\n \n \n Базовий інтерфейс користувача\n\n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n email\n \n \n \n \n id\n \n \n \n \n password\n \n \n \n \n passwordSalt\n \n \n \n \n phoneNumber\n \n \n \n \n role\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n email\n \n \n \n \n \n \n \n \n email: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Почта користувача\n\n \n \n \n \n \n \n \n \n \n id\n \n \n \n \n \n \n \n \n id: number\n\n \n \n\n\n \n \n Type : number\n\n \n \n\n\n\n\n\n \n \n Ідентифікатор користувача\n\n \n \n \n \n \n \n \n \n \n password\n \n \n \n \n \n \n \n \n password: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Пароль в зашифрованому вигляді\n\n \n \n \n \n \n \n \n \n \n passwordSalt\n \n \n \n \n \n \n \n \n passwordSalt: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Соль для шифрування паролю\n\n \n \n \n \n \n \n \n \n \n phoneNumber\n \n \n \n \n \n \n \n \n phoneNumber: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Робочий номер телефону по якому відбуваеться авторизація\n\n \n \n \n \n \n \n \n \n \n role\n \n \n \n \n \n \n \n \n role: TRole\n\n \n \n\n\n \n \n Type : TRole\n\n \n \n\n\n\n\n\n \n \n Роль користувача, можливі значення Role.Admin, Role.User\n\n \n \n \n \n \n \n\n\n \n export namespace Users {\n\t/**\n\t * Роль користувача\n\t */\n\texport enum TRole {\n\t\t/**\n\t\t * Адміністратор\n\t\t */\n\t\tAdmin = 'a',\n\n\t\t/**\n\t\t * Звичайни користувач\n\t\t */\n\t\tUser = 'u',\n\t}\n\n\t/**\n\t * Базовий інтерфейс користувача\n\t */\n\texport interface TUser {\n\t\t/**\n\t\t * Ідентифікатор користувача\n\t\t */\n\t\tid: number\n\n\t\t/**\n\t\t * Роль користувача, можливі значення Role.Admin, Role.User\n\t\t */\n\t\trole: TRole\n\n\t\t/**\n\t\t * Почта користувача\n\t\t */\n\t\temail: string\n\n\t\t/**\n\t\t * Робочий номер телефону по якому відбуваеться авторизація\n\t\t */\n\t\tphoneNumber: string\n\n\t\t/**\n\t\t * Пароль в зашифрованому вигляді\n\t\t */\n\t\tpassword: string\n\n\t\t/**\n\t\t * Соль для шифрування паролю\n\t\t */\n\t\tpasswordSalt: string\n\t}\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/User.html":{"url":"classes/User.html","title":"class - User","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n User\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/domain/users/entities/user.entity.ts\n \n\n\n\n \n Extends\n \n \n BaseEntity\n \n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n id\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n id\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Decorators : \n \n \n @PrimaryGeneratedColumn()\n \n \n \n \n \n Defined in src/domain/users/entities/user.entity.ts:6\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n import { BaseEntity, Entity, PrimaryGeneratedColumn } from 'typeorm'\n\n@Entity('users')\nexport class User extends BaseEntity {\n\t@PrimaryGeneratedColumn()\n\tid: number\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/UserCreator.html":{"url":"classes/UserCreator.html","title":"class - UserCreator","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n UserCreator\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/domain/users/classes/user-creator.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Private\n payload\n \n \n Private\n userRepository\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n Public\n Async\n save\n \n \n Public\n setData\n \n \n Public\n setRepository\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Private\n payload\n \n \n \n \n \n \n Type : UserPaylod\n\n \n \n \n \n Defined in src/domain/users/classes/user-creator.ts:10\n \n \n\n\n \n \n \n \n \n \n \n \n Private\n userRepository\n \n \n \n \n \n \n Type : Repository\n\n \n \n \n \n Defined in src/domain/users/classes/user-creator.ts:9\n \n \n\n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Public\n Async\n save\n \n \n \n \n \n \n \n save()\n \n \n\n\n \n \n Defined in src/domain/users/classes/user-creator.ts:21\n \n \n\n\n \n \n\n \n Returns : unknown\n\n \n \n \n \n \n \n \n \n \n \n \n Public\n setData\n \n \n \n \n \n \n \n setData(paylod: UserPaylod)\n \n \n\n\n \n \n Defined in src/domain/users/classes/user-creator.ts:12\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n paylod\n \n UserPaylod\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : this\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Public\n setRepository\n \n \n \n \n \n \n \n setRepository(repository: Repository)\n \n \n\n\n \n \n Defined in src/domain/users/classes/user-creator.ts:16\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n repository\n \n Repository\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : this\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { Repository } from 'typeorm'\n\ninterface UserPaylod {\n\tname: string\n\temail: string\n}\n\nexport class UserCreator {\n\tprivate userRepository: Repository\n\tprivate payload: UserPaylod\n\n\tpublic setData(paylod: UserPaylod) {\n\t\tthis.payload = paylod\n\t\treturn this\n\t}\n\tpublic setRepository(repository: Repository) {\n\t\tthis.userRepository = repository\n\t\treturn this\n\t}\n\n\tpublic async save() {\n\t\treturn this.payload\n\t}\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/UserPaylod.html":{"url":"interfaces/UserPaylod.html","title":"interface - UserPaylod","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n UserPaylod\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/domain/users/classes/user-creator.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n email\n \n \n \n \n name\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n email\n \n \n \n \n \n \n \n \n email: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n name\n \n \n \n \n \n \n \n \n name: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Repository } from 'typeorm'\n\ninterface UserPaylod {\n\tname: string\n\temail: string\n}\n\nexport class UserCreator {\n\tprivate userRepository: Repository\n\tprivate payload: UserPaylod\n\n\tpublic setData(paylod: UserPaylod) {\n\t\tthis.payload = paylod\n\t\treturn this\n\t}\n\tpublic setRepository(repository: Repository) {\n\t\tthis.userRepository = repository\n\t\treturn this\n\t}\n\n\tpublic async save() {\n\t\treturn this.payload\n\t}\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules/UsersModule.html":{"url":"modules/UsersModule.html","title":"module - UsersModule","body":"\n \n\n\n\n\n Modules\n UsersModule\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n src/domain/users/users.module.ts\n \n\n\n\n\n\n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n \n \n Static\n forFeature\n \n \n \n \n \n \n \n forFeature()\n \n \n\n\n \n \n Defined in src/domain/users/users.module.ts:17\n \n \n\n\n \n \n\n \n Returns : DynamicModule\n\n \n \n \n \n \n \n \n \n \n \n \n Static\n forRoot\n \n \n \n \n \n \n \n forRoot(options: any)\n \n \n\n\n \n \n Defined in src/domain/users/users.module.ts:8\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n options\n \n any\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : DynamicModule\n\n \n \n \n \n \n \n \n \n\n \n\n\n \n import { DynamicModule, Module } from '@nestjs/common'\nimport { UsersService } from './services/users.service'\n\n@Module({})\nexport class UsersModule {\n\tstatic options: any\n\n\tstatic forRoot(options: any): DynamicModule {\n\t\tUsersModule.options = options\n\n\t\treturn {\n\t\t\tmodule: UsersModule,\n\t\t\tproviders: [UsersService],\n\t\t}\n\t}\n\n\tstatic forFeature(): DynamicModule {\n\t\tconsole.log(UsersModule.options)\n\t\treturn {\n\t\t\tmodule: UsersModule,\n\t\t\tproviders: [UsersService],\n\t\t}\n\t}\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/UsersService.html":{"url":"injectables/UsersService.html","title":"injectable - UsersService","body":"\n \n\n\n\n\n\n\n\n\n Injectables\n UsersService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/domain/users/services/users.service.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Public\n Async\n getUser\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Public\n Async\n getUser\n \n \n \n \n \n \n \n getUser(id: number)\n \n \n\n\n \n \n Defined in src/domain/users/services/users.service.ts:11\n \n \n\n\n \n \n Метод для отримання користувача по його ідентифікатору\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n id\n \n number\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n Обект користувача\n\n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@nestjs/common'\nimport { UserCreator } from '../classes/user-creator'\n\n@Injectable()\nexport class UsersService {\n\t/**\n\t * Метод для отримання користувача по його ідентифікатору\n\t * @id Ідентифікатор користувача\n\t * @returns Обект користувача\n\t */\n\tpublic async getUser(id: number): Promise {\n\t\tconst userCreator = new UserCreator()\n\n\t\tuserCreator.setData({\n\t\t\tname: 'Vitalik',\n\t\t\temail: 'ebas@mail.ru',\n\t\t})\n\n\t\tconst user = await userCreator.save()\n\n\t\treturn user\n\t}\n}\n\n \n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"coverage.html":{"url":"coverage.html","title":"coverage - coverage","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n Documentation coverage\n\n\n\n \n\n\n\n \n \n File\n Type\n Identifier\n Statements\n \n \n \n \n \n \n src/app.module.ts\n \n variable\n imports\n \n 0 %\n (0/1)\n \n \n \n \n \n src/config/index.ts\n \n variable\n $config\n \n 0 %\n (0/1)\n \n \n \n \n \n src/config/index.ts\n \n variable\n getDatabaseConfig\n \n 0 %\n (0/1)\n \n \n \n \n \n src/core/interfaces/entities/user.interface.ts\n \n interface\n IUser\n \n 85 %\n (6/7)\n \n \n \n \n \n src/core/namespaces/users.namespace.ts\n \n interface\n TUser\n \n 100 %\n (7/7)\n \n \n \n \n \n src/domain/users/classes/user-creator.ts\n \n class\n UserCreator\n \n 0 %\n (0/6)\n \n \n \n \n \n src/domain/users/classes/user-creator.ts\n \n interface\n UserPaylod\n \n 0 %\n (0/3)\n \n \n \n \n \n src/domain/users/entities/index.ts\n \n variable\n USERS_ENTITIES\n \n 0 %\n (0/1)\n \n \n \n \n \n src/domain/users/entities/user.entity.ts\n \n class\n User\n \n 0 %\n (0/2)\n \n \n \n \n \n src/domain/users/services/users.service.ts\n \n injectable\n UsersService\n \n 50 %\n (1/2)\n \n \n \n \n \n src/libs/database/helpers/get-repository.helper.ts\n \n variable\n getRepositoryHelper\n \n 0 %\n (0/1)\n \n \n \n \n \n src/libs/database/interfaces/database-module-params.interfaces.ts\n \n interface\n IDatabaseAsyncModuleParams\n \n 0 %\n (0/4)\n \n \n \n \n \n src/main.ts\n \n function\n bootstrap\n \n 0 %\n (0/1)\n \n \n \n\n\n\n\n\n new Tablesort(document.getElementById('coverage-table'));\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"dependencies.html":{"url":"dependencies.html","title":"package-dependencies - dependencies","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n Dependencies\n \n \n \n @nestjs/common : ^7.0.0\n \n @nestjs/core : ^7.0.0\n \n @nestjs/platform-express : ^7.0.0\n \n @nestjs/typeorm : ^8.0.1\n \n dotenv : ^10.0.0\n \n postgres : ^1.0.2\n \n reflect-metadata : ^0.1.13\n \n rimraf : ^3.0.2\n \n rxjs : ^6.5.4\n \n typeorm : ^0.2.36\n \n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/enumerations.html":{"url":"miscellaneous/enumerations.html","title":"miscellaneous-enumerations - enumerations","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n Miscellaneous\n Enumerations\n\n\n\n Index\n \n \n \n \n \n \n Role   (src/.../role.enum.ts)\n \n \n TRole   (src/.../users.namespace.ts)\n \n \n \n \n \n \n\n\n src/core/enums/role.enum.ts\n \n \n \n \n \n \n Role\n \n \n \n \n Роль користувача\n\n \n \n \n \n  Admin\n \n \n \n \n Value : a\n \n \n \n \n  User\n \n \n \n \n Value : u\n \n \n \n \n\n src/core/namespaces/users.namespace.ts\n \n \n \n \n \n \n TRole\n \n \n \n \n Роль користувача\n\n \n \n \n \n  Admin\n \n \n \n \n Value : a\n \n \n \n \n  User\n \n \n \n \n Value : u\n \n \n \n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/functions.html":{"url":"miscellaneous/functions.html","title":"miscellaneous-functions - functions","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n Miscellaneous\n Functions\n\n\n\n Index\n \n \n \n \n \n \n bootstrap   (src/.../main.ts)\n \n \n \n \n \n \n\n\n src/main.ts\n \n \n \n \n \n \n \n bootstrap\n \n \n \n \n \n \nbootstrap()\n \n \n\n\n\n\n \n \n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"index.html":{"url":"index.html","title":"getting-started - index","body":"\n \n\n\n \n\n\n A progressive Node.js framework for building efficient and scalable server-side applications, heavily inspired by Angular.\n \n\n\n\n\n\n\n\n\n\n \n \n\n \n\nDescription\nNest framework TypeScript starter repository.\nInstallation\n$ npm installRunning the app\n# development\n$ npm run start\n\n# watch mode\n$ npm run start:dev\n\n# production mode\n$ npm run start:prodTest\n# unit tests\n$ npm run test\n\n# e2e tests\n$ npm run test:e2e\n\n# test coverage\n$ npm run test:covSupport\nNest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.\nStay in touch\n\nAuthor - Kamil Myśliwiec\nWebsite - https://nestjs.com\nTwitter - @nestframework\n\nLicense\n Nest is MIT licensed.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules.html":{"url":"modules.html","title":"modules - modules","body":"\n \n\n\n\n\n Modules\n\n\n \n \n \n \n AppModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n DatabaseModule\n \n \n \n No graph available.\n \n \n Browse\n \n \n \n \n \n \n \n UsersModule\n \n \n \n No graph available.\n \n \n Browse\n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"overview.html":{"url":"overview.html","title":"overview - overview","body":"\n \n\n\n\n Overview\n\n \n\n \n \n\n\n\n\n\ndependencies\n\ndependencies\n\ncluster_AppModule\n\n\n\ncluster_AppModule_imports\n\n\n\n\nDatabaseModule\n\nDatabaseModule\n\n\n\nAppModule\n\nAppModule\n\nAppModule -->\n\nDatabaseModule->AppModule\n\n\n\n\n\nUsersModule\n\nUsersModule\n\nAppModule -->\n\nUsersModule->AppModule\n\n\n\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n \n\n \n \n \n \n \n \n 3 Modules\n \n \n \n \n \n \n \n \n 1 Injectable\n \n \n \n \n \n \n \n 2 Classes\n \n \n \n \n \n \n \n 4 Interfaces\n \n \n \n \n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/variables.html":{"url":"miscellaneous/variables.html","title":"miscellaneous-variables - variables","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n Miscellaneous\n Variables\n\n\n\n Index\n \n \n \n \n \n \n $config   (src/.../index.ts)\n \n \n getDatabaseConfig   (src/.../index.ts)\n \n \n getRepositoryHelper   (src/.../get-repository.helper.ts)\n \n \n imports   (src/.../app.module.ts)\n \n \n USERS_ENTITIES   (src/.../index.ts)\n \n \n \n \n \n \n\n\n src/config/index.ts\n \n \n \n \n \n \n \n $config\n \n \n \n \n \n \n Type : object\n\n \n \n \n \n Default value : {\n getDatabaseConfig,\n}\n \n \n\n\n \n \n \n \n \n \n \n \n getDatabaseConfig\n \n \n \n \n \n \n Default value : (): Parameters => {\n return [\n {\n type: process.env.DATABASE_TYPE as 'postgres',\n host: process.env.DATABASE_HOST,\n port: Number(process.env.DATABASE_PORT),\n username: process.env.DATABASE_USER,\n password: process.env.DATABASE_PASS,\n database: process.env.DATABASE_DB,\n synchronize: true,\n },\n [],\n ];\n}\n \n \n\n\n \n \n\n src/libs/database/helpers/get-repository.helper.ts\n \n \n \n \n \n \n \n getRepositoryHelper\n \n \n \n \n \n \n Default value : (name, entity) => {\n\treturn {\n\t\tprovide: name,\n\t\tuseFactory: (connection: Connection) => connection.getRepository(entity),\n\t\tinject: ['DATABASE_CONNECTION'],\n\t}\n}\n \n \n\n\n \n \n\n src/app.module.ts\n \n \n \n \n \n \n \n imports\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : [\n\tUsersModule.forRoot('some'),\n\tDatabaseModule.forRoot(...$config.getDatabaseConfig()),\n]\n \n \n\n\n \n \n\n src/domain/users/entities/index.ts\n \n \n \n \n \n \n \n USERS_ENTITIES\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : [User]\n \n \n\n\n \n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"}} + "index": {"version":"2.3.9","fields":["title","body"],"fieldVectors":[["title/modules/AppModule.html",[0,0.965,1,1.744]],["body/modules/AppModule.html",[0,1.443,1,3.338,2,1.574,3,2.607,4,2.726,5,2.726,6,2.782,7,0.044,8,2.782,9,3.522,10,2.726,11,2.726,12,0.381,13,0.452,14,0.452,15,2.32,16,2.542,17,1.75,18,1.574,19,2.998,20,3.341,21,3.341,22,2.32,23,3.341,24,2.017,25,2.726,26,2.726,27,2.32,28,2.726,29,0.527,30,0.607,31,0.025,32,0.033,33,0.025]],["title/classes/CustomExeption.html",[30,0.525,34,1.744]],["body/classes/CustomExeption.html",[7,0.041,12,0.472,13,0.56,14,0.56,29,0.653,30,0.753,31,0.031,32,0.037,33,0.031,34,2.978,35,2.201,36,3.378,37,0.56,38,1.471,39,4.298,40,1.384,41,4.141,42,2.876]],["title/modules/DatabaseModule.html",[0,0.965,6,1.535]],["body/modules/DatabaseModule.html",[0,1.572,2,1.519,6,2.498,7,0.045,12,0.367,13,0.436,14,0.436,16,1.713,17,1.41,18,1.519,29,0.508,30,0.586,31,0.024,32,0.032,33,0.024,40,1.078,43,3.224,44,1.519,45,3.441,46,2.63,47,3.441,48,4.702,49,4.069,50,4.987,51,3.224,52,1.353,53,1.353,54,0.586,55,1.353,56,3.441,57,1.078,58,3.835,59,4.218,60,3.441,61,4.218,62,1.519,63,1.987,64,2.63,65,2.239,66,3.224,67,2.239,68,1.946,69,2.239]],["title/interfaces/IDatabaseAsyncModuleParams.html",[70,0.599,71,2.006]],["body/interfaces/IDatabaseAsyncModuleParams.html",[0,1.239,7,0.044,12,0.422,13,0.501,14,0.501,16,2.791,17,1.239,29,0.584,31,0.028,32,0.035,33,0.028,37,0.501,38,1.375,54,0.912,55,1.934,60,3.023,62,1.746,67,3.647,70,0.769,71,3.202,72,1.387,73,3.023,74,3.023,75,3.647,76,3.761,77,3.706,78,1.746]],["title/interfaces/IUsersService.html",[70,0.599,79,1.361]],["body/interfaces/IUsersService.html",[7,0.046,12,0.35,13,0.278,14,0.278,29,0.724,31,0.016,32,0.023,33,0.016,37,0.278,40,0.687,44,1.448,52,0.862,53,0.862,54,0.373,55,0.862,57,1.027,70,0.848,72,0.769,78,1.448,79,1.448,80,0.968,81,2.507,82,1.633,83,2.062,84,2.054,85,1.24,86,1.448,87,1.735,88,1.24,89,0.862,90,1.24,91,2.062,92,1.091,93,0.545,94,1.091,95,0.968,96,0.968,97,1.24,98,1.24,99,1.448,100,2.096,101,1.151,102,1.151,103,0.968,104,1.091,105,1.855,106,1.855,107,1.855,108,1.855,109,1.855,110,1.855,111,1.855,112,1.855,113,1.24,114,1.24,115,1.24]],["title/interfaces/Info.html",[12,0.329,70,0.599]],["body/interfaces/Info.html",[7,0.046,12,0.383,13,0.24,14,0.24,29,0.684,31,0.013,32,0.021,33,0.013,37,0.24,38,0.819,54,0.891,57,0.592,70,0.786,72,0.663,78,0.835,79,0.835,80,0.835,82,0.942,83,1.584,85,1.07,86,0.835,87,1.294,88,1.07,89,0.743,90,1.07,91,1.931,92,0.942,93,0.47,94,0.942,95,0.835,96,0.835,97,1.07,98,1.07,99,1.294,100,2.152,101,1.028,102,1.028,103,0.835,104,2.013,105,2.474,106,2.474,107,2.474,108,2.474,109,2.474,110,2.474,111,2.474,112,2.287,113,2.287,114,2.287,115,1.07]],["title/interfaces/SaveUserPaylod.html",[70,0.599,83,1.361]],["body/interfaces/SaveUserPaylod.html",[7,0.046,12,0.324,13,0.25,14,0.25,29,0.696,31,0.014,32,0.022,33,0.014,37,0.25,38,0.847,54,0.917,57,0.619,70,0.804,72,0.693,78,0.872,79,0.872,80,0.872,82,0.984,83,1.826,86,0.872,87,1.338,88,1.118,89,0.776,90,1.118,91,2.337,92,0.984,93,0.491,94,0.984,95,0.872,96,0.872,97,1.118,98,1.118,99,1.97,100,2.16,101,1.565,102,1.565,103,0.872,104,0.984,105,2.524,106,2.524,107,2.524,108,2.524,109,2.524,110,2.524,111,2.524,112,2.34,113,1.118,114,1.118,115,1.118]],["title/classes/User.html",[30,0.525,93,0.766]],["body/classes/User.html",[7,0.044,12,0.283,13,0.335,14,0.335,17,1.179,29,0.391,30,0.451,31,0.019,32,0.027,33,0.019,35,1.319,37,0.335,38,1.052,40,1.64,42,3.105,54,0.979,62,1.169,87,1.934,89,1.041,91,1.934,93,0.936,96,1.662,99,1.934,100,1.932,101,1.537,102,1.537,103,1.934,116,2.025,117,2.878,118,4.003,119,4.723,120,5.16,121,5.324,122,5.525,123,4.471,124,2.482,125,4.105,126,2.482,127,4.471,128,2.482,129,2.482,130,2.482,131,3.528,132,3.528,133,2.45,134,2.025,135,2.482,136,1.724,137,4.908,138,2.025,139,2.482,140,2.482,141,2.482]],["title/classes/UserAlreadyExistException.html",[30,0.525,142,1.744]],["body/classes/UserAlreadyExistException.html",[7,0.042,12,0.455,13,0.54,14,0.54,17,1.336,29,0.63,30,0.726,31,0.03,32,0.037,33,0.03,34,3.255,35,2.124,37,0.54,38,1.44,39,3.939,40,1.336,142,2.916,143,3.26,144,4.829,145,3.997,146,3.997,147,3.997]],["title/classes/UserCreator.html",[30,0.525,148,2.006]],["body/classes/UserCreator.html",[7,0.044,12,0.2,13,0.237,14,0.237,17,1.117,24,1.06,29,0.277,30,0.319,31,0.013,32,0.021,33,0.013,35,0.933,37,0.237,38,0.813,40,1.664,44,1.284,52,1.812,53,1.812,54,0.869,55,1.812,57,1.506,62,0.827,63,1.775,68,2.888,69,2.321,86,2.195,89,0.736,99,1.575,101,1.411,102,0.657,103,0.827,136,1.219,142,1.646,148,1.893,149,4.125,150,1.432,151,4.451,152,3.342,153,3.342,154,3.768,155,3.322,156,3.768,157,2.726,158,2.726,159,2.726,160,2.726,161,2.726,162,1.755,163,2.726,164,4.309,165,2.726,166,3.395,167,1.755,168,1.755,169,1.755,170,1.755,171,1.432,172,2.726,173,1.755,174,3.768,175,1.755,176,2.726,177,1.755,178,2.726,179,1.755,180,2.726,181,1.755,182,2.726,183,1.755,184,1.219,185,1.755,186,1.755,187,2.726,188,3.342,189,1.755,190,1.755,191,1.755,192,1.755,193,1.755,194,1.755,195,1.755,196,2.726,197,1.893,198,1.755,199,1.755,200,1.755,201,1.755,202,1.755,203,1.755,204,1.755,205,1.755,206,3.342,207,1.755,208,1.755,209,1.755,210,1.755,211,1.755,212,1.755,213,1.755,214,1.755,215,1.755]],["title/interfaces/UserModel.html",[70,0.599,95,1.361]],["body/interfaces/UserModel.html",[7,0.046,12,0.327,13,0.253,14,0.253,29,0.699,31,0.014,32,0.022,33,0.014,37,0.253,38,0.855,54,0.806,57,0.626,70,0.809,72,0.701,78,0.883,79,0.883,80,0.883,82,0.996,83,1.64,85,1.131,86,0.883,87,1.98,88,1.131,89,0.786,90,1.131,91,2.345,92,0.996,93,0.497,94,0.996,95,1.351,96,1.64,97,1.731,98,1.731,99,1.98,100,2.124,101,1.574,102,1.574,103,1.838,104,0.996,105,1.731,106,1.731,107,1.731,108,1.731,109,1.731,110,1.731,111,1.731,112,1.731,113,1.131,114,1.131,115,1.131]],["title/modules/UsersModule.html",[0,0.965,8,1.535]],["body/modules/UsersModule.html",[0,1.569,2,1.307,7,0.045,8,2.494,12,0.316,13,0.375,14,0.375,17,1.7,18,1.307,29,0.438,30,0.504,31,0.021,32,0.029,33,0.021,40,1.457,44,1.307,45,4.249,46,2.264,47,3.112,49,2.264,52,1.164,53,1.164,54,0.504,55,1.164,56,3.556,57,1.457,58,4.014,63,2.054,64,2.264,65,2.649,72,1.039,93,1.012,216,2.775,217,4.359,218,2.775,219,2.971,220,2.775,221,4.359,222,2.775,223,1.927,224,2.775,225,2.632,226,1.927,227,2.264,228,2.303,229,2.775,230,3.815,231,3.815,232,2.775,233,2.775]],["title/interfaces/UsersModuleOptions.html",[70,0.599,219,1.744]],["body/interfaces/UsersModuleOptions.html",[0,1.354,7,0.042,12,0.461,13,0.547,14,0.547,27,3.76,29,0.639,31,0.031,32,0.037,33,0.031,37,0.547,38,1.451,54,0.736,70,0.84,72,1.516,100,1.954,219,2.939,234,3.304,235,3.304]],["title/injectables/UsersPasswordsService.html",[236,1.535,237,1.744]],["body/injectables/UsersPasswordsService.html",[7,0.045,12,0.226,13,0.268,14,0.268,17,1.441,18,0.934,24,1.807,29,0.313,30,0.36,31,0.015,32,0.023,33,0.015,37,0.268,38,0.892,40,1.515,44,1.41,52,1.512,53,1.512,54,0.783,55,1.512,57,1.342,62,0.934,63,2.031,68,2.924,69,2.993,75,1.377,78,2.031,93,0.794,96,1.698,100,2.115,102,1.614,104,1.59,118,1.618,133,1.377,151,4.242,155,3.363,166,1.377,225,1.197,227,1.618,236,1.59,237,1.807,238,1.377,239,3.838,240,1.618,241,3.605,242,3.605,243,3.605,244,2.993,245,4.016,246,2.993,247,2.993,248,2.993,249,4.532,250,4.016,251,1.983,252,1.983,253,2.993,254,1.983,255,2.993,256,2.993,257,1.983,258,2.993,259,1.983,260,1.377,261,2.993,262,1.983,263,1.983,264,1.983,265,2.442,266,1.983,267,2.993,268,1.983,269,2.993,270,2.993,271,1.983,272,1.983,273,1.983,274,1.983,275,1.983,276,1.983,277,1.983,278,1.983,279,1.983]],["title/injectables/UsersService.html",[228,1.744,236,1.535]],["body/injectables/UsersService.html",[7,0.045,12,0.361,13,0.428,14,0.428,17,1.394,18,1.493,29,0.5,30,0.576,31,0.024,32,0.032,33,0.024,37,0.428,40,1.059,44,1.965,52,1.329,53,1.329,54,0.576,55,1.329,57,1.394,63,1.493,68,2.815,81,3.402,82,2.216,86,1.965,87,1.493,89,1.329,117,2.585,136,2.2,155,3.237,164,3.803,171,2.585,228,2.518,236,2.216,238,2.2,280,2.585,281,3.168,282,3.168,283,3.168]],["title/coverage.html",[284,2.722]],["body/coverage.html",[0,1.177,7,0.044,12,0.282,14,0.335,15,1.719,16,1.315,19,1.719,22,1.719,30,0.812,31,0.019,32,0.027,33,0.019,34,1.495,36,2.019,54,0.45,70,1.018,71,1.719,73,2.019,74,2.019,76,2.019,79,1.166,80,2.104,83,1.166,93,0.657,95,1.166,116,2.019,142,1.495,143,2.019,148,1.719,149,2.019,150,2.019,184,1.719,197,1.719,219,1.495,223,1.719,225,1.495,226,1.719,228,1.495,234,2.019,235,2.019,236,1.871,237,1.495,239,2.019,240,2.019,280,2.019,284,1.719,285,2.475,286,2.475,287,2.475,288,5.436,289,5.702,290,5.482,291,2.873,292,2.019,293,4.099,294,3.522,295,2.475,296,3.522,297,3.522,298,3.522,299,2.475,300,3.344,301,2.019,302,2.019,303,2.019,304,3.522,305,2.019,306,2.019,307,2.873,308,2.873,309,2.019,310,2.475,311,2.019,312,2.019,313,2.019,314,2.019,315,2.019,316,2.019,317,2.475,318,2.475]],["title/dependencies.html",[3,2.094,319,2.423]],["body/dependencies.html",[3,2.256,7,0.044,18,1.76,31,0.028,32,0.035,33,0.028,62,1.76,101,1.399,265,3.048,320,5.037,321,3.736,322,3.736,323,3.736,324,3.736,325,3.736,326,3.736,327,3.736,328,3.736,329,3.736,330,3.736,331,3.736,332,3.736,333,3.736,334,3.736,335,3.736,336,3.736,337,3.736,338,3.736,339,3.736,340,3.736,341,3.736,342,3.736,343,3.736]],["title/miscellaneous/enumerations.html",[344,1.141,345,2.829]],["body/miscellaneous/enumerations.html",[7,0.043,31,0.032,32,0.038,33,0.032,37,0.57,80,1.987,91,2.349,92,2.241,93,1.119,94,2.241,260,3.463,344,1.987,345,3.44,346,4.217]],["title/miscellaneous/functions.html",[344,1.141,347,2.829]],["body/miscellaneous/functions.html",[7,0.039,31,0.033,32,0.039,33,0.033,37,0.592,311,3.572,312,4.399,344,2.063,347,3.572,348,4.378]],["title/index.html",[37,0.327,349,2.423,350,2.423]],["body/index.html",[7,0.043,13,0.418,31,0.023,32,0.031,33,0.023,85,1.868,166,2.148,284,2.148,351,3.093,352,3.093,353,4.105,354,3.093,355,3.093,356,3.093,357,3.093,358,3.093,359,3.093,360,3.093,361,3.093,362,3.093,363,4.607,364,3.093,365,3.093,366,3.093,367,5.356,368,3.093,369,3.093,370,3.093,371,5.249,372,3.093,373,3.093,374,4.105,375,3.093,376,3.093,377,3.093,378,3.093,379,4.105,380,4.105,381,3.093,382,3.093,383,3.093,384,4.105,385,4.105,386,3.093,387,3.093,388,3.093,389,3.093,390,3.093,391,2.523,392,3.093,393,3.093,394,3.093,395,3.093,396,3.093,397,3.093,398,3.093,399,3.093,400,3.093,401,3.093,402,3.093,403,3.093,404,3.093,405,3.093,406,3.093,407,3.093,408,3.093,409,3.093]],["title/modules.html",[2,1.847]],["body/modules.html",[1,2.57,2,2.005,6,2.262,7,0.038,8,2.262,31,0.032,32,0.038,33,0.032,391,3.472,410,4.256,411,4.256,412,5.33,413,5.014,414,5.014]],["title/overview.html",[415,3.198]],["body/overview.html",[1,3.376,2,1.859,3,2.893,4,3.218,5,3.218,6,2.742,7,0.041,8,2.742,9,3.909,10,3.218,11,3.218,31,0.03,32,0.036,33,0.03,35,2.096,72,1.477,238,2.74,415,3.218,416,3.945,417,3.945,418,3.945,419,3.945]],["title/miscellaneous/variables.html",[344,1.141,420,2.829]],["body/miscellaneous/variables.html",[7,0.045,15,1.54,16,1.729,19,2.259,22,2.259,24,1.339,25,1.809,26,1.809,27,1.54,28,1.809,31,0.017,32,0.025,33,0.017,37,0.3,42,1.54,52,0.93,53,1.981,54,0.821,63,2.129,65,2.259,67,2.259,75,2.259,93,0.589,100,1.442,101,0.83,102,0.83,133,3.697,134,1.809,138,1.809,184,2.259,196,1.809,197,2.259,223,2.259,225,1.964,226,2.259,237,1.339,260,3.818,291,1.809,292,3.143,300,1.809,301,2.654,302,1.809,303,2.654,305,1.809,306,2.654,307,1.809,308,3.143,309,2.654,313,1.809,314,2.654,315,1.809,316,2.654,344,1.045,420,1.809,421,4.88,422,2.218,423,3.852,424,2.218,425,2.218,426,2.218,427,2.218,428,2.218,429,2.218,430,2.218,431,2.218,432,2.218,433,2.218,434,2.218,435,2.218,436,2.218,437,2.218,438,2.218,439,2.218,440,2.218,441,2.218,442,2.218,443,2.218,444,2.218,445,2.218,446,2.218,447,2.218,448,4.722,449,2.218,450,2.218]]],"invertedIndex":[["",{"_index":7,"title":{},"body":{"modules/AppModule.html":{},"classes/CustomExeption.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"classes/UserAlreadyExistException.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{},"modules/UsersModule.html":{},"interfaces/UsersModuleOptions.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"index.html":{},"modules.html":{},"overview.html":{},"miscellaneous/variables.html":{}}}],["0",{"_index":289,"title":{},"body":{"coverage.html":{}}}],["0.1.13",{"_index":335,"title":{},"body":{"dependencies.html":{}}}],["0.2.36",{"_index":343,"title":{},"body":{"dependencies.html":{}}}],["0/1",{"_index":290,"title":{},"body":{"coverage.html":{}}}],["0/12",{"_index":298,"title":{},"body":{"coverage.html":{}}}],["0/2",{"_index":293,"title":{},"body":{"coverage.html":{}}}],["0/4",{"_index":310,"title":{},"body":{"coverage.html":{}}}],["0/7",{"_index":304,"title":{},"body":{"coverage.html":{}}}],["1",{"_index":283,"title":{},"body":{"injectables/UsersService.html":{}}}],["1.2.1",{"_index":332,"title":{},"body":{"dependencies.html":{}}}],["1/2",{"_index":297,"title":{},"body":{"coverage.html":{}}}],["10",{"_index":261,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["10.0.0",{"_index":329,"title":{},"body":{"dependencies.html":{}}}],["100",{"_index":294,"title":{},"body":{"coverage.html":{}}}],["11/11",{"_index":295,"title":{},"body":{"coverage.html":{}}}],["2",{"_index":417,"title":{},"body":{"overview.html":{}}}],["2.55.0",{"_index":327,"title":{},"body":{"dependencies.html":{}}}],["3",{"_index":416,"title":{},"body":{"overview.html":{}}}],["3.0.1",{"_index":342,"title":{},"body":{"dependencies.html":{}}}],["3.0.2",{"_index":337,"title":{},"body":{"dependencies.html":{}}}],["4",{"_index":418,"title":{},"body":{"overview.html":{}}}],["50",{"_index":296,"title":{},"body":{"coverage.html":{}}}],["6",{"_index":419,"title":{},"body":{"overview.html":{}}}],["6.5.4",{"_index":339,"title":{},"body":{"dependencies.html":{}}}],["7.0.0",{"_index":320,"title":{},"body":{"dependencies.html":{}}}],["7/7",{"_index":299,"title":{},"body":{"coverage.html":{}}}],["8.0.1",{"_index":325,"title":{},"body":{"dependencies.html":{}}}],["8.7.1",{"_index":331,"title":{},"body":{"dependencies.html":{}}}],["admin",{"_index":92,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{},"miscellaneous/enumerations.html":{}}}],["amazing",{"_index":392,"title":{},"body":{"index.html":{}}}],["angular",{"_index":362,"title":{},"body":{"index.html":{}}}],["app",{"_index":369,"title":{},"body":{"index.html":{}}}],["applications",{"_index":359,"title":{},"body":{"index.html":{}}}],["appmodule",{"_index":1,"title":{"modules/AppModule.html":{}},"body":{"modules/AppModule.html":{},"modules.html":{},"overview.html":{}}}],["args",{"_index":77,"title":{},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{}}}],["async",{"_index":68,"title":{},"body":{"modules/DatabaseModule.html":{},"classes/UserCreator.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{}}}],["author",{"_index":402,"title":{},"body":{"index.html":{}}}],["available",{"_index":414,"title":{},"body":{"modules.html":{}}}],["avatarurl",{"_index":110,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{}}}],["await",{"_index":69,"title":{},"body":{"modules/DatabaseModule.html":{},"classes/UserCreator.html":{},"injectables/UsersPasswordsService.html":{}}}],["awesome",{"_index":326,"title":{},"body":{"dependencies.html":{}}}],["backers",{"_index":393,"title":{},"body":{"index.html":{}}}],["bcrypt",{"_index":263,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["bcrypt.compare(this.getsalt(salt",{"_index":277,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["bcrypt.hash(this.getsalt(salt",{"_index":275,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["bcryptjs",{"_index":264,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["boolean",{"_index":112,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{}}}],["bootstrap",{"_index":312,"title":{},"body":{"coverage.html":{},"miscellaneous/functions.html":{}}}],["browse",{"_index":412,"title":{},"body":{"modules.html":{}}}],["browser",{"_index":410,"title":{},"body":{"modules.html":{}}}],["building",{"_index":354,"title":{},"body":{"index.html":{}}}],["catch",{"_index":213,"title":{},"body":{"classes/UserCreator.html":{}}}],["changeuserpassword(userid",{"_index":271,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["char",{"_index":132,"title":{},"body":{"classes/User.html":{}}}],["class",{"_index":30,"title":{"classes/CustomExeption.html":{},"classes/User.html":{},"classes/UserAlreadyExistException.html":{},"classes/UserCreator.html":{}},"body":{"modules/AppModule.html":{},"classes/CustomExeption.html":{},"modules/DatabaseModule.html":{},"classes/User.html":{},"classes/UserAlreadyExistException.html":{},"classes/UserCreator.html":{},"modules/UsersModule.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{},"coverage.html":{}}}],["classes",{"_index":35,"title":{},"body":{"classes/CustomExeption.html":{},"classes/User.html":{},"classes/UserAlreadyExistException.html":{},"classes/UserCreator.html":{},"overview.html":{}}}],["cluster_appmodule",{"_index":4,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["cluster_appmodule_imports",{"_index":5,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["column",{"_index":137,"title":{},"body":{"classes/User.html":{}}}],["column({type",{"_index":119,"title":{},"body":{"classes/User.html":{}}}],["compare",{"_index":341,"title":{},"body":{"dependencies.html":{}}}],["comparepass",{"_index":244,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["comparepass(password",{"_index":248,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["compareuserpasswords(userid",{"_index":266,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["config",{"_index":19,"title":{},"body":{"modules/AppModule.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["connection",{"_index":448,"title":{},"body":{"miscellaneous/variables.html":{}}}],["connection.getcustomrepository(repo",{"_index":449,"title":{},"body":{"miscellaneous/variables.html":{}}}],["connection.getrepository(entity",{"_index":450,"title":{},"body":{"miscellaneous/variables.html":{}}}],["connectionoptions",{"_index":60,"title":{},"body":{"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{}}}],["console.log('usercreator",{"_index":199,"title":{},"body":{"classes/UserCreator.html":{}}}],["const",{"_index":24,"title":{},"body":{"modules/AppModule.html":{},"classes/UserCreator.html":{},"injectables/UsersPasswordsService.html":{},"miscellaneous/variables.html":{}}}],["constructor",{"_index":162,"title":{},"body":{"classes/UserCreator.html":{}}}],["constructor(payload",{"_index":163,"title":{},"body":{"classes/UserCreator.html":{}}}],["consts",{"_index":227,"title":{},"body":{"modules/UsersModule.html":{},"injectables/UsersPasswordsService.html":{}}}],["coverage",{"_index":284,"title":{"coverage.html":{}},"body":{"coverage.html":{},"index.html":{}}}],["createconnection",{"_index":61,"title":{},"body":{"modules/DatabaseModule.html":{}}}],["createdat",{"_index":113,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{}}}],["createquerybuilder('it",{"_index":189,"title":{},"body":{"classes/UserCreator.html":{}}}],["createuser",{"_index":154,"title":{},"body":{"classes/UserCreator.html":{}}}],["createusersalt",{"_index":245,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["creator",{"_index":210,"title":{},"body":{"classes/UserCreator.html":{}}}],["creator.ts",{"_index":150,"title":{},"body":{"classes/UserCreator.html":{},"coverage.html":{}}}],["creator.ts:14",{"_index":183,"title":{},"body":{"classes/UserCreator.html":{}}}],["creator.ts:25",{"_index":177,"title":{},"body":{"classes/UserCreator.html":{}}}],["creator.ts:32",{"_index":173,"title":{},"body":{"classes/UserCreator.html":{}}}],["creator.ts:37",{"_index":169,"title":{},"body":{"classes/UserCreator.html":{}}}],["creator.ts:46",{"_index":179,"title":{},"body":{"classes/UserCreator.html":{}}}],["creator.ts:50",{"_index":181,"title":{},"body":{"classes/UserCreator.html":{}}}],["creator.ts:55",{"_index":170,"title":{},"body":{"classes/UserCreator.html":{}}}],["creator.ts:6",{"_index":168,"title":{},"body":{"classes/UserCreator.html":{}}}],["creator.ts:7",{"_index":167,"title":{},"body":{"classes/UserCreator.html":{}}}],["creator.ts:8",{"_index":165,"title":{},"body":{"classes/UserCreator.html":{}}}],["custom.exeptions",{"_index":147,"title":{},"body":{"classes/UserAlreadyExistException.html":{}}}],["customexeption",{"_index":34,"title":{"classes/CustomExeption.html":{}},"body":{"classes/CustomExeption.html":{},"classes/UserAlreadyExistException.html":{},"coverage.html":{}}}],["customexeption:2",{"_index":146,"title":{},"body":{"classes/UserAlreadyExistException.html":{}}}],["database",{"_index":434,"title":{},"body":{"miscellaneous/variables.html":{}}}],["database_connection",{"_index":66,"title":{},"body":{"modules/DatabaseModule.html":{}}}],["databasemodule",{"_index":6,"title":{"modules/DatabaseModule.html":{}},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"modules.html":{},"overview.html":{}}}],["databasemodule.forroot(...$config.getdatabaseconfig",{"_index":25,"title":{},"body":{"modules/AppModule.html":{},"miscellaneous/variables.html":{}}}],["dateofbirth",{"_index":109,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{}}}],["decorators",{"_index":118,"title":{},"body":{"classes/User.html":{},"injectables/UsersPasswordsService.html":{}}}],["default",{"_index":133,"title":{},"body":{"classes/User.html":{},"injectables/UsersPasswordsService.html":{},"miscellaneous/variables.html":{}}}],["defined",{"_index":40,"title":{},"body":{"classes/CustomExeption.html":{},"modules/DatabaseModule.html":{},"interfaces/IUsersService.html":{},"classes/User.html":{},"classes/UserAlreadyExistException.html":{},"classes/UserCreator.html":{},"modules/UsersModule.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{}}}],["dependencies",{"_index":3,"title":{"dependencies.html":{}},"body":{"modules/AppModule.html":{},"dependencies.html":{},"overview.html":{}}}],["description",{"_index":85,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/UserModel.html":{},"index.html":{}}}],["development",{"_index":370,"title":{},"body":{"index.html":{}}}],["documentation",{"_index":285,"title":{},"body":{"coverage.html":{}}}],["domain/users/users.module",{"_index":20,"title":{},"body":{"modules/AppModule.html":{}}}],["dotenv",{"_index":328,"title":{},"body":{"dependencies.html":{}}}],["dynamicmodule",{"_index":58,"title":{},"body":{"modules/DatabaseModule.html":{},"modules/UsersModule.html":{}}}],["e",{"_index":214,"title":{},"body":{"classes/UserCreator.html":{}}}],["e2e",{"_index":381,"title":{},"body":{"index.html":{}}}],["efficient",{"_index":355,"title":{},"body":{"index.html":{}}}],["email",{"_index":99,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{}}}],["entities",{"_index":49,"title":{},"body":{"modules/DatabaseModule.html":{},"modules/UsersModule.html":{}}}],["entity",{"_index":138,"title":{},"body":{"classes/User.html":{},"miscellaneous/variables.html":{}}}],["entity('users",{"_index":139,"title":{},"body":{"classes/User.html":{}}}],["entityschema",{"_index":50,"title":{},"body":{"modules/DatabaseModule.html":{}}}],["enum",{"_index":90,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{}}}],["enumerations",{"_index":345,"title":{"miscellaneous/enumerations.html":{}},"body":{"miscellaneous/enumerations.html":{}}}],["env",{"_index":442,"title":{},"body":{"miscellaneous/variables.html":{}}}],["env.helpers.ts",{"_index":314,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["error",{"_index":174,"title":{},"body":{"classes/UserCreator.html":{}}}],["error('not",{"_index":440,"title":{},"body":{"miscellaneous/variables.html":{}}}],["error('user",{"_index":209,"title":{},"body":{"classes/UserCreator.html":{}}}],["error.iscustom",{"_index":200,"title":{},"body":{"classes/UserCreator.html":{}}}],["existuser",{"_index":187,"title":{},"body":{"classes/UserCreator.html":{}}}],["export",{"_index":29,"title":{},"body":{"modules/AppModule.html":{},"classes/CustomExeption.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"classes/UserAlreadyExistException.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{},"modules/UsersModule.html":{},"interfaces/UsersModuleOptions.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{}}}],["express",{"_index":323,"title":{},"body":{"dependencies.html":{}}}],["extends",{"_index":144,"title":{},"body":{"classes/UserAlreadyExistException.html":{}}}],["false",{"_index":122,"title":{},"body":{"classes/User.html":{}}}],["file",{"_index":14,"title":{},"body":{"modules/AppModule.html":{},"classes/CustomExeption.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"classes/UserAlreadyExistException.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{},"modules/UsersModule.html":{},"interfaces/UsersModuleOptions.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{},"coverage.html":{}}}],["firstname",{"_index":105,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{}}}],["forfeature",{"_index":217,"title":{},"body":{"modules/UsersModule.html":{}}}],["formatphonenumber",{"_index":184,"title":{},"body":{"classes/UserCreator.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["formatphonenumber(payload.phonenumber",{"_index":198,"title":{},"body":{"classes/UserCreator.html":{}}}],["forroot",{"_index":46,"title":{},"body":{"modules/DatabaseModule.html":{},"modules/UsersModule.html":{}}}],["forroot(options",{"_index":47,"title":{},"body":{"modules/DatabaseModule.html":{},"modules/UsersModule.html":{}}}],["found",{"_index":441,"title":{},"body":{"miscellaneous/variables.html":{}}}],["framework",{"_index":353,"title":{},"body":{"index.html":{}}}],["function",{"_index":76,"title":{},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"coverage.html":{}}}],["functions",{"_index":347,"title":{"miscellaneous/functions.html":{}},"body":{"miscellaneous/functions.html":{}}}],["getdatabaseconfig",{"_index":292,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["getenv",{"_index":22,"title":{},"body":{"modules/AppModule.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["getenv('local_hash_salt",{"_index":28,"title":{},"body":{"modules/AppModule.html":{},"miscellaneous/variables.html":{}}}],["getone",{"_index":195,"title":{},"body":{"classes/UserCreator.html":{}}}],["getproviders",{"_index":221,"title":{},"body":{"modules/UsersModule.html":{}}}],["getsalt",{"_index":246,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["getsalt(usersalt",{"_index":253,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["getting",{"_index":349,"title":{"index.html":{}},"body":{}}],["global",{"_index":59,"title":{},"body":{"modules/DatabaseModule.html":{}}}],["go",{"_index":156,"title":{},"body":{"classes/UserCreator.html":{}}}],["graph",{"_index":413,"title":{},"body":{"modules.html":{}}}],["grow",{"_index":388,"title":{},"body":{"index.html":{}}}],["hash",{"_index":250,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["hashpassword",{"_index":247,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["hashpassword(password",{"_index":256,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["heavily",{"_index":360,"title":{},"body":{"index.html":{}}}],["here",{"_index":399,"title":{},"body":{"index.html":{}}}],["host",{"_index":427,"title":{},"body":{"miscellaneous/variables.html":{}}}],["https://nestjs.com",{"_index":406,"title":{},"body":{"index.html":{}}}],["id",{"_index":87,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"interfaces/UserModel.html":{},"injectables/UsersService.html":{}}}],["idatabaseasyncmoduleparams",{"_index":71,"title":{"interfaces/IDatabaseAsyncModuleParams.html":{}},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"coverage.html":{}}}],["identifier",{"_index":286,"title":{},"body":{"coverage.html":{}}}],["implements",{"_index":117,"title":{},"body":{"classes/User.html":{},"injectables/UsersService.html":{}}}],["import",{"_index":17,"title":{},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"classes/User.html":{},"classes/UserAlreadyExistException.html":{},"classes/UserCreator.html":{},"modules/UsersModule.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{}}}],["imports",{"_index":16,"title":{},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["index",{"_index":37,"title":{"index.html":{}},"body":{"classes/CustomExeption.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"classes/UserAlreadyExistException.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{},"interfaces/UsersModuleOptions.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["info",{"_index":12,"title":{"interfaces/Info.html":{}},"body":{"modules/AppModule.html":{},"classes/CustomExeption.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"classes/UserAlreadyExistException.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{},"modules/UsersModule.html":{},"interfaces/UsersModuleOptions.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{},"coverage.html":{}}}],["inforepository",{"_index":152,"title":{},"body":{"classes/UserCreator.html":{}}}],["inherited",{"_index":145,"title":{},"body":{"classes/UserAlreadyExistException.html":{}}}],["inject",{"_index":75,"title":{},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"injectables/UsersPasswordsService.html":{},"miscellaneous/variables.html":{}}}],["inject(password_hash_salt",{"_index":258,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["injectable",{"_index":236,"title":{"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{}},"body":{"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{},"coverage.html":{}}}],["injectables",{"_index":238,"title":{},"body":{"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{},"overview.html":{}}}],["inspired",{"_index":361,"title":{},"body":{"index.html":{}}}],["installation",{"_index":366,"title":{},"body":{"index.html":{}}}],["installrunning",{"_index":368,"title":{},"body":{"index.html":{}}}],["interface",{"_index":70,"title":{"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{},"interfaces/UsersModuleOptions.html":{}},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{},"interfaces/UsersModuleOptions.html":{},"coverage.html":{}}}],["interfaces",{"_index":72,"title":{},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{},"modules/UsersModule.html":{},"interfaces/UsersModuleOptions.html":{},"overview.html":{}}}],["isactivedapp",{"_index":111,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{}}}],["iscustom",{"_index":39,"title":{},"body":{"classes/CustomExeption.html":{},"classes/UserAlreadyExistException.html":{}}}],["iusersservice",{"_index":79,"title":{"interfaces/IUsersService.html":{}},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{},"coverage.html":{}}}],["join",{"_index":395,"title":{},"body":{"index.html":{}}}],["kamil",{"_index":403,"title":{},"body":{"index.html":{}}}],["lastname",{"_index":106,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{}}}],["libs",{"_index":21,"title":{},"body":{"modules/AppModule.html":{}}}],["license",{"_index":409,"title":{},"body":{"index.html":{}}}],["licensed",{"_index":385,"title":{},"body":{"index.html":{}}}],["localhashsalt",{"_index":241,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["matching",{"_index":32,"title":{},"body":{"modules/AppModule.html":{},"classes/CustomExeption.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"classes/UserAlreadyExistException.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{},"modules/UsersModule.html":{},"interfaces/UsersModuleOptions.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"index.html":{},"modules.html":{},"overview.html":{},"miscellaneous/variables.html":{}}}],["metadata",{"_index":334,"title":{},"body":{"dependencies.html":{}}}],["methods",{"_index":44,"title":{},"body":{"modules/DatabaseModule.html":{},"interfaces/IUsersService.html":{},"classes/UserCreator.html":{},"modules/UsersModule.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{}}}],["miscellaneous",{"_index":344,"title":{"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}},"body":{"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["mit",{"_index":384,"title":{},"body":{"index.html":{}}}],["mode",{"_index":374,"title":{},"body":{"index.html":{}}}],["module",{"_index":0,"title":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"modules/UsersModule.html":{}},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"modules/UsersModule.html":{},"interfaces/UsersModuleOptions.html":{},"coverage.html":{}}}],["modules",{"_index":2,"title":{"modules.html":{}},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"modules/UsersModule.html":{},"modules.html":{},"overview.html":{}}}],["more",{"_index":398,"title":{},"body":{"index.html":{}}}],["myśliwiec",{"_index":404,"title":{},"body":{"index.html":{}}}],["name",{"_index":53,"title":{},"body":{"modules/DatabaseModule.html":{},"interfaces/IUsersService.html":{},"classes/UserCreator.html":{},"modules/UsersModule.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{},"miscellaneous/variables.html":{}}}],["namespace",{"_index":88,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{}}}],["nest",{"_index":363,"title":{},"body":{"index.html":{}}}],["nestframework",{"_index":408,"title":{},"body":{"index.html":{}}}],["nestjs/common",{"_index":18,"title":{},"body":{"modules/AppModule.html":{},"modules/DatabaseModule.html":{},"modules/UsersModule.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{},"dependencies.html":{}}}],["nestjs/core",{"_index":321,"title":{},"body":{"dependencies.html":{}}}],["nestjs/platform",{"_index":322,"title":{},"body":{"dependencies.html":{}}}],["nestjs/typeorm",{"_index":324,"title":{},"body":{"dependencies.html":{}}}],["new",{"_index":197,"title":{},"body":{"classes/UserCreator.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["newpassword",{"_index":272,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["node.js",{"_index":352,"title":{},"body":{"index.html":{}}}],["npm",{"_index":367,"title":{},"body":{"index.html":{}}}],["null",{"_index":439,"title":{},"body":{"miscellaneous/variables.html":{}}}],["nullable",{"_index":121,"title":{},"body":{"classes/User.html":{}}}],["number",{"_index":96,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"interfaces/UserModel.html":{},"injectables/UsersPasswordsService.html":{}}}],["number(process.env.database_port",{"_index":430,"title":{},"body":{"miscellaneous/variables.html":{}}}],["number.helpers.ts",{"_index":316,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["object",{"_index":425,"title":{},"body":{"miscellaneous/variables.html":{}}}],["onerror",{"_index":157,"title":{},"body":{"classes/UserCreator.html":{}}}],["onerror(error",{"_index":172,"title":{},"body":{"classes/UserCreator.html":{}}}],["open",{"_index":386,"title":{},"body":{"index.html":{}}}],["optional",{"_index":55,"title":{},"body":{"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUsersService.html":{},"classes/UserCreator.html":{},"modules/UsersModule.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{}}}],["options",{"_index":56,"title":{},"body":{"modules/DatabaseModule.html":{},"modules/UsersModule.html":{}}}],["options.interface.ts",{"_index":235,"title":{},"body":{"interfaces/UsersModuleOptions.html":{},"coverage.html":{}}}],["orwhere('it.phonenumber",{"_index":193,"title":{},"body":{"classes/UserCreator.html":{}}}],["out",{"_index":11,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["overview",{"_index":415,"title":{"overview.html":{}},"body":{"overview.html":{}}}],["package",{"_index":319,"title":{"dependencies.html":{}},"body":{}}],["param",{"_index":115,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{}}}],["parameters",{"_index":52,"title":{},"body":{"modules/DatabaseModule.html":{},"interfaces/IUsersService.html":{},"classes/UserCreator.html":{},"modules/UsersModule.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{},"miscellaneous/variables.html":{}}}],["params.interfaces.ts",{"_index":74,"title":{},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"coverage.html":{}}}],["partial",{"_index":48,"title":{},"body":{"modules/DatabaseModule.html":{}}}],["password",{"_index":102,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{},"injectables/UsersPasswordsService.html":{},"miscellaneous/variables.html":{}}}],["password_hash_salt",{"_index":225,"title":{},"body":{"modules/UsersModule.html":{},"injectables/UsersPasswordsService.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["passwordhashsalt",{"_index":27,"title":{},"body":{"modules/AppModule.html":{},"interfaces/UsersModuleOptions.html":{},"miscellaneous/variables.html":{}}}],["passwords.service.ts",{"_index":240,"title":{},"body":{"injectables/UsersPasswordsService.html":{},"coverage.html":{}}}],["passwords.service.ts:12",{"_index":259,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["passwords.service.ts:25",{"_index":257,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["passwords.service.ts:29",{"_index":251,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["passwords.service.ts:33",{"_index":252,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["passwords.service.ts:37",{"_index":254,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["passwords.service.ts:9",{"_index":262,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["passwordsalt",{"_index":103,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{}}}],["payload",{"_index":86,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{},"injectables/UsersService.html":{}}}],["payload.email",{"_index":192,"title":{},"body":{"classes/UserCreator.html":{}}}],["payload.phonenumber",{"_index":194,"title":{},"body":{"classes/UserCreator.html":{}}}],["pg",{"_index":330,"title":{},"body":{"dependencies.html":{}}}],["phonenumber",{"_index":101,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{},"dependencies.html":{},"miscellaneous/variables.html":{}}}],["phonenumber(phonenumber).getnumber('e164",{"_index":437,"title":{},"body":{"miscellaneous/variables.html":{}}}],["please",{"_index":396,"title":{},"body":{"index.html":{}}}],["port",{"_index":429,"title":{},"body":{"miscellaneous/variables.html":{}}}],["position",{"_index":108,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{}}}],["postgres",{"_index":426,"title":{},"body":{"miscellaneous/variables.html":{}}}],["prepared",{"_index":211,"title":{},"body":{"classes/UserCreator.html":{}}}],["preparepayload",{"_index":158,"title":{},"body":{"classes/UserCreator.html":{}}}],["preparepayload(payload",{"_index":176,"title":{},"body":{"classes/UserCreator.html":{}}}],["primarygeneratedcolumn",{"_index":125,"title":{},"body":{"classes/User.html":{}}}],["private",{"_index":151,"title":{},"body":{"classes/UserCreator.html":{},"injectables/UsersPasswordsService.html":{}}}],["process.env.database_db",{"_index":435,"title":{},"body":{"miscellaneous/variables.html":{}}}],["process.env.database_host",{"_index":428,"title":{},"body":{"miscellaneous/variables.html":{}}}],["process.env.database_pass",{"_index":433,"title":{},"body":{"miscellaneous/variables.html":{}}}],["process.env.database_user",{"_index":432,"title":{},"body":{"miscellaneous/variables.html":{}}}],["process.env[name",{"_index":438,"title":{},"body":{"miscellaneous/variables.html":{}}}],["production",{"_index":376,"title":{},"body":{"index.html":{}}}],["progressive",{"_index":351,"title":{},"body":{"index.html":{}}}],["project",{"_index":387,"title":{},"body":{"index.html":{}}}],["promise",{"_index":78,"title":{},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{},"injectables/UsersPasswordsService.html":{}}}],["properties",{"_index":38,"title":{},"body":{"classes/CustomExeption.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"classes/UserAlreadyExistException.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{},"interfaces/UsersModuleOptions.html":{},"injectables/UsersPasswordsService.html":{}}}],["provide",{"_index":65,"title":{},"body":{"modules/DatabaseModule.html":{},"modules/UsersModule.html":{},"miscellaneous/variables.html":{}}}],["providecustomrepository",{"_index":309,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["provideentity",{"_index":223,"title":{},"body":{"modules/UsersModule.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["provideentity(users_repository",{"_index":233,"title":{},"body":{"modules/UsersModule.html":{}}}],["providers",{"_index":64,"title":{},"body":{"modules/DatabaseModule.html":{},"modules/UsersModule.html":{}}}],["public",{"_index":155,"title":{},"body":{"classes/UserCreator.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{}}}],["randomstring",{"_index":265,"title":{},"body":{"injectables/UsersPasswordsService.html":{},"dependencies.html":{}}}],["randomstring.generate(10",{"_index":278,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["read",{"_index":397,"title":{},"body":{"index.html":{}}}],["readonly",{"_index":242,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["reflect",{"_index":333,"title":{},"body":{"dependencies.html":{}}}],["repo",{"_index":447,"title":{},"body":{"miscellaneous/variables.html":{}}}],["repository",{"_index":166,"title":{},"body":{"classes/UserCreator.html":{},"injectables/UsersPasswordsService.html":{},"index.html":{}}}],["repository.helper.ts",{"_index":308,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["reset",{"_index":10,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["result",{"_index":31,"title":{},"body":{"modules/AppModule.html":{},"classes/CustomExeption.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"classes/UserAlreadyExistException.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{},"modules/UsersModule.html":{},"interfaces/UsersModuleOptions.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"index.html":{},"modules.html":{},"overview.html":{},"miscellaneous/variables.html":{}}}],["results",{"_index":33,"title":{},"body":{"modules/AppModule.html":{},"classes/CustomExeption.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"classes/UserAlreadyExistException.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{},"modules/UsersModule.html":{},"interfaces/UsersModuleOptions.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"index.html":{},"modules.html":{},"overview.html":{},"miscellaneous/variables.html":{}}}],["return",{"_index":63,"title":{},"body":{"modules/DatabaseModule.html":{},"classes/UserCreator.html":{},"modules/UsersModule.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{},"miscellaneous/variables.html":{}}}],["returns",{"_index":57,"title":{},"body":{"modules/DatabaseModule.html":{},"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{},"modules/UsersModule.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{}}}],["rimraf",{"_index":336,"title":{},"body":{"dependencies.html":{}}}],["role",{"_index":91,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"interfaces/UserModel.html":{},"miscellaneous/enumerations.html":{}}}],["role.admin",{"_index":97,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{}}}],["role.user",{"_index":98,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{}}}],["run",{"_index":371,"title":{},"body":{"index.html":{}}}],["rxjs",{"_index":338,"title":{},"body":{"dependencies.html":{}}}],["salt",{"_index":249,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["saltrounds",{"_index":243,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["save",{"_index":81,"title":{},"body":{"interfaces/IUsersService.html":{},"injectables/UsersService.html":{}}}],["save(payload",{"_index":82,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{},"injectables/UsersService.html":{}}}],["saveuserpaylod",{"_index":83,"title":{"interfaces/SaveUserPaylod.html":{}},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{},"coverage.html":{}}}],["scalable",{"_index":356,"title":{},"body":{"index.html":{}}}],["secure",{"_index":340,"title":{},"body":{"dependencies.html":{}}}],["select",{"_index":127,"title":{},"body":{"classes/User.html":{}}}],["select('it.id",{"_index":190,"title":{},"body":{"classes/UserCreator.html":{}}}],["server",{"_index":357,"title":{},"body":{"index.html":{}}}],["services",{"_index":229,"title":{},"body":{"modules/UsersModule.html":{}}}],["setpaylod",{"_index":159,"title":{},"body":{"classes/UserCreator.html":{}}}],["setpaylod(payload",{"_index":178,"title":{},"body":{"classes/UserCreator.html":{}}}],["setrepository",{"_index":160,"title":{},"body":{"classes/UserCreator.html":{}}}],["setrepository(repository",{"_index":180,"title":{},"body":{"classes/UserCreator.html":{}}}],["shared",{"_index":23,"title":{},"body":{"modules/AppModule.html":{}}}],["side",{"_index":358,"title":{},"body":{"index.html":{}}}],["source",{"_index":13,"title":{},"body":{"modules/AppModule.html":{},"classes/CustomExeption.html":{},"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"classes/UserAlreadyExistException.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{},"modules/UsersModule.html":{},"interfaces/UsersModuleOptions.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{},"index.html":{}}}],["sponsors",{"_index":390,"title":{},"body":{"index.html":{}}}],["src/.../app.module.ts",{"_index":424,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../get",{"_index":423,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../index.ts",{"_index":421,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../main.ts",{"_index":348,"title":{},"body":{"miscellaneous/functions.html":{}}}],["src/.../phone",{"_index":422,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../users.namespace.ts",{"_index":346,"title":{},"body":{"miscellaneous/enumerations.html":{}}}],["src/app.module.ts",{"_index":15,"title":{},"body":{"modules/AppModule.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/config/index.ts",{"_index":291,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/core",{"_index":136,"title":{},"body":{"classes/User.html":{},"classes/UserCreator.html":{},"injectables/UsersService.html":{}}}],["src/core/exeptions/custom.exeptions.ts",{"_index":36,"title":{},"body":{"classes/CustomExeption.html":{},"coverage.html":{}}}],["src/core/exeptions/custom.exeptions.ts:2",{"_index":41,"title":{},"body":{"classes/CustomExeption.html":{}}}],["src/core/exeptions/users.exeptions.ts",{"_index":143,"title":{},"body":{"classes/UserAlreadyExistException.html":{},"coverage.html":{}}}],["src/core/namespaces/users.namespace.ts",{"_index":80,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{},"coverage.html":{},"miscellaneous/enumerations.html":{}}}],["src/core/namespaces/users.namespace.ts:89",{"_index":84,"title":{},"body":{"interfaces/IUsersService.html":{}}}],["src/domain/users/classes/user",{"_index":149,"title":{},"body":{"classes/UserCreator.html":{},"coverage.html":{}}}],["src/domain/users/consts/index.ts",{"_index":300,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/domain/users/entities/index.ts",{"_index":302,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/domain/users/entities/user.entity.ts",{"_index":116,"title":{},"body":{"classes/User.html":{},"coverage.html":{}}}],["src/domain/users/entities/user.entity.ts:10",{"_index":135,"title":{},"body":{"classes/User.html":{}}}],["src/domain/users/entities/user.entity.ts:13",{"_index":124,"title":{},"body":{"classes/User.html":{}}}],["src/domain/users/entities/user.entity.ts:16",{"_index":130,"title":{},"body":{"classes/User.html":{}}}],["src/domain/users/entities/user.entity.ts:19",{"_index":128,"title":{},"body":{"classes/User.html":{}}}],["src/domain/users/entities/user.entity.ts:22",{"_index":129,"title":{},"body":{"classes/User.html":{}}}],["src/domain/users/entities/user.entity.ts:7",{"_index":126,"title":{},"body":{"classes/User.html":{}}}],["src/domain/users/interfaces/users",{"_index":234,"title":{},"body":{"interfaces/UsersModuleOptions.html":{},"coverage.html":{}}}],["src/domain/users/services/index.ts",{"_index":305,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/domain/users/services/users",{"_index":239,"title":{},"body":{"injectables/UsersPasswordsService.html":{},"coverage.html":{}}}],["src/domain/users/services/users.service.ts",{"_index":280,"title":{},"body":{"injectables/UsersService.html":{},"coverage.html":{}}}],["src/domain/users/services/users.service.ts:12",{"_index":281,"title":{},"body":{"injectables/UsersService.html":{}}}],["src/domain/users/users.module.ts",{"_index":216,"title":{},"body":{"modules/UsersModule.html":{}}}],["src/domain/users/users.module.ts:12",{"_index":222,"title":{},"body":{"modules/UsersModule.html":{}}}],["src/domain/users/users.module.ts:21",{"_index":220,"title":{},"body":{"modules/UsersModule.html":{}}}],["src/domain/users/users.module.ts:29",{"_index":218,"title":{},"body":{"modules/UsersModule.html":{}}}],["src/libs",{"_index":224,"title":{},"body":{"modules/UsersModule.html":{}}}],["src/libs/database/database.module.ts",{"_index":43,"title":{},"body":{"modules/DatabaseModule.html":{}}}],["src/libs/database/database.module.ts:7",{"_index":51,"title":{},"body":{"modules/DatabaseModule.html":{}}}],["src/libs/database/helpers/get",{"_index":307,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/libs/database/interfaces/database",{"_index":73,"title":{},"body":{"interfaces/IDatabaseAsyncModuleParams.html":{},"coverage.html":{}}}],["src/main.ts",{"_index":311,"title":{},"body":{"coverage.html":{},"miscellaneous/functions.html":{}}}],["src/shared",{"_index":185,"title":{},"body":{"classes/UserCreator.html":{}}}],["src/shared/helpers/get",{"_index":313,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/shared/helpers/phone",{"_index":315,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["start",{"_index":372,"title":{},"body":{"index.html":{}}}],["start:dev",{"_index":375,"title":{},"body":{"index.html":{}}}],["start:prodtest",{"_index":377,"title":{},"body":{"index.html":{}}}],["started",{"_index":350,"title":{"index.html":{}},"body":{}}],["starter",{"_index":365,"title":{},"body":{"index.html":{}}}],["statements",{"_index":287,"title":{},"body":{"coverage.html":{}}}],["static",{"_index":45,"title":{},"body":{"modules/DatabaseModule.html":{},"modules/UsersModule.html":{}}}],["stay",{"_index":400,"title":{},"body":{"index.html":{}}}],["string",{"_index":100,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"interfaces/UserModel.html":{},"interfaces/UsersModuleOptions.html":{},"injectables/UsersPasswordsService.html":{},"miscellaneous/variables.html":{}}}],["support",{"_index":391,"title":{},"body":{"index.html":{},"modules.html":{}}}],["surname",{"_index":107,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{}}}],["svg",{"_index":411,"title":{},"body":{"modules.html":{}}}],["symbol('password_hash_salt",{"_index":444,"title":{},"body":{"miscellaneous/variables.html":{}}}],["symbol('users_infos_repository",{"_index":445,"title":{},"body":{"miscellaneous/variables.html":{}}}],["symbol('users_repository",{"_index":446,"title":{},"body":{"miscellaneous/variables.html":{}}}],["synchronize",{"_index":436,"title":{},"body":{"miscellaneous/variables.html":{}}}],["table",{"_index":318,"title":{},"body":{"coverage.html":{}}}],["tablesort(document.getelementbyid('coverage",{"_index":317,"title":{},"body":{"coverage.html":{}}}],["test",{"_index":380,"title":{},"body":{"index.html":{}}}],["test:covsupport",{"_index":383,"title":{},"body":{"index.html":{}}}],["test:e2e",{"_index":382,"title":{},"body":{"index.html":{}}}],["tests",{"_index":379,"title":{},"body":{"index.html":{}}}],["thanks",{"_index":389,"title":{},"body":{"index.html":{}}}],["this.comparepass(password",{"_index":268,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["this.hashpassword(newpassword",{"_index":273,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["this.localhashsalt",{"_index":279,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["this.onerror(e",{"_index":215,"title":{},"body":{"classes/UserCreator.html":{}}}],["this.payload",{"_index":206,"title":{},"body":{"classes/UserCreator.html":{}}}],["this.payload.email",{"_index":202,"title":{},"body":{"classes/UserCreator.html":{}}}],["this.payload.password",{"_index":203,"title":{},"body":{"classes/UserCreator.html":{}}}],["this.payload.passwordsalt",{"_index":204,"title":{},"body":{"classes/UserCreator.html":{}}}],["this.payload.phonenumber",{"_index":205,"title":{},"body":{"classes/UserCreator.html":{}}}],["this.preparepayload(payload",{"_index":207,"title":{},"body":{"classes/UserCreator.html":{}}}],["this.saltrounds",{"_index":276,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["this.setpaylod(payload",{"_index":186,"title":{},"body":{"classes/UserCreator.html":{}}}],["this.userrepository",{"_index":188,"title":{},"body":{"classes/UserCreator.html":{}}}],["this.userrepository.insert",{"_index":201,"title":{},"body":{"classes/UserCreator.html":{}}}],["this.usersrepository.findone({id",{"_index":267,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["this.usersrepository.save(user",{"_index":274,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["this.validate(this.payload",{"_index":212,"title":{},"body":{"classes/UserCreator.html":{}}}],["throw",{"_index":196,"title":{},"body":{"classes/UserCreator.html":{},"miscellaneous/variables.html":{}}}],["touch",{"_index":401,"title":{},"body":{"index.html":{}}}],["true",{"_index":42,"title":{},"body":{"classes/CustomExeption.html":{},"classes/User.html":{},"miscellaneous/variables.html":{}}}],["try",{"_index":208,"title":{},"body":{"classes/UserCreator.html":{}}}],["twitter",{"_index":407,"title":{},"body":{"index.html":{}}}],["type",{"_index":54,"title":{},"body":{"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{},"modules/UsersModule.html":{},"interfaces/UsersModuleOptions.html":{},"injectables/UsersPasswordsService.html":{},"injectables/UsersService.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["typeorm",{"_index":62,"title":{},"body":{"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"injectables/UsersPasswordsService.html":{},"dependencies.html":{}}}],["typescript",{"_index":364,"title":{},"body":{"index.html":{}}}],["u",{"_index":94,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{},"miscellaneous/enumerations.html":{}}}],["undefined",{"_index":134,"title":{},"body":{"classes/User.html":{},"miscellaneous/variables.html":{}}}],["unique",{"_index":123,"title":{},"body":{"classes/User.html":{}}}],["unit",{"_index":378,"title":{},"body":{"index.html":{}}}],["unknown",{"_index":171,"title":{},"body":{"classes/UserCreator.html":{},"injectables/UsersService.html":{}}}],["updatedat",{"_index":114,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{}}}],["usefactory",{"_index":67,"title":{},"body":{"modules/DatabaseModule.html":{},"interfaces/IDatabaseAsyncModuleParams.html":{},"miscellaneous/variables.html":{}}}],["user",{"_index":93,"title":{"classes/User.html":{}},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"interfaces/UserModel.html":{},"modules/UsersModule.html":{},"injectables/UsersPasswordsService.html":{},"coverage.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/variables.html":{}}}],["user.password",{"_index":270,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["user.passwordsalt",{"_index":269,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["useralreadyexistexception",{"_index":142,"title":{"classes/UserAlreadyExistException.html":{}},"body":{"classes/UserAlreadyExistException.html":{},"classes/UserCreator.html":{},"coverage.html":{}}}],["usercreator",{"_index":148,"title":{"classes/UserCreator.html":{}},"body":{"classes/UserCreator.html":{},"coverage.html":{}}}],["userid",{"_index":104,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{},"injectables/UsersPasswordsService.html":{}}}],["usermodel",{"_index":95,"title":{"interfaces/UserModel.html":{}},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"interfaces/UserModel.html":{},"coverage.html":{}}}],["username",{"_index":431,"title":{},"body":{"miscellaneous/variables.html":{}}}],["userrepository",{"_index":153,"title":{},"body":{"classes/UserCreator.html":{}}}],["users",{"_index":89,"title":{},"body":{"interfaces/IUsersService.html":{},"interfaces/Info.html":{},"interfaces/SaveUserPaylod.html":{},"classes/User.html":{},"classes/UserCreator.html":{},"interfaces/UserModel.html":{},"injectables/UsersService.html":{}}}],["users.role",{"_index":131,"title":{},"body":{"classes/User.html":{}}}],["users.role.user",{"_index":141,"title":{},"body":{"classes/User.html":{}}}],["users.saveuserpaylod",{"_index":164,"title":{},"body":{"classes/UserCreator.html":{},"injectables/UsersService.html":{}}}],["users.service",{"_index":282,"title":{},"body":{"injectables/UsersService.html":{}}}],["users.usermodel",{"_index":140,"title":{},"body":{"classes/User.html":{}}}],["users_entities",{"_index":303,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["users_infos_repository",{"_index":301,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["users_repository",{"_index":226,"title":{},"body":{"modules/UsersModule.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["users_services",{"_index":306,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["usersalt",{"_index":255,"title":{},"body":{"injectables/UsersPasswordsService.html":{}}}],["usersmodule",{"_index":8,"title":{"modules/UsersModule.html":{}},"body":{"modules/AppModule.html":{},"modules/UsersModule.html":{},"modules.html":{},"overview.html":{}}}],["usersmodule.forroot",{"_index":26,"title":{},"body":{"modules/AppModule.html":{},"miscellaneous/variables.html":{}}}],["usersmodule.options",{"_index":232,"title":{},"body":{"modules/UsersModule.html":{}}}],["usersmodule.options.passwordhashsalt",{"_index":231,"title":{},"body":{"modules/UsersModule.html":{}}}],["usersmoduleoptions",{"_index":219,"title":{"interfaces/UsersModuleOptions.html":{}},"body":{"modules/UsersModule.html":{},"interfaces/UsersModuleOptions.html":{},"coverage.html":{}}}],["userspasswordsservice",{"_index":237,"title":{"injectables/UsersPasswordsService.html":{}},"body":{"injectables/UsersPasswordsService.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["usersservice",{"_index":228,"title":{"injectables/UsersService.html":{}},"body":{"modules/UsersModule.html":{},"injectables/UsersService.html":{},"coverage.html":{}}}],["usevalue",{"_index":230,"title":{},"body":{"modules/UsersModule.html":{}}}],["validate",{"_index":161,"title":{},"body":{"classes/UserCreator.html":{}}}],["validate(payload",{"_index":182,"title":{},"body":{"classes/UserCreator.html":{}}}],["value",{"_index":260,"title":{},"body":{"injectables/UsersPasswordsService.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/variables.html":{}}}],["var",{"_index":443,"title":{},"body":{"miscellaneous/variables.html":{}}}],["varchar",{"_index":120,"title":{},"body":{"classes/User.html":{}}}],["variable",{"_index":288,"title":{},"body":{"coverage.html":{}}}],["variables",{"_index":420,"title":{"miscellaneous/variables.html":{}},"body":{"miscellaneous/variables.html":{}}}],["void",{"_index":175,"title":{},"body":{"classes/UserCreator.html":{}}}],["watch",{"_index":373,"title":{},"body":{"index.html":{}}}],["website",{"_index":405,"title":{},"body":{"index.html":{}}}],["where('it.email",{"_index":191,"title":{},"body":{"classes/UserCreator.html":{}}}],["you'd",{"_index":394,"title":{},"body":{"index.html":{}}}],["zoom",{"_index":9,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}]],"pipeline":["stemmer"]}, + "store": {"modules/AppModule.html":{"url":"modules/AppModule.html","title":"module - AppModule","body":"\n \n\n\n\n\n Modules\n AppModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\ndependencies\n\ncluster_AppModule\n\n\n\ncluster_AppModule_imports\n\n\n\n\nDatabaseModule\n\nDatabaseModule\n\n\n\nAppModule\n\nAppModule\n\nAppModule -->\n\nDatabaseModule->AppModule\n\n\n\n\n\nUsersModule\n\nUsersModule\n\nAppModule -->\n\nUsersModule->AppModule\n\n\n\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n src/app.module.ts\n \n\n\n\n\n\n \n \n \n Imports\n \n \n DatabaseModule\n \n \n UsersModule\n \n \n \n \n \n\n\n \n\n\n \n import { Module } from '@nestjs/common'\nimport { $config } from './config'\nimport { UsersModule } from './domain/users/users.module'\nimport { DatabaseModule } from './libs'\nimport { getEnv } from './shared'\n\nconst imports = [\n\tDatabaseModule.forRoot(...$config.getDatabaseConfig()),\n\tUsersModule.forRoot({ passwordHashSalt: getEnv('LOCAL_HASH_SALT') }),\n]\n\n@Module({ imports })\nexport class AppModule {}\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/CustomExeption.html":{"url":"classes/CustomExeption.html","title":"class - CustomExeption","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n CustomExeption\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/core/exeptions/custom.exeptions.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n isCustom\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n isCustom\n \n \n \n \n \n \n Defined in src/core/exeptions/custom.exeptions.ts:2\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export class CustomExeption {\n\tisCustom: true\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules/DatabaseModule.html":{"url":"modules/DatabaseModule.html","title":"module - DatabaseModule","body":"\n \n\n\n\n\n Modules\n DatabaseModule\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n src/libs/database/database.module.ts\n \n\n\n\n\n\n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n \n \n Static\n forRoot\n \n \n \n \n \n \n \n forRoot(options: Partial, entities: EntitySchema[])\n \n \n\n\n \n \n Defined in src/libs/database/database.module.ts:7\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n options\n \n Partial\n \n\n \n No\n \n\n\n \n \n entities\n \n EntitySchema[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : DynamicModule\n\n \n \n \n \n \n \n \n \n\n \n\n\n \n import { DynamicModule, Global, Module } from '@nestjs/common'\nimport { ConnectionOptions, createConnection, EntitySchema } from 'typeorm'\n\n@Global()\n@Module({})\nexport class DatabaseModule {\n\tstatic forRoot(options: Partial, entities: EntitySchema[]): DynamicModule {\n\t\treturn {\n\t\t\tmodule: DatabaseModule,\n\t\t\timports: [],\n\t\t\tproviders: [\n\t\t\t\t{\n\t\t\t\t\tprovide: 'DATABASE_CONNECTION',\n\t\t\t\t\tuseFactory: async () => {\n\t\t\t\t\t\treturn await createConnection({\n\t\t\t\t\t\t\t...options,\n\t\t\t\t\t\t\tentities,\n\t\t\t\t\t\t} as ConnectionOptions)\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t}\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/IDatabaseAsyncModuleParams.html":{"url":"interfaces/IDatabaseAsyncModuleParams.html","title":"interface - IDatabaseAsyncModuleParams","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n IDatabaseAsyncModuleParams\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/libs/database/interfaces/database-module-params.interfaces.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n \n imports\n \n \n \n \n inject\n \n \n \n \n useFactory\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n imports\n \n \n \n \n \n \n \n \n imports: any[]\n\n \n \n\n\n \n \n Type : any[]\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n inject\n \n \n \n \n \n \n \n \n inject: any[]\n\n \n \n\n\n \n \n Type : any[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n useFactory\n \n \n \n \n \n \n \n \n useFactory: function\n\n \n \n\n\n \n \n Type : function\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { ConnectionOptions } from 'typeorm';\n\nexport interface IDatabaseAsyncModuleParams {\n imports?: any[];\n useFactory: (...args: any[]) => Promise>;\n inject: any[];\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/IUsersService.html":{"url":"interfaces/IUsersService.html","title":"interface - IUsersService","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n IUsersService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/core/namespaces/users.namespace.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Methods\n \n \n \n \n \n \n \n save\n \n \n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n \n \n save\n \n \n \n \n \n \nsave(payload: SaveUserPaylod)\n \n \n\n\n \n \n Defined in src/core/namespaces/users.namespace.ts:89\n \n \n\n\n \n \n Метод для створення користувача\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n Description\n \n \n \n \n payload\n \n SaveUserPaylod\n \n\n \n No\n \n\n\n \n \nДанні нового користувача\n\n\n \n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n Повертає id створеного користувача\n\n \n \n \n \n \n\n\n \n\n\n \n export namespace Users {\n\t/**\n\t * Роль користувача\n\t */\n\texport enum Role {\n\t\tAdmin = 'a',\n\t\tUser = 'u',\n\t}\n\n\t/**\n\t * Базовий інтерфейс користувача\n\t */\n\texport interface UserModel {\n\t\t/** Унікальний ідентифікатор */\n\t\tid: number\n\n\t\t/** Роль користувача, можливі значення Role.Admin, Role.User */\n\t\trole: Role\n\n\t\t/** Почта користувача */\n\t\temail: string\n\n\t\t/** Робочий номер телефону по якому відбуваеться авторизація */\n\t\tphoneNumber: string\n\n\t\t/** Пароль в зашифрованому вигляді */\n\t\tpassword: string\n\n\t\t/** Сіль для шифрування паролю */\n\t\tpasswordSalt: string\n\t}\n\n\t/**\n\t * Інтерфейс інформації про користувача\n\t */\n\texport interface Info {\n\t\t/** Ідентифікатор користувача */\n\t\tuserId: string\n\n\t\t/** Імя користувача*/\n\t\tfirstName: string\n\n\t\t/** Прізвище користувача*/\n\t\tlastName: string\n\n\t\t/** По-батькові */\n\t\tsurname: string\n\n\t\t/** Позиція на роботі */\n\t\tposition: string\n\n\t\t/** Дата народження */\n\t\tdateOfBirth: string\n\n\t\t/** Посилання на зображення користувача */\n\t\tavatarUrl: string\n\n\t\t/** Додаток активований*/\n\t\tisActivedApp: boolean\n\n\t\t/** Дата створення */\n\t\tcreatedAt: string\n\n\t\t/** Дата останньої зміни */\n\t\tupdatedAt: string\n\t}\n\n\texport interface SaveUserPaylod {\n\t\trole: Role\n\t\temail: string\n\t\tphoneNumber: string\n\t\tpassword: string\n\t\tfirstName: string\n\t\tlastName: string\n\t\tsurname: string\n\t\tposition: string\n\t\tdateOfBirth: string\n\t\tavatarUrl: string\n\t\tisActivedApp: boolean\n\t}\n\n\texport interface IUsersService {\n\t\t/**\n\t\t * Метод для створення користувача\n\t\t * @param {SaveUserPaylod} payload - Данні нового користувача\n\t\t * @returns Повертає id створеного користувача\n\t\t */\n\n\t\tsave(payload: SaveUserPaylod): Promise\n\t}\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/Info.html":{"url":"interfaces/Info.html","title":"interface - Info","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n Info\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/core/namespaces/users.namespace.ts\n \n\n\n \n Description\n \n \n Інтерфейс інформації про користувача\n\n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n avatarUrl\n \n \n \n \n createdAt\n \n \n \n \n dateOfBirth\n \n \n \n \n firstName\n \n \n \n \n isActivedApp\n \n \n \n \n lastName\n \n \n \n \n position\n \n \n \n \n surname\n \n \n \n \n updatedAt\n \n \n \n \n userId\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n avatarUrl\n \n \n \n \n \n \n \n \n avatarUrl: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Посилання на зображення користувача\n\n \n \n \n \n \n \n \n \n \n createdAt\n \n \n \n \n \n \n \n \n createdAt: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Дата створення\n\n \n \n \n \n \n \n \n \n \n dateOfBirth\n \n \n \n \n \n \n \n \n dateOfBirth: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Дата народження\n\n \n \n \n \n \n \n \n \n \n firstName\n \n \n \n \n \n \n \n \n firstName: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Імя користувача\n\n \n \n \n \n \n \n \n \n \n isActivedApp\n \n \n \n \n \n \n \n \n isActivedApp: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n\n\n\n\n \n \n Додаток активований\n\n \n \n \n \n \n \n \n \n \n lastName\n \n \n \n \n \n \n \n \n lastName: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Прізвище користувача\n\n \n \n \n \n \n \n \n \n \n position\n \n \n \n \n \n \n \n \n position: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Позиція на роботі\n\n \n \n \n \n \n \n \n \n \n surname\n \n \n \n \n \n \n \n \n surname: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n По-батькові\n\n \n \n \n \n \n \n \n \n \n updatedAt\n \n \n \n \n \n \n \n \n updatedAt: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Дата останньої зміни\n\n \n \n \n \n \n \n \n \n \n userId\n \n \n \n \n \n \n \n \n userId: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Ідентифікатор користувача\n\n \n \n \n \n \n \n\n\n \n export namespace Users {\n\t/**\n\t * Роль користувача\n\t */\n\texport enum Role {\n\t\tAdmin = 'a',\n\t\tUser = 'u',\n\t}\n\n\t/**\n\t * Базовий інтерфейс користувача\n\t */\n\texport interface UserModel {\n\t\t/** Унікальний ідентифікатор */\n\t\tid: number\n\n\t\t/** Роль користувача, можливі значення Role.Admin, Role.User */\n\t\trole: Role\n\n\t\t/** Почта користувача */\n\t\temail: string\n\n\t\t/** Робочий номер телефону по якому відбуваеться авторизація */\n\t\tphoneNumber: string\n\n\t\t/** Пароль в зашифрованому вигляді */\n\t\tpassword: string\n\n\t\t/** Сіль для шифрування паролю */\n\t\tpasswordSalt: string\n\t}\n\n\t/**\n\t * Інтерфейс інформації про користувача\n\t */\n\texport interface Info {\n\t\t/** Ідентифікатор користувача */\n\t\tuserId: string\n\n\t\t/** Імя користувача*/\n\t\tfirstName: string\n\n\t\t/** Прізвище користувача*/\n\t\tlastName: string\n\n\t\t/** По-батькові */\n\t\tsurname: string\n\n\t\t/** Позиція на роботі */\n\t\tposition: string\n\n\t\t/** Дата народження */\n\t\tdateOfBirth: string\n\n\t\t/** Посилання на зображення користувача */\n\t\tavatarUrl: string\n\n\t\t/** Додаток активований*/\n\t\tisActivedApp: boolean\n\n\t\t/** Дата створення */\n\t\tcreatedAt: string\n\n\t\t/** Дата останньої зміни */\n\t\tupdatedAt: string\n\t}\n\n\texport interface SaveUserPaylod {\n\t\trole: Role\n\t\temail: string\n\t\tphoneNumber: string\n\t\tpassword: string\n\t\tfirstName: string\n\t\tlastName: string\n\t\tsurname: string\n\t\tposition: string\n\t\tdateOfBirth: string\n\t\tavatarUrl: string\n\t\tisActivedApp: boolean\n\t}\n\n\texport interface IUsersService {\n\t\t/**\n\t\t * Метод для створення користувача\n\t\t * @param {SaveUserPaylod} payload - Данні нового користувача\n\t\t * @returns Повертає id створеного користувача\n\t\t */\n\n\t\tsave(payload: SaveUserPaylod): Promise\n\t}\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/SaveUserPaylod.html":{"url":"interfaces/SaveUserPaylod.html","title":"interface - SaveUserPaylod","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n SaveUserPaylod\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/core/namespaces/users.namespace.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n avatarUrl\n \n \n \n \n dateOfBirth\n \n \n \n \n email\n \n \n \n \n firstName\n \n \n \n \n isActivedApp\n \n \n \n \n lastName\n \n \n \n \n password\n \n \n \n \n phoneNumber\n \n \n \n \n position\n \n \n \n \n role\n \n \n \n \n surname\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n avatarUrl\n \n \n \n \n \n \n \n \n avatarUrl: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n dateOfBirth\n \n \n \n \n \n \n \n \n dateOfBirth: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n email\n \n \n \n \n \n \n \n \n email: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n firstName\n \n \n \n \n \n \n \n \n firstName: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n isActivedApp\n \n \n \n \n \n \n \n \n isActivedApp: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n lastName\n \n \n \n \n \n \n \n \n lastName: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n password\n \n \n \n \n \n \n \n \n password: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n phoneNumber\n \n \n \n \n \n \n \n \n phoneNumber: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n position\n \n \n \n \n \n \n \n \n position: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n role\n \n \n \n \n \n \n \n \n role: Role\n\n \n \n\n\n \n \n Type : Role\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n surname\n \n \n \n \n \n \n \n \n surname: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n export namespace Users {\n\t/**\n\t * Роль користувача\n\t */\n\texport enum Role {\n\t\tAdmin = 'a',\n\t\tUser = 'u',\n\t}\n\n\t/**\n\t * Базовий інтерфейс користувача\n\t */\n\texport interface UserModel {\n\t\t/** Унікальний ідентифікатор */\n\t\tid: number\n\n\t\t/** Роль користувача, можливі значення Role.Admin, Role.User */\n\t\trole: Role\n\n\t\t/** Почта користувача */\n\t\temail: string\n\n\t\t/** Робочий номер телефону по якому відбуваеться авторизація */\n\t\tphoneNumber: string\n\n\t\t/** Пароль в зашифрованому вигляді */\n\t\tpassword: string\n\n\t\t/** Сіль для шифрування паролю */\n\t\tpasswordSalt: string\n\t}\n\n\t/**\n\t * Інтерфейс інформації про користувача\n\t */\n\texport interface Info {\n\t\t/** Ідентифікатор користувача */\n\t\tuserId: string\n\n\t\t/** Імя користувача*/\n\t\tfirstName: string\n\n\t\t/** Прізвище користувача*/\n\t\tlastName: string\n\n\t\t/** По-батькові */\n\t\tsurname: string\n\n\t\t/** Позиція на роботі */\n\t\tposition: string\n\n\t\t/** Дата народження */\n\t\tdateOfBirth: string\n\n\t\t/** Посилання на зображення користувача */\n\t\tavatarUrl: string\n\n\t\t/** Додаток активований*/\n\t\tisActivedApp: boolean\n\n\t\t/** Дата створення */\n\t\tcreatedAt: string\n\n\t\t/** Дата останньої зміни */\n\t\tupdatedAt: string\n\t}\n\n\texport interface SaveUserPaylod {\n\t\trole: Role\n\t\temail: string\n\t\tphoneNumber: string\n\t\tpassword: string\n\t\tfirstName: string\n\t\tlastName: string\n\t\tsurname: string\n\t\tposition: string\n\t\tdateOfBirth: string\n\t\tavatarUrl: string\n\t\tisActivedApp: boolean\n\t}\n\n\texport interface IUsersService {\n\t\t/**\n\t\t * Метод для створення користувача\n\t\t * @param {SaveUserPaylod} payload - Данні нового користувача\n\t\t * @returns Повертає id створеного користувача\n\t\t */\n\n\t\tsave(payload: SaveUserPaylod): Promise\n\t}\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/User.html":{"url":"classes/User.html","title":"class - User","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n User\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/domain/users/entities/user.entity.ts\n \n\n\n\n\n \n Implements\n \n \n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n email\n \n \n id\n \n \n password\n \n \n passwordSalt\n \n \n phoneNumber\n \n \n role\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n email\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Decorators : \n \n \n @Column({type: 'varchar', nullable: false, unique: true})\n \n \n \n \n \n Defined in src/domain/users/entities/user.entity.ts:13\n \n \n\n\n \n \n \n \n \n \n \n \n id\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Decorators : \n \n \n @PrimaryGeneratedColumn()\n \n \n \n \n \n Defined in src/domain/users/entities/user.entity.ts:7\n \n \n\n\n \n \n \n \n \n \n \n \n password\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Decorators : \n \n \n @Column({type: 'varchar', nullable: false, select: false})\n \n \n \n \n \n Defined in src/domain/users/entities/user.entity.ts:19\n \n \n\n\n \n \n \n \n \n \n \n \n passwordSalt\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Decorators : \n \n \n @Column({type: 'varchar', nullable: false, select: false})\n \n \n \n \n \n Defined in src/domain/users/entities/user.entity.ts:22\n \n \n\n\n \n \n \n \n \n \n \n \n phoneNumber\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Decorators : \n \n \n @Column({type: 'varchar', nullable: false, unique: true})\n \n \n \n \n \n Defined in src/domain/users/entities/user.entity.ts:16\n \n \n\n\n \n \n \n \n \n \n \n \n role\n \n \n \n \n \n \n Type : Users.Role\n\n \n \n \n \n Decorators : \n \n \n @Column({type: 'char', default: undefined, nullable: false})\n \n \n \n \n \n Defined in src/domain/users/entities/user.entity.ts:10\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n import { Users } from 'src/core'\nimport { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'\n\n@Entity('users')\nexport class User implements Users.UserModel {\n\t@PrimaryGeneratedColumn()\n\tid: number\n\n\t@Column({ type: 'char', default: Users.Role.User, nullable: false })\n\trole: Users.Role\n\n\t@Column({ type: 'varchar', nullable: false, unique: true })\n\temail: string\n\n\t@Column({ type: 'varchar', nullable: false, unique: true })\n\tphoneNumber: string\n\n\t@Column({ type: 'varchar', nullable: false, select: false })\n\tpassword: string\n\n\t@Column({ type: 'varchar', nullable: false, select: false })\n\tpasswordSalt: string\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/UserAlreadyExistException.html":{"url":"classes/UserAlreadyExistException.html","title":"class - UserAlreadyExistException","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n UserAlreadyExistException\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/core/exeptions/users.exeptions.ts\n \n\n\n\n \n Extends\n \n \n CustomExeption\n \n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n isCustom\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n isCustom\n \n \n \n \n \n \n Inherited from CustomExeption\n\n \n \n \n \n Defined in CustomExeption:2\n\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n import { CustomExeption } from './custom.exeptions'\n\nexport class UserAlreadyExistException extends CustomExeption {}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/UserCreator.html":{"url":"classes/UserCreator.html","title":"class - UserCreator","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n UserCreator\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/domain/users/classes/user-creator.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Private\n infoRepository\n \n \n Private\n payload\n \n \n Private\n userRepository\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n Private\n Async\n createUser\n \n \n Public\n Async\n go\n \n \n Private\n onError\n \n \n Private\n preparePayload\n \n \n Public\n setPaylod\n \n \n Public\n setRepository\n \n \n Private\n Async\n validate\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(payload: Users.SaveUserPaylod)\n \n \n \n \n Defined in src/domain/users/classes/user-creator.ts:8\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n payload\n \n \n Users.SaveUserPaylod\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Private\n infoRepository\n \n \n \n \n \n \n Type : Repository\n\n \n \n \n \n Defined in src/domain/users/classes/user-creator.ts:7\n \n \n\n\n \n \n \n \n \n \n \n \n Private\n payload\n \n \n \n \n \n \n Type : Users.SaveUserPaylod\n\n \n \n \n \n Defined in src/domain/users/classes/user-creator.ts:8\n \n \n\n\n \n \n \n \n \n \n \n \n Private\n userRepository\n \n \n \n \n \n \n Type : Repository\n\n \n \n \n \n Defined in src/domain/users/classes/user-creator.ts:6\n \n \n\n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Private\n Async\n createUser\n \n \n \n \n \n \n \n createUser()\n \n \n\n\n \n \n Defined in src/domain/users/classes/user-creator.ts:37\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n Public\n Async\n go\n \n \n \n \n \n \n \n go()\n \n \n\n\n \n \n Defined in src/domain/users/classes/user-creator.ts:55\n \n \n\n\n \n \n\n \n Returns : unknown\n\n \n \n \n \n \n \n \n \n \n \n \n Private\n onError\n \n \n \n \n \n \n \n onError(error: any)\n \n \n\n\n \n \n Defined in src/domain/users/classes/user-creator.ts:32\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n error\n \n any\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Private\n preparePayload\n \n \n \n \n \n \n \n preparePayload(payload: Users.SaveUserPaylod)\n \n \n\n\n \n \n Defined in src/domain/users/classes/user-creator.ts:25\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n payload\n \n Users.SaveUserPaylod\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Users.SaveUserPaylod\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Public\n setPaylod\n \n \n \n \n \n \n \n setPaylod(payload: Users.SaveUserPaylod)\n \n \n\n\n \n \n Defined in src/domain/users/classes/user-creator.ts:46\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n payload\n \n Users.SaveUserPaylod\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : this\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Public\n setRepository\n \n \n \n \n \n \n \n setRepository(repository: Repository)\n \n \n\n\n \n \n Defined in src/domain/users/classes/user-creator.ts:50\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n repository\n \n Repository\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : this\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Private\n Async\n validate\n \n \n \n \n \n \n \n validate(payload: Users.SaveUserPaylod)\n \n \n\n\n \n \n Defined in src/domain/users/classes/user-creator.ts:14\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n payload\n \n Users.SaveUserPaylod\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { UserAlreadyExistException, Users } from 'src/core'\nimport { formatPhoneNumber } from 'src/shared'\nimport { Repository } from 'typeorm'\n\nexport class UserCreator {\n\tprivate userRepository: Repository\n\tprivate infoRepository: Repository\n\tprivate payload: Users.SaveUserPaylod\n\n\tconstructor(payload: Users.SaveUserPaylod) {\n\t\tthis.setPaylod(payload)\n\t}\n\n\tprivate async validate(payload: Users.SaveUserPaylod) {\n\t\tconst existUser = await this.userRepository\n\t\t\t.createQueryBuilder('it')\n\t\t\t.select('it.id')\n\t\t\t.where('it.email = :email', { email: payload.email })\n\t\t\t.orWhere('it.phoneNumber = :phoneNumber', { phoneNumber: payload.phoneNumber })\n\t\t\t.getOne()\n\n\t\tif (existUser) throw new UserAlreadyExistException()\n\t}\n\n\tprivate preparePayload(payload: Users.SaveUserPaylod): Users.SaveUserPaylod {\n\t\treturn {\n\t\t\t...payload,\n\t\t\tphoneNumber: formatPhoneNumber(payload.phoneNumber),\n\t\t}\n\t}\n\n\tprivate onError(error: any) {\n\t\tconsole.log('UserCreator: Error: ', error)\n\t\tif (error.isCustom) throw error\n\t}\n\n\tprivate async createUser() {\n\t\tawait this.userRepository.insert({\n\t\t\temail: this.payload.email,\n\t\t\tpassword: this.payload.password,\n\t\t\tpasswordSalt: this.payload.passwordSalt,\n\t\t\tphoneNumber: this.payload.phoneNumber,\n\t\t})\n\t}\n\n\tpublic setPaylod(payload: Users.SaveUserPaylod) {\n\t\tthis.payload = this.preparePayload(payload)\n\t\treturn this\n\t}\n\tpublic setRepository(repository: Repository) {\n\t\tthis.userRepository = repository\n\t\treturn this\n\t}\n\n\tpublic async go() {\n\t\ttry {\n\t\t\tif (!this.userRepository || !this.payload) throw new Error('User creator not prepared')\n\n\t\t\tawait this.validate(this.payload)\n\n\t\t\treturn this.payload\n\t\t} catch (e) {\n\t\t\tthis.onError(e)\n\t\t}\n\t}\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/UserModel.html":{"url":"interfaces/UserModel.html","title":"interface - UserModel","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n UserModel\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/core/namespaces/users.namespace.ts\n \n\n\n \n Description\n \n \n Базовий інтерфейс користувача\n\n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n email\n \n \n \n \n id\n \n \n \n \n password\n \n \n \n \n passwordSalt\n \n \n \n \n phoneNumber\n \n \n \n \n role\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n email\n \n \n \n \n \n \n \n \n email: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Почта користувача\n\n \n \n \n \n \n \n \n \n \n id\n \n \n \n \n \n \n \n \n id: number\n\n \n \n\n\n \n \n Type : number\n\n \n \n\n\n\n\n\n \n \n Унікальний ідентифікатор\n\n \n \n \n \n \n \n \n \n \n password\n \n \n \n \n \n \n \n \n password: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Пароль в зашифрованому вигляді\n\n \n \n \n \n \n \n \n \n \n passwordSalt\n \n \n \n \n \n \n \n \n passwordSalt: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Сіль для шифрування паролю\n\n \n \n \n \n \n \n \n \n \n phoneNumber\n \n \n \n \n \n \n \n \n phoneNumber: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Робочий номер телефону по якому відбуваеться авторизація\n\n \n \n \n \n \n \n \n \n \n role\n \n \n \n \n \n \n \n \n role: Role\n\n \n \n\n\n \n \n Type : Role\n\n \n \n\n\n\n\n\n \n \n Роль користувача, можливі значення Role.Admin, Role.User\n\n \n \n \n \n \n \n\n\n \n export namespace Users {\n\t/**\n\t * Роль користувача\n\t */\n\texport enum Role {\n\t\tAdmin = 'a',\n\t\tUser = 'u',\n\t}\n\n\t/**\n\t * Базовий інтерфейс користувача\n\t */\n\texport interface UserModel {\n\t\t/** Унікальний ідентифікатор */\n\t\tid: number\n\n\t\t/** Роль користувача, можливі значення Role.Admin, Role.User */\n\t\trole: Role\n\n\t\t/** Почта користувача */\n\t\temail: string\n\n\t\t/** Робочий номер телефону по якому відбуваеться авторизація */\n\t\tphoneNumber: string\n\n\t\t/** Пароль в зашифрованому вигляді */\n\t\tpassword: string\n\n\t\t/** Сіль для шифрування паролю */\n\t\tpasswordSalt: string\n\t}\n\n\t/**\n\t * Інтерфейс інформації про користувача\n\t */\n\texport interface Info {\n\t\t/** Ідентифікатор користувача */\n\t\tuserId: string\n\n\t\t/** Імя користувача*/\n\t\tfirstName: string\n\n\t\t/** Прізвище користувача*/\n\t\tlastName: string\n\n\t\t/** По-батькові */\n\t\tsurname: string\n\n\t\t/** Позиція на роботі */\n\t\tposition: string\n\n\t\t/** Дата народження */\n\t\tdateOfBirth: string\n\n\t\t/** Посилання на зображення користувача */\n\t\tavatarUrl: string\n\n\t\t/** Додаток активований*/\n\t\tisActivedApp: boolean\n\n\t\t/** Дата створення */\n\t\tcreatedAt: string\n\n\t\t/** Дата останньої зміни */\n\t\tupdatedAt: string\n\t}\n\n\texport interface SaveUserPaylod {\n\t\trole: Role\n\t\temail: string\n\t\tphoneNumber: string\n\t\tpassword: string\n\t\tfirstName: string\n\t\tlastName: string\n\t\tsurname: string\n\t\tposition: string\n\t\tdateOfBirth: string\n\t\tavatarUrl: string\n\t\tisActivedApp: boolean\n\t}\n\n\texport interface IUsersService {\n\t\t/**\n\t\t * Метод для створення користувача\n\t\t * @param {SaveUserPaylod} payload - Данні нового користувача\n\t\t * @returns Повертає id створеного користувача\n\t\t */\n\n\t\tsave(payload: SaveUserPaylod): Promise\n\t}\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules/UsersModule.html":{"url":"modules/UsersModule.html","title":"module - UsersModule","body":"\n \n\n\n\n\n Modules\n UsersModule\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n src/domain/users/users.module.ts\n \n\n\n\n\n\n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n \n \n Static\n forFeature\n \n \n \n \n \n \n \n forFeature()\n \n \n\n\n \n \n Defined in src/domain/users/users.module.ts:29\n \n \n\n\n \n \n\n \n Returns : DynamicModule\n\n \n \n \n \n \n \n \n \n \n \n \n Static\n forRoot\n \n \n \n \n \n \n \n forRoot(options: UsersModuleOptions)\n \n \n\n\n \n \n Defined in src/domain/users/users.module.ts:21\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n options\n \n UsersModuleOptions\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : DynamicModule\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Static\n getProviders\n \n \n \n \n \n \n \n getProviders()\n \n \n\n\n \n \n Defined in src/domain/users/users.module.ts:12\n \n \n\n\n \n \n\n \n Returns : {}\n\n \n \n \n \n \n\n \n\n\n \n import { DynamicModule, Module } from '@nestjs/common'\nimport { provideEntity } from 'src/libs'\nimport { PASSWORD_HASH_SALT, USERS_REPOSITORY } from './consts'\nimport { User } from './entities'\nimport { UsersModuleOptions } from './interfaces'\nimport { UsersService } from './services'\n\n@Module({})\nexport class UsersModule {\n\tstatic options: UsersModuleOptions\n\n\tstatic getProviders() {\n\t\treturn [\n\t\t\t{\n\t\t\t\tprovide: PASSWORD_HASH_SALT,\n\t\t\t\tuseValue: UsersModule.options.passwordHashSalt,\n\t\t\t},\n\t\t]\n\t}\n\n\tstatic forRoot(options: UsersModuleOptions): DynamicModule {\n\t\tUsersModule.options = options\n\n\t\treturn {\n\t\t\tmodule: UsersModule,\n\t\t}\n\t}\n\n\tstatic forFeature(): DynamicModule {\n\t\treturn {\n\t\t\tmodule: UsersModule,\n\t\t\tproviders: [\n\t\t\t\tUsersService,\n\t\t\t\t{\n\t\t\t\t\tprovide: PASSWORD_HASH_SALT,\n\t\t\t\t\tuseValue: UsersModule.options.passwordHashSalt,\n\t\t\t\t},\n\t\t\t\tprovideEntity(USERS_REPOSITORY, User),\n\t\t\t],\n\t\t}\n\t}\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/UsersModuleOptions.html":{"url":"interfaces/UsersModuleOptions.html","title":"interface - UsersModuleOptions","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n UsersModuleOptions\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/domain/users/interfaces/users-module-options.interface.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n passwordHashSalt\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n passwordHashSalt\n \n \n \n \n \n \n \n \n passwordHashSalt: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n export interface UsersModuleOptions {\n\tpasswordHashSalt: string\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/UsersPasswordsService.html":{"url":"injectables/UsersPasswordsService.html","title":"injectable - UsersPasswordsService","body":"\n \n\n\n\n\n\n\n\n\n Injectables\n UsersPasswordsService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/domain/users/services/users-passwords.service.ts\n \n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Private\n localHashSalt\n \n \n Private\n Readonly\n saltRounds\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n Private\n Async\n comparePass\n \n \n Public\n createUserSalt\n \n \n Private\n getSalt\n \n \n Public\n Async\n hashPassword\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Private\n Async\n comparePass\n \n \n \n \n \n \n \n comparePass(password: string, salt: string, hash: string)\n \n \n\n\n \n \n Defined in src/domain/users/services/users-passwords.service.ts:29\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n password\n \n string\n \n\n \n No\n \n\n\n \n \n salt\n \n string\n \n\n \n No\n \n\n\n \n \n hash\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Public\n createUserSalt\n \n \n \n \n \n \n \n createUserSalt()\n \n \n\n\n \n \n Defined in src/domain/users/services/users-passwords.service.ts:33\n \n \n\n\n \n \n\n \n Returns : string\n\n \n \n \n \n \n \n \n \n \n \n \n Private\n getSalt\n \n \n \n \n \n \n \n getSalt(userSalt: string)\n \n \n\n\n \n \n Defined in src/domain/users/services/users-passwords.service.ts:37\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n userSalt\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Public\n Async\n hashPassword\n \n \n \n \n \n \n \n hashPassword(password: string, salt: string)\n \n \n\n\n \n \n Defined in src/domain/users/services/users-passwords.service.ts:25\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n password\n \n string\n \n\n \n No\n \n\n\n \n \n salt\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Private\n localHashSalt\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Decorators : \n \n \n @Inject(PASSWORD_HASH_SALT)\n \n \n \n \n \n Defined in src/domain/users/services/users-passwords.service.ts:12\n \n \n\n\n \n \n \n \n \n \n \n \n Private\n Readonly\n saltRounds\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Default value : 10\n \n \n \n \n Defined in src/domain/users/services/users-passwords.service.ts:9\n \n \n\n\n \n \n\n\n \n\n\n \n import { Inject, Injectable } from '@nestjs/common'\nimport * as bcrypt from 'bcryptjs'\nimport * as randomstring from 'randomstring'\nimport { Repository } from 'typeorm'\nimport { PASSWORD_HASH_SALT } from '../consts'\n\n@Injectable()\nexport class UsersPasswordsService {\n\tprivate readonly saltRounds = 10\n\n\t@Inject(PASSWORD_HASH_SALT)\n\tprivate localHashSalt: string\n\n\t// public async compareUserPasswords(userId: number, password: string) {\n\t// \tconst user = await this.usersRepository.findOne({id: userId})\n\t// \treturn this.comparePass(password, user.passwordSalt, user.password)\n\t// }\n\n\t// public async changeUserPassword(userId: number, newPassword: string): Promise {\n\t// \tconst user = await this.usersRepository.findOne({id: userId})\n\t// \tuser.password = await this.hashPassword(newPassword, user.passwordSalt)\n\t// \tawait this.usersRepository.save(user)\n\t// }\n\n\tpublic async hashPassword(password: string, salt: string): Promise {\n\t\treturn bcrypt.hash(this.getSalt(salt) + password, this.saltRounds)\n\t}\n\n\tprivate async comparePass(password: string, salt: string, hash: string): Promise {\n\t\treturn await bcrypt.compare(this.getSalt(salt) + password, hash)\n\t}\n\n\tpublic createUserSalt(): string {\n\t\treturn randomstring.generate(10)\n\t}\n\n\tprivate getSalt(userSalt: string): string {\n\t\treturn this.localHashSalt + userSalt\n\t}\n}\n\n \n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/UsersService.html":{"url":"injectables/UsersService.html","title":"injectable - UsersService","body":"\n \n\n\n\n\n\n\n\n\n Injectables\n UsersService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/domain/users/services/users.service.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Public\n Async\n save\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Public\n Async\n save\n \n \n \n \n \n \n \n save(payload: Users.SaveUserPaylod)\n \n \n\n\n \n \n Defined in src/domain/users/services/users.service.ts:12\n \n \n\n\n \n \n Метод для отримання користувача по його ідентифікатору\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n payload\n \n Users.SaveUserPaylod\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : unknown\n\n \n \n Обект користувача\n\n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@nestjs/common'\nimport { Users } from 'src/core'\n\n@Injectable()\nexport class UsersService implements Users.Service {\n\t/**\n\t * Метод для отримання користувача по його ідентифікатору\n\t * @id Ідентифікатор користувача\n\t * @payload - Данні нового користувача {{}}\n\t * @returns Обект користувача\n\t */\n\tpublic async save(payload: Users.SaveUserPaylod) {\n\t\treturn 1\n\t}\n}\n\n \n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"coverage.html":{"url":"coverage.html","title":"coverage - coverage","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n Documentation coverage\n\n\n\n \n\n\n\n \n \n File\n Type\n Identifier\n Statements\n \n \n \n \n \n \n src/app.module.ts\n \n variable\n imports\n \n 0 %\n (0/1)\n \n \n \n \n \n src/config/index.ts\n \n variable\n $config\n \n 0 %\n (0/1)\n \n \n \n \n \n src/config/index.ts\n \n variable\n getDatabaseConfig\n \n 0 %\n (0/1)\n \n \n \n \n \n src/core/exeptions/custom.exeptions.ts\n \n class\n CustomExeption\n \n 0 %\n (0/2)\n \n \n \n \n \n src/core/exeptions/users.exeptions.ts\n \n class\n UserAlreadyExistException\n \n 0 %\n (0/2)\n \n \n \n \n \n src/core/namespaces/users.namespace.ts\n \n interface\n Info\n \n 100 %\n (11/11)\n \n \n \n \n \n src/core/namespaces/users.namespace.ts\n \n interface\n IUsersService\n \n 50 %\n (1/2)\n \n \n \n \n \n src/core/namespaces/users.namespace.ts\n \n interface\n SaveUserPaylod\n \n 0 %\n (0/12)\n \n \n \n \n \n src/core/namespaces/users.namespace.ts\n \n interface\n UserModel\n \n 100 %\n (7/7)\n \n \n \n \n \n src/domain/users/classes/user-creator.ts\n \n class\n UserCreator\n \n 0 %\n (0/12)\n \n \n \n \n \n src/domain/users/consts/index.ts\n \n variable\n PASSWORD_HASH_SALT\n \n 0 %\n (0/1)\n \n \n \n \n \n src/domain/users/consts/index.ts\n \n variable\n USERS_INFOS_REPOSITORY\n \n 0 %\n (0/1)\n \n \n \n \n \n src/domain/users/consts/index.ts\n \n variable\n USERS_REPOSITORY\n \n 0 %\n (0/1)\n \n \n \n \n \n src/domain/users/entities/index.ts\n \n variable\n USERS_ENTITIES\n \n 0 %\n (0/1)\n \n \n \n \n \n src/domain/users/entities/user.entity.ts\n \n class\n User\n \n 0 %\n (0/7)\n \n \n \n \n \n src/domain/users/interfaces/users-module-options.interface.ts\n \n interface\n UsersModuleOptions\n \n 0 %\n (0/2)\n \n \n \n \n \n src/domain/users/services/index.ts\n \n variable\n USERS_SERVICES\n \n 0 %\n (0/1)\n \n \n \n \n \n src/domain/users/services/users-passwords.service.ts\n \n injectable\n UsersPasswordsService\n \n 0 %\n (0/7)\n \n \n \n \n \n src/domain/users/services/users.service.ts\n \n injectable\n UsersService\n \n 50 %\n (1/2)\n \n \n \n \n \n src/libs/database/helpers/get-repository.helper.ts\n \n variable\n provideCustomRepository\n \n 0 %\n (0/1)\n \n \n \n \n \n src/libs/database/helpers/get-repository.helper.ts\n \n variable\n provideEntity\n \n 0 %\n (0/1)\n \n \n \n \n \n src/libs/database/interfaces/database-module-params.interfaces.ts\n \n interface\n IDatabaseAsyncModuleParams\n \n 0 %\n (0/4)\n \n \n \n \n \n src/main.ts\n \n function\n bootstrap\n \n 0 %\n (0/1)\n \n \n \n \n \n src/shared/helpers/get-env.helpers.ts\n \n variable\n getEnv\n \n 0 %\n (0/1)\n \n \n \n \n \n src/shared/helpers/phone-number.helpers.ts\n \n variable\n formatPhoneNumber\n \n 0 %\n (0/1)\n \n \n \n\n\n\n\n\n new Tablesort(document.getElementById('coverage-table'));\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"dependencies.html":{"url":"dependencies.html","title":"package-dependencies - dependencies","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n Dependencies\n \n \n \n @nestjs/common : ^7.0.0\n \n @nestjs/core : ^7.0.0\n \n @nestjs/platform-express : ^7.0.0\n \n @nestjs/typeorm : ^8.0.1\n \n awesome-phonenumber : ^2.55.0\n \n dotenv : ^10.0.0\n \n pg : ^8.7.1\n \n randomstring : ^1.2.1\n \n reflect-metadata : ^0.1.13\n \n rimraf : ^3.0.2\n \n rxjs : ^6.5.4\n \n secure-compare : ^3.0.1\n \n typeorm : ^0.2.36\n \n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/enumerations.html":{"url":"miscellaneous/enumerations.html","title":"miscellaneous-enumerations - enumerations","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n Miscellaneous\n Enumerations\n\n\n\n Index\n \n \n \n \n \n \n Role   (src/.../users.namespace.ts)\n \n \n \n \n \n \n\n\n src/core/namespaces/users.namespace.ts\n \n \n \n \n \n \n Role\n \n \n \n \n Роль користувача\n\n \n \n \n \n  Admin\n \n \n \n \n Value : a\n \n \n \n \n  User\n \n \n \n \n Value : u\n \n \n \n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/functions.html":{"url":"miscellaneous/functions.html","title":"miscellaneous-functions - functions","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n Miscellaneous\n Functions\n\n\n\n Index\n \n \n \n \n \n \n bootstrap   (src/.../main.ts)\n \n \n \n \n \n \n\n\n src/main.ts\n \n \n \n \n \n \n \n bootstrap\n \n \n \n \n \n \nbootstrap()\n \n \n\n\n\n\n \n \n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"index.html":{"url":"index.html","title":"getting-started - index","body":"\n \n\n\n \n\n\n A progressive Node.js framework for building efficient and scalable server-side applications, heavily inspired by Angular.\n \n\n\n\n\n\n\n\n\n\n \n \n\n \n\nDescription\nNest framework TypeScript starter repository.\nInstallation\n$ npm installRunning the app\n# development\n$ npm run start\n\n# watch mode\n$ npm run start:dev\n\n# production mode\n$ npm run start:prodTest\n# unit tests\n$ npm run test\n\n# e2e tests\n$ npm run test:e2e\n\n# test coverage\n$ npm run test:covSupport\nNest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.\nStay in touch\n\nAuthor - Kamil Myśliwiec\nWebsite - https://nestjs.com\nTwitter - @nestframework\n\nLicense\n Nest is MIT licensed.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules.html":{"url":"modules.html","title":"modules - modules","body":"\n \n\n\n\n\n Modules\n\n\n \n \n \n \n AppModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n DatabaseModule\n \n \n \n No graph available.\n \n \n Browse\n \n \n \n \n \n \n \n UsersModule\n \n \n \n No graph available.\n \n \n Browse\n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"overview.html":{"url":"overview.html","title":"overview - overview","body":"\n \n\n\n\n Overview\n\n \n\n \n \n\n\n\n\n\ndependencies\n\ndependencies\n\ncluster_AppModule\n\n\n\ncluster_AppModule_imports\n\n\n\n\nDatabaseModule\n\nDatabaseModule\n\n\n\nAppModule\n\nAppModule\n\nAppModule -->\n\nDatabaseModule->AppModule\n\n\n\n\n\nUsersModule\n\nUsersModule\n\nAppModule -->\n\nUsersModule->AppModule\n\n\n\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n \n\n \n \n \n \n \n \n 3 Modules\n \n \n \n \n \n \n \n \n 2 Injectables\n \n \n \n \n \n \n \n 4 Classes\n \n \n \n \n \n \n \n 6 Interfaces\n \n \n \n \n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/variables.html":{"url":"miscellaneous/variables.html","title":"miscellaneous-variables - variables","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n Miscellaneous\n Variables\n\n\n\n Index\n \n \n \n \n \n \n $config   (src/.../index.ts)\n \n \n formatPhoneNumber   (src/.../phone-number.helpers.ts)\n \n \n getDatabaseConfig   (src/.../index.ts)\n \n \n getEnv   (src/.../get-env.helpers.ts)\n \n \n imports   (src/.../app.module.ts)\n \n \n PASSWORD_HASH_SALT   (src/.../index.ts)\n \n \n provideCustomRepository   (src/.../get-repository.helper.ts)\n \n \n provideEntity   (src/.../get-repository.helper.ts)\n \n \n USERS_ENTITIES   (src/.../index.ts)\n \n \n USERS_INFOS_REPOSITORY   (src/.../index.ts)\n \n \n USERS_REPOSITORY   (src/.../index.ts)\n \n \n USERS_SERVICES   (src/.../index.ts)\n \n \n \n \n \n \n\n\n src/config/index.ts\n \n \n \n \n \n \n \n $config\n \n \n \n \n \n \n Type : object\n\n \n \n \n \n Default value : {\n\tgetDatabaseConfig,\n}\n \n \n\n\n \n \n \n \n \n \n \n \n getDatabaseConfig\n \n \n \n \n \n \n Default value : (): Parameters => {\n\treturn [\n\t\t{\n\t\t\ttype: 'postgres',\n\t\t\thost: process.env.DATABASE_HOST,\n\t\t\tport: Number(process.env.DATABASE_PORT),\n\t\t\tusername: process.env.DATABASE_USER,\n\t\t\tpassword: process.env.DATABASE_PASS,\n\t\t\tdatabase: process.env.DATABASE_DB,\n\t\t\tsynchronize: true,\n\t\t},\n\t\t[],\n\t]\n}\n \n \n\n\n \n \n\n src/shared/helpers/phone-number.helpers.ts\n \n \n \n \n \n \n \n formatPhoneNumber\n \n \n \n \n \n \n Default value : (phoneNumber: string) => {\n\treturn new PhoneNumber(phoneNumber).getNumber('e164')\n}\n \n \n\n\n \n \n\n src/shared/helpers/get-env.helpers.ts\n \n \n \n \n \n \n \n getEnv\n \n \n \n \n \n \n Default value : (name: string): string => {\n\tconst value = process.env[name]\n\n\tif (value === undefined || value === null) throw new Error('Not found env var: ' + name)\n\n\treturn value\n}\n \n \n\n\n \n \n\n src/app.module.ts\n \n \n \n \n \n \n \n imports\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : [\n\tDatabaseModule.forRoot(...$config.getDatabaseConfig()),\n\tUsersModule.forRoot({ passwordHashSalt: getEnv('LOCAL_HASH_SALT') }),\n]\n \n \n\n\n \n \n\n src/domain/users/consts/index.ts\n \n \n \n \n \n \n \n PASSWORD_HASH_SALT\n \n \n \n \n \n \n Default value : Symbol('PASSWORD_HASH_SALT')\n \n \n\n\n \n \n \n \n \n \n \n \n USERS_INFOS_REPOSITORY\n \n \n \n \n \n \n Default value : Symbol('USERS_INFOS_REPOSITORY')\n \n \n\n\n \n \n \n \n \n \n \n \n USERS_REPOSITORY\n \n \n \n \n \n \n Default value : Symbol('USERS_REPOSITORY')\n \n \n\n\n \n \n\n src/libs/database/helpers/get-repository.helper.ts\n \n \n \n \n \n \n \n provideCustomRepository\n \n \n \n \n \n \n Default value : (name, repo) => {\n\treturn {\n\t\tprovide: name,\n\t\tuseFactory: (connection: Connection) => connection.getCustomRepository(repo),\n\t\tinject: [Connection],\n\t}\n}\n \n \n\n\n \n \n \n \n \n \n \n \n provideEntity\n \n \n \n \n \n \n Default value : (name, entity) => {\n\treturn {\n\t\tprovide: name,\n\t\tuseFactory: (connection: Connection) => connection.getRepository(entity),\n\t\tinject: [Connection],\n\t}\n}\n \n \n\n\n \n \n\n src/domain/users/entities/index.ts\n \n \n \n \n \n \n \n USERS_ENTITIES\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : [User]\n \n \n\n\n \n \n\n src/domain/users/services/index.ts\n \n \n \n \n \n \n \n USERS_SERVICES\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : [UsersPasswordsService]\n \n \n\n\n \n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"}} } diff --git a/documentation/miscellaneous/enumerations.html b/documentation/miscellaneous/enumerations.html index d326dd6..b5f1221 100644 --- a/documentation/miscellaneous/enumerations.html +++ b/documentation/miscellaneous/enumerations.html @@ -3,18 +3,19 @@ - api-taskme documentation + TaskMe + @@ -59,10 +60,7 @@ @@ -71,7 +69,7 @@ -

                    src/core/enums/role.enum.ts

                    +

                    src/core/namespaces/users.namespace.ts

                    @@ -110,45 +108,6 @@
                    -

                    src/core/namespaces/users.namespace.ts

                    -
                    - - - - - - - - - - - - - - - - - - - - - -
                    - - TRole -
                    -

                    Роль користувача

                    -
                    -
                    -  Admin -
                    - Value : a -
                    -  User -
                    - Value : u -
                    -
                    diff --git a/documentation/miscellaneous/functions.html b/documentation/miscellaneous/functions.html index f1cdf37..c75b874 100644 --- a/documentation/miscellaneous/functions.html +++ b/documentation/miscellaneous/functions.html @@ -3,18 +3,19 @@ - api-taskme documentation + TaskMe + diff --git a/documentation/miscellaneous/typealiases.html b/documentation/miscellaneous/typealiases.html new file mode 100644 index 0000000..11ea62f --- /dev/null +++ b/documentation/miscellaneous/typealiases.html @@ -0,0 +1,141 @@ + + + + + + api-taskme documentation + + + + + + + + + + + + + +
                    +
                    + + +
                    +
                    + + + + + + + + + + + + + + + + + + +
                    +

                    Index

                    + + + + + + +
                    + +
                    +
                    + +

                    src/core/namespaces/users.namespace.ts

                    +
                    + + + + + + + + + +
                    + + SaveUserPaylod +
                    + + +
                    +
                    + + +
                    +
                    +

                    result-matching ""

                    +
                      +
                      +
                      +

                      No results matching ""

                      +
                      +
                      +
                      + +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/miscellaneous/variables.html b/documentation/miscellaneous/variables.html index a5b7e86..41e2b08 100644 --- a/documentation/miscellaneous/variables.html +++ b/documentation/miscellaneous/variables.html @@ -3,18 +3,19 @@ - api-taskme documentation + TaskMe + @@ -61,18 +62,39 @@
                    • $config   (src/.../index.ts)
                    • +
                    • + formatPhoneNumber   (src/.../phone-number.helpers.ts) +
                    • getDatabaseConfig   (src/.../index.ts)
                    • - getRepositoryHelper   (src/.../get-repository.helper.ts) + getEnv   (src/.../get-env.helpers.ts)
                    • imports   (src/.../app.module.ts)
                    • +
                    • + PASSWORD_HASH_SALT   (src/.../index.ts) +
                    • +
                    • + provideCustomRepository   (src/.../get-repository.helper.ts) +
                    • +
                    • + provideEntity   (src/.../get-repository.helper.ts) +
                    • USERS_ENTITIES   (src/.../index.ts)
                    • +
                    • + USERS_INFOS_REPOSITORY   (src/.../index.ts) +
                    • +
                    • + USERS_REPOSITORY   (src/.../index.ts) +
                    • +
                    • + USERS_SERVICES   (src/.../index.ts) +
                    • @@ -102,7 +124,7 @@ Default value : { - getDatabaseConfig, + getDatabaseConfig, } @@ -124,18 +146,18 @@ Default value : (): Parameters<typeof DatabaseModule['forRoot']> => { - return [ - { - type: process.env.DATABASE_TYPE as 'postgres', - host: process.env.DATABASE_HOST, - port: Number(process.env.DATABASE_PORT), - username: process.env.DATABASE_USER, - password: process.env.DATABASE_PASS, - database: process.env.DATABASE_DB, - synchronize: true, - }, - [], - ]; + return [ + { + type: 'postgres', + host: process.env.DATABASE_HOST, + port: Number(process.env.DATABASE_PORT), + username: process.env.DATABASE_USER, + password: process.env.DATABASE_PASS, + database: process.env.DATABASE_DB, + synchronize: true, + }, + [], + ] } @@ -144,27 +166,52 @@ -

                      src/libs/database/helpers/get-repository.helper.ts

                      +

                      src/shared/helpers/phone-number.helpers.ts

                      + + + + +
                      - + - getRepositoryHelper - + formatPhoneNumber +
                      - Default value : (name, entity) => { - return { - provide: name, - useFactory: (connection: Connection) => connection.getRepository(entity), - inject: ['DATABASE_CONNECTION'], - } + Default value : (phoneNumber: string) => { + return new PhoneNumber(phoneNumber).getNumber('e164') +} +
                      +
                      +

                      src/shared/helpers/get-env.helpers.ts

                      +
                      +

                      + + + + + + @@ -195,13 +242,131 @@ + +
                      + + + getEnv + + +
                      + Default value : (name: string): string => { + const value = process.env[name] + + if (value === undefined || value === null) throw new Error('Not found env var: ' + name) + + return value }
                      Default value : [ - UsersModule.forRoot('some'), DatabaseModule.forRoot(...$config.getDatabaseConfig()), + UsersModule.forRoot({ passwordHashSalt: getEnv('LOCAL_HASH_SALT') }), ]
                      +
                      +

                      src/domain/users/consts/index.ts

                      +
                      +

                      + + + + + + + + + + +
                      + + + PASSWORD_HASH_SALT + + +
                      + Default value : Symbol('PASSWORD_HASH_SALT') +
                      + + + + + + + + + + + +
                      + + + USERS_INFOS_REPOSITORY + + +
                      + Default value : Symbol('USERS_INFOS_REPOSITORY') +
                      + + + + + + + + + + + +
                      + + + USERS_REPOSITORY + + +
                      + Default value : Symbol('USERS_REPOSITORY') +
                      +
                      +

                      src/libs/database/helpers/get-repository.helper.ts

                      +
                      +

                      + + + + + + + + + + +
                      + + + provideCustomRepository + + +
                      + Default value : (name, repo) => { + return { + provide: name, + useFactory: (connection: Connection) => connection.getCustomRepository(repo), + inject: [Connection], + } +} +
                      + + + + + + + + + +
                      + + + provideEntity + + +
                      + Default value : (name, entity) => { + return { + provide: name, + useFactory: (connection: Connection) => connection.getRepository(entity), + inject: [Connection], + } +} +
                      @@ -231,6 +396,35 @@ + + + +

                      src/domain/users/services/index.ts

                      +
                      +

                      + + + + + + + + + + + +
                      + + + USERS_SERVICES + + +
                      + Type : [] + +
                      + Default value : [UsersPasswordsService] +
                      diff --git a/documentation/modules.html b/documentation/modules.html index 397f875..2043dfa 100644 --- a/documentation/modules.html +++ b/documentation/modules.html @@ -3,18 +3,19 @@ - api-taskme documentation + TaskMe + diff --git a/documentation/modules/AppModule.html b/documentation/modules/AppModule.html index 30ddb74..3a647c6 100644 --- a/documentation/modules/AppModule.html +++ b/documentation/modules/AppModule.html @@ -3,18 +3,19 @@ - api-taskme documentation + TaskMe + @@ -153,10 +154,11 @@ import { $config } from './config' import { UsersModule } from './domain/users/users.module' import { DatabaseModule } from './libs' +import { getEnv } from './shared' const imports = [ - UsersModule.forRoot('some'), DatabaseModule.forRoot(...$config.getDatabaseConfig()), + UsersModule.forRoot({ passwordHashSalt: getEnv('LOCAL_HASH_SALT') }), ] @Module({ imports }) diff --git a/documentation/modules/DatabaseModule.html b/documentation/modules/DatabaseModule.html index 090022f..09d6ae8 100644 --- a/documentation/modules/DatabaseModule.html +++ b/documentation/modules/DatabaseModule.html @@ -3,18 +3,19 @@ - api-taskme documentation + TaskMe + @@ -94,8 +95,8 @@ - + @@ -159,33 +160,29 @@
                      -
                      import { DynamicModule, Global, Module } from '@nestjs/common';
                      -import { UsersModule } from 'src/domain/users/users.module';
                      -import { ConnectionOptions, createConnection, EntitySchema } from 'typeorm';
                      +        
                      import { DynamicModule, Global, Module } from '@nestjs/common'
                      +import { ConnectionOptions, createConnection, EntitySchema } from 'typeorm'
                       
                       @Global()
                       @Module({})
                       export class DatabaseModule {
                      -  static forRoot(
                      -    options: Partial<ConnectionOptions>,
                      -    entities: EntitySchema[],
                      -  ): DynamicModule {
                      -    return {
                      -      module: DatabaseModule,
                      -      imports: [UsersModule.forFeature()],
                      -      providers: [
                      -        {
                      -          provide: 'DATABASE_CONNECTION',
                      -          useFactory: async () => {
                      -            return await createConnection({
                      -              ...options,
                      -              entities,
                      -            } as ConnectionOptions);
                      -          },
                      -        },
                      -      ],
                      -    };
                      -  }
                      +	static forRoot(options: Partial<ConnectionOptions>, entities: EntitySchema[]): DynamicModule {
                      +		return {
                      +			module: DatabaseModule,
                      +			imports: [],
                      +			providers: [
                      +				{
                      +					provide: 'DATABASE_CONNECTION',
                      +					useFactory: async () => {
                      +						return await createConnection({
                      +							...options,
                      +							entities,
                      +						} as ConnectionOptions)
                      +					},
                      +				},
                      +			],
                      +		}
                      +	}
                       }
                       
                      diff --git a/documentation/modules/UsersModule.html b/documentation/modules/UsersModule.html index aa326ce..4073884 100644 --- a/documentation/modules/UsersModule.html +++ b/documentation/modules/UsersModule.html @@ -3,18 +3,19 @@ - api-taskme documentation + TaskMe + @@ -94,8 +95,8 @@ - + @@ -126,15 +127,15 @@ - forRoot(options: any) + forRoot(options: UsersModuleOptions) - + @@ -156,7 +157,7 @@ options - any + UsersModuleOptions @@ -176,6 +177,45 @@
                      +
                      + + + + + + + + + + + + + + + + + + + + + @@ -187,26 +227,44 @@
                      import { DynamicModule, Module } from '@nestjs/common'
                      -import { UsersService } from './services/users.service'
                      +import { provideEntity } from 'src/libs'
                      +import { PASSWORD_HASH_SALT, USERS_REPOSITORY } from './consts'
                      +import { User } from './entities'
                      +import { UsersModuleOptions } from './interfaces'
                      +import { UsersService } from './services'
                       
                       @Module({})
                       export class UsersModule {
                      -	static options: any
                      +	static options: UsersModuleOptions
                      +
                      +	static getProviders() {
                      +		return [
                      +			{
                      +				provide: PASSWORD_HASH_SALT,
                      +				useValue: UsersModule.options.passwordHashSalt,
                      +			},
                      +		]
                      +	}
                       
                      -	static forRoot(options: any): DynamicModule {
                      +	static forRoot(options: UsersModuleOptions): DynamicModule {
                       		UsersModule.options = options
                       
                       		return {
                       			module: UsersModule,
                      -			providers: [UsersService],
                       		}
                       	}
                       
                       	static forFeature(): DynamicModule {
                      -		console.log(UsersModule.options)
                       		return {
                       			module: UsersModule,
                      -			providers: [UsersService],
                      +			providers: [
                      +				UsersService,
                      +				{
                      +					provide: PASSWORD_HASH_SALT,
                      +					useValue: UsersModule.options.passwordHashSalt,
                      +				},
                      +				provideEntity(USERS_REPOSITORY, User),
                      +			],
                       		}
                       	}
                       }
                      diff --git a/documentation/overview.html b/documentation/overview.html
                      index 110e313..2988183 100644
                      --- a/documentation/overview.html
                      +++ b/documentation/overview.html
                      @@ -3,18 +3,19 @@
                           
                               
                               
                      -        api-taskme documentation
                      +        TaskMe
                               
                               
                       
                               
                       	   
                               
                      +        
                           
                           
                       
                               
                       
                      @@ -116,7 +117,7 @@
                                   

                      -

                      1 Injectable

                      +

                      2 Injectables

                      @@ -124,7 +125,7 @@

                      -

                      2 Classes

                      +

                      4 Classes

                      @@ -132,7 +133,7 @@

                      -

                      4 Interfaces

                      +

                      6 Interfaces

                      diff --git a/ecosystem.config.js b/ecosystem.config.js new file mode 100644 index 0000000..67d9d97 --- /dev/null +++ b/ecosystem.config.js @@ -0,0 +1,10 @@ +module.exports = { + apps: [ + { + name: 'api', + script: './dist/main.js', + node_args: '-r dotenv/config', + watch: true, + }, + ], +} diff --git a/logo.png b/logo.png new file mode 100644 index 0000000..922463a Binary files /dev/null and b/logo.png differ diff --git a/package-lock.json b/package-lock.json index d538188..a2e038e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3228,6 +3228,11 @@ "is-string": "^1.0.5" } }, + "array-uniq": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz", + "integrity": "sha1-X8w3OSB3VyPP1k1lxkvvU7+eum0=" + }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -3334,6 +3339,11 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, + "awesome-phonenumber": { + "version": "2.55.0", + "resolved": "https://registry.npmjs.org/awesome-phonenumber/-/awesome-phonenumber-2.55.0.tgz", + "integrity": "sha512-lSq5t4v6pJR+qzWqnSdac2TX20CD5ggVBD8cNL34rgJ+0hVCx+McPgQNLDxdNjiaGeYWrUxscV3BU4K/Tm/JdQ==" + }, "axios": { "version": "0.21.1", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", @@ -3793,6 +3803,11 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" + }, "busboy": { "version": "0.2.14", "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", @@ -4813,6 +4828,16 @@ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, + "env-cmd": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/env-cmd/-/env-cmd-10.1.0.tgz", + "integrity": "sha512-mMdWTT9XKN7yNth/6N6g2GuKuJTsKMDHlQFUDacb/heQRRWOTIZ42t1rMHnQu4jYxU1ajdTeJM+9eEETlqToMA==", + "dev": true, + "requires": { + "commander": "^4.0.0", + "cross-spawn": "^7.0.0" + } + }, "errno": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", @@ -6410,6 +6435,23 @@ "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "inside": { @@ -9056,6 +9098,11 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" + }, "pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", @@ -9203,6 +9250,60 @@ } } }, + "pg": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.7.1.tgz", + "integrity": "sha512-7bdYcv7V6U3KAtWjpQJJBww0UEsWuh4yQ/EjNf2HeO/NnvKjpvhEIe/A/TleP6wtmSKnUnghs5A9jUoK6iDdkA==", + "requires": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.5.0", + "pg-pool": "^3.4.1", + "pg-protocol": "^1.5.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + } + }, + "pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + }, + "pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" + }, + "pg-pool": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.4.1.tgz", + "integrity": "sha512-TVHxR/gf3MeJRvchgNHxsYsTCHQ+4wm3VIHSS19z8NC0+gioEhq1okDY1sm/TYbfoP6JLFx01s0ShvZ3puP/iQ==" + }, + "pg-protocol": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", + "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" + }, + "pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "requires": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + } + }, + "pgpass": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.4.tgz", + "integrity": "sha512-YmuA56alyBq7M59vxVBfPJrGSozru8QAdoNlWuW3cz8l+UX3cWge0vTvjKhsSHSJpo3Bom8/Mm6hf0TR5GY0+w==", + "requires": { + "split2": "^3.1.1" + } + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -9260,10 +9361,28 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, - "postgres": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/postgres/-/postgres-1.0.2.tgz", - "integrity": "sha512-zeLgt42KSUNgX/uvo+gbVxTAYwgSY6MIKuU/a8YWuObX4rtGuKrVWopvEAqIAPSO0FeHS1TsSKnqPjoufPy8NA==" + "postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" + }, + "postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=" + }, + "postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" + }, + "postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "requires": { + "xtend": "^4.0.0" + } }, "prelude-ls": { "version": "1.2.1", @@ -9384,6 +9503,22 @@ "safe-buffer": "^5.1.0" } }, + "randomstring": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.2.1.tgz", + "integrity": "sha512-eMnfell9XuU3jfCx3f4xCaFAt0YMFPZhx9R3PSStmLarDKg5j5vivqKhf/8pvG+VX/YkxsckHK/VPUrKa5V07A==", + "requires": { + "array-uniq": "1.0.2", + "randombytes": "2.0.3" + }, + "dependencies": { + "randombytes": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", + "integrity": "sha1-Z0yZdgkBw8QRJ3GjHlIdw0nMCew=" + } + } + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -9694,17 +9829,17 @@ } }, "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.3.0.tgz", + "integrity": "sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw==", "requires": { - "tslib": "^1.9.0" + "tslib": "~2.1.0" }, "dependencies": { "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" } } }, @@ -9996,6 +10131,11 @@ "get-assigned-identifiers": "^1.1.0" } }, + "secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=" + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -10459,6 +10599,39 @@ "extend-shallow": "^3.0.0" } }, + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "requires": { + "readable-stream": "^3.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", diff --git a/package.json b/package.json index 60b7d0b..d13a613 100644 --- a/package.json +++ b/package.json @@ -9,27 +9,31 @@ "prebuild": "rimraf dist", "build": "nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", - "start": "nest start", - "start:dev": "nest start --watch", + "start": "pm2-runtime start ecosystem.config.js", + "start:dev": " nest build --watch --webpack --webpackPath webpack-hmr.config.js", "start:debug": "nest start --debug --watch", - "start:prod": "node dist/main", + "start:prod": "env-cmd -f .env node dist/main", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "test": "jest", "test:watch": "jest --watch", "test:cov": "jest --coverage", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", - "test:e2e": "jest --config ./test/jest-e2e.json" + "test:e2e": "jest --config ./test/jest-e2e.json", + "docs": "npx @compodoc/compodoc -p tsconfig.json -s --theme laravel --hideGenerator --name TaskMe --customLogo ./logo.png" }, "dependencies": { "@nestjs/common": "^7.0.0", "@nestjs/core": "^7.0.0", "@nestjs/platform-express": "^7.0.0", "@nestjs/typeorm": "^8.0.1", + "awesome-phonenumber": "^2.55.0", "dotenv": "^10.0.0", - "postgres": "^1.0.2", + "pg": "^8.7.1", + "randomstring": "^1.2.1", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", - "rxjs": "^6.5.4", + "rxjs": "^7.3.0", + "secure-compare": "^3.0.1", "typeorm": "^0.2.36" }, "devDependencies": { @@ -43,6 +47,7 @@ "@types/supertest": "^2.0.8", "@typescript-eslint/eslint-plugin": "3.9.1", "@typescript-eslint/parser": "3.9.1", + "env-cmd": "^10.1.0", "eslint": "7.7.0", "eslint-config-prettier": "^6.10.0", "eslint-plugin-import": "^2.20.1", diff --git a/src/app.module.ts b/src/app.module.ts index 498fe10..2eb6d35 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -2,10 +2,11 @@ import { Module } from '@nestjs/common' import { $config } from './config' import { UsersModule } from './domain/users/users.module' import { DatabaseModule } from './libs' +import { getEnv } from './shared' const imports = [ - UsersModule.forRoot('some'), DatabaseModule.forRoot(...$config.getDatabaseConfig()), + UsersModule.forRoot({ passwordHashSalt: getEnv('LOCAL_HASH_SALT') }), ] @Module({ imports }) diff --git a/src/config/entities.config.ts b/src/config/entities.config.ts new file mode 100644 index 0000000..47da257 --- /dev/null +++ b/src/config/entities.config.ts @@ -0,0 +1,3 @@ +import { USERS_ENTITIES } from 'src/domain/users/entities' + +export const ENTITIES = [...USERS_ENTITIES] diff --git a/src/config/index.ts b/src/config/index.ts index ccd1a67..e14a2ab 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -1,20 +1,21 @@ -import { DatabaseModule } from 'src/libs'; +import { DatabaseModule } from 'src/libs' +import { ENTITIES } from './entities.config' const getDatabaseConfig = (): Parameters => { - return [ - { - type: process.env.DATABASE_TYPE as 'postgres', - host: process.env.DATABASE_HOST, - port: Number(process.env.DATABASE_PORT), - username: process.env.DATABASE_USER, - password: process.env.DATABASE_PASS, - database: process.env.DATABASE_DB, - synchronize: true, - }, - [], - ]; -}; + return [ + { + type: 'postgres', + host: process.env.DATABASE_HOST, + port: Number(process.env.DATABASE_PORT), + username: process.env.DATABASE_USER, + password: process.env.DATABASE_PASS, + database: process.env.DATABASE_DB, + synchronize: true, + }, + ENTITIES, + ] +} export const $config = { - getDatabaseConfig, -}; + getDatabaseConfig, +} diff --git a/src/core/exeptions/custom.exeptions.ts b/src/core/exeptions/custom.exeptions.ts new file mode 100644 index 0000000..5df7fe7 --- /dev/null +++ b/src/core/exeptions/custom.exeptions.ts @@ -0,0 +1,3 @@ +export class CustomExeption { + isCustom: true +} diff --git a/src/core/exeptions/index.ts b/src/core/exeptions/index.ts new file mode 100644 index 0000000..2f8465f --- /dev/null +++ b/src/core/exeptions/index.ts @@ -0,0 +1 @@ +export * from './users.exeptions' diff --git a/src/core/exeptions/users.exeptions.ts b/src/core/exeptions/users.exeptions.ts new file mode 100644 index 0000000..d77f7fa --- /dev/null +++ b/src/core/exeptions/users.exeptions.ts @@ -0,0 +1,3 @@ +import { CustomExeption } from './custom.exeptions' + +export class UserAlreadyExistException extends CustomExeption {} diff --git a/src/core/index.ts b/src/core/index.ts index 99e2e97..659f93d 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -1 +1,2 @@ +export * from './exeptions' export * from './namespaces' diff --git a/src/core/namespaces/users.namespace.ts b/src/core/namespaces/users.namespace.ts index b84cbfa..a596ada 100644 --- a/src/core/namespaces/users.namespace.ts +++ b/src/core/namespaces/users.namespace.ts @@ -10,35 +10,23 @@ export namespace Users { /** * Базовий інтерфейс користувача */ - export interface User { - /** - * Унікальний ідентифікатор - */ + export interface UserModel { + /** Унікальний ідентифікатор */ id: number - /** - * Роль користувача, можливі значення Role.Admin, Role.User - */ + /** Роль користувача, можливі значення Role.Admin, Role.User */ role: Role - /** - * Почта користувача - */ + /** Почта користувача */ email: string - /** - * Робочий номер телефону по якому відбуваеться авторизація - */ + /** Робочий номер телефону по якому відбуваеться авторизація */ phoneNumber: string - /** - * Пароль в зашифрованому вигляді - */ + /** Пароль в зашифрованому вигляді */ password: string - /** - * Соль для шифрування паролю - */ + /** Сіль для шифрування паролю */ passwordSalt: string } @@ -46,31 +34,57 @@ export namespace Users { * Інтерфейс інформації про користувача */ export interface Info { - /** - * Ідентифікатор користувача - */ + /** Ідентифікатор користувача */ userId: string - /** - * - */ - + /** Імя користувача*/ firstName: string + /** Прізвище користувача*/ lastName: string + /** По-батькові */ surname: string + /** Позиція на роботі */ position: string + /** Дата народження */ dateOfBirth: string + /** Посилання на зображення користувача */ avatarUrl: string + /** Додаток активований*/ isActivedApp: boolean + /** Дата створення */ createdAt: string + /** Дата останньої зміни */ updatedAt: string } + + export interface SaveUserPaylod { + role: Role + email: string + phoneNumber: string + password: string + firstName: string + lastName: string + surname: string + position: string + dateOfBirth: string + avatarUrl?: string + } + + export interface IUsersService { + /** + * Метод для створення користувача + * @param {SaveUserPaylod} payload - Данні нового користувача + * @returns Повертає id створеного користувача + */ + + save(payload: SaveUserPaylod): Promise + } } diff --git a/src/domain/index.ts b/src/domain/index.ts index e69de29..df58ac4 100644 --- a/src/domain/index.ts +++ b/src/domain/index.ts @@ -0,0 +1 @@ +export * from './users/users.module' diff --git a/src/domain/sessions/sessions.module.ts b/src/domain/sessions/sessions.module.ts new file mode 100644 index 0000000..d8ad5dc --- /dev/null +++ b/src/domain/sessions/sessions.module.ts @@ -0,0 +1,20 @@ +import { DynamicModule, Module } from '@nestjs/common' + +@Module({}) +export class SessionsModule { + static getProviders() { + return [] + } + + static forRoot(): DynamicModule { + return { + module: SessionsModule, + } + } + + static forFeature(): DynamicModule { + return { + module: SessionsModule, + } + } +} diff --git a/src/domain/users/classes/user-creator.ts b/src/domain/users/classes/user-creator.ts index b85fd6b..b882611 100644 --- a/src/domain/users/classes/user-creator.ts +++ b/src/domain/users/classes/user-creator.ts @@ -1,24 +1,72 @@ +import { UserAlreadyExistException, Users } from 'src/core' +import { formatPhoneNumber } from 'src/shared' import { Repository } from 'typeorm' -interface UserPaylod { - name: string - email: string -} +type Payload = Users.SaveUserPaylod & { passwordSalt: string } export class UserCreator { - private userRepository: Repository - private payload: UserPaylod + private userRepository: Repository + private infoRepository: Repository + private payload: Payload + + constructor(payload: Payload) { + this.setPaylod(payload) + } + + private async validate(payload: Payload) { + const existUser = await this.userRepository + .createQueryBuilder('it') + .select('it.id') + .where('it.email = :email', { email: payload.email }) + .orWhere('it.phoneNumber = :phoneNumber', { phoneNumber: payload.phoneNumber }) + .getOne() + + if (existUser) throw new UserAlreadyExistException() + } + + private preparePayload(payload: Payload): Payload { + return { + ...payload, + phoneNumber: formatPhoneNumber(payload.phoneNumber), + } + } - public setData(paylod: UserPaylod) { - this.payload = paylod + private onError(error: any) { + console.log('UserCreator: Error: ', error) + if (error.isCustom) throw error + } + + private async createUser() { + return this.userRepository.insert({ + email: this.payload.email, + password: this.payload.password, + passwordSalt: this.payload.passwordSalt, + phoneNumber: this.payload.phoneNumber, + }) + } + + public setPaylod(payload: Payload) { + this.payload = this.preparePayload(payload) return this } - public setRepository(repository: Repository) { + public setRepositories(repository: Repository) { this.userRepository = repository return this } - public async save() { - return this.payload + public async run() { + try { + if (!this.userRepository || !this.payload) throw new Error('User creator not prepared') + + await this.validate(this.payload) + + console.log(this.payload) + const result = await this.createUser() + + console.log(result) + return 1 + } catch (e) { + this.onError(e) + } } } diff --git a/src/domain/users/consts/index.ts b/src/domain/users/consts/index.ts new file mode 100644 index 0000000..d321092 --- /dev/null +++ b/src/domain/users/consts/index.ts @@ -0,0 +1,4 @@ +export const PASSWORD_HASH_SALT = Symbol('PASSWORD_HASH_SALT') + +export const USERS_REPOSITORY = Symbol('USERS_REPOSITORY') +export const USERS_INFOS_REPOSITORY = Symbol('USERS_INFOS_REPOSITORY') diff --git a/src/domain/users/entities/user.entity.ts b/src/domain/users/entities/user.entity.ts index 6d4249b..24c8adc 100644 --- a/src/domain/users/entities/user.entity.ts +++ b/src/domain/users/entities/user.entity.ts @@ -2,27 +2,22 @@ import { Users } from 'src/core' import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm' @Entity('users') -export class User implements Users.User { +export class User implements Users.UserModel { @PrimaryGeneratedColumn() id: number @Column({ type: 'char', default: Users.Role.User, nullable: false }) role: Users.Role + @Column({ type: 'varchar', nullable: false, unique: true }) email: string - /** - * Робочий номер телефону по якому відбуваеться авторизація - */ + @Column({ type: 'varchar', nullable: false, unique: true }) phoneNumber: string - /** - * Пароль в зашифрованому вигляді - */ + @Column({ type: 'varchar', nullable: false, select: false }) password: string - /** - * Соль для шифрування паролю - */ + @Column({ type: 'varchar', nullable: false, select: false }) passwordSalt: string } diff --git a/src/domain/users/interfaces/index.ts b/src/domain/users/interfaces/index.ts new file mode 100644 index 0000000..b4ec129 --- /dev/null +++ b/src/domain/users/interfaces/index.ts @@ -0,0 +1,2 @@ +export * from './users-db.interfaces' +export * from './users-module-options.interface' diff --git a/src/domain/users/interfaces/users-db.interfaces.ts b/src/domain/users/interfaces/users-db.interfaces.ts new file mode 100644 index 0000000..73c8815 --- /dev/null +++ b/src/domain/users/interfaces/users-db.interfaces.ts @@ -0,0 +1,5 @@ +import { Users } from 'src/core' +import { Repository } from 'typeorm' + +export type IUsersRepository = Repository +export type IUsersInfoRepository = Repository diff --git a/src/domain/users/interfaces/users-module-options.interface.ts b/src/domain/users/interfaces/users-module-options.interface.ts new file mode 100644 index 0000000..842352d --- /dev/null +++ b/src/domain/users/interfaces/users-module-options.interface.ts @@ -0,0 +1,3 @@ +export interface UsersModuleOptions { + passwordHashSalt: string +} diff --git a/src/domain/users/services/index.ts b/src/domain/users/services/index.ts new file mode 100644 index 0000000..7e3fd93 --- /dev/null +++ b/src/domain/users/services/index.ts @@ -0,0 +1,6 @@ +import { UsersPasswordsService } from './users-passwords.service' +import { UsersService } from './users.service' + +export const USERS_SERVICES = [UsersPasswordsService] + +export { UsersPasswordsService, UsersService } diff --git a/src/domain/users/services/users-passwords.service.ts b/src/domain/users/services/users-passwords.service.ts new file mode 100644 index 0000000..8907e8c --- /dev/null +++ b/src/domain/users/services/users-passwords.service.ts @@ -0,0 +1,40 @@ +import { Inject, Injectable } from '@nestjs/common' +import * as bcrypt from 'bcryptjs' +import * as randomstring from 'randomstring' +import { Repository } from 'typeorm' +import { PASSWORD_HASH_SALT } from '../consts' + +@Injectable() +export class UsersPasswordsService { + private readonly saltRounds = 10 + + @Inject(PASSWORD_HASH_SALT) + private localHashSalt: string + + // public async compareUserPasswords(userId: number, password: string) { + // const user = await this.usersRepository.findOne({id: userId}) + // return this.comparePass(password, user.passwordSalt, user.password) + // } + + // public async changeUserPassword(userId: number, newPassword: string): Promise { + // const user = await this.usersRepository.findOne({id: userId}) + // user.password = await this.hashPassword(newPassword, user.passwordSalt) + // await this.usersRepository.save(user) + // } + + public async hashPassword(password: string, salt: string): Promise { + return bcrypt.hash(this.getSalt(salt) + password, this.saltRounds) + } + + private async comparePass(password: string, salt: string, hash: string): Promise { + return await bcrypt.compare(this.getSalt(salt) + password, hash) + } + + public createUserSalt(): string { + return randomstring.generate(10) + } + + private getSalt(userSalt: string): string { + return this.localHashSalt + userSalt + } +} diff --git a/src/domain/users/services/users.service.ts b/src/domain/users/services/users.service.ts index 14acccf..cbe5dfe 100644 --- a/src/domain/users/services/users.service.ts +++ b/src/domain/users/services/users.service.ts @@ -1,23 +1,40 @@ -import { Injectable } from '@nestjs/common' +import { Inject, Injectable } from '@nestjs/common' +import { Users } from 'src/core' import { UserCreator } from '../classes/user-creator' +import { USERS_REPOSITORY } from '../consts' +import { IUsersRepository } from '../interfaces' +import { UsersPasswordsService } from './users-passwords.service' @Injectable() -export class UsersService { - /** - * Метод для отримання користувача по його ідентифікатору - * @id Ідентифікатор користувача - * @returns Обект користувача - */ - public async getUser(id: number): Promise { - const userCreator = new UserCreator() +export class UsersService implements Users.IUsersService { + @Inject(USERS_REPOSITORY) usersRepository: IUsersRepository - userCreator.setData({ - name: 'Vitalik', - email: 'ebas@mail.ru', + constructor(private readonly usersPasswordsService: UsersPasswordsService) {} + + onModuleInit() { + this.save({ + email: 'test@email.ru', + firstName: 'asdas', + lastName: 'asdas', + surname: 'asdas', + dateOfBirth: new Date().toString(), + role: Users.Role.User, + phoneNumber: '+38098071797 0', + password: '123qqq', + position: 'helperdo', }) + } + + public async save(payload: Users.SaveUserPaylod) { + const passwordSalt = this.usersPasswordsService.createUserSalt() + payload.password = await this.usersPasswordsService.hashPassword( + payload.password, + passwordSalt, + ) - const user = await userCreator.save() + const userCreator = new UserCreator({ ...payload, passwordSalt }) - return user + console.log(await userCreator.setRepositories(this.usersRepository).run()) + return 1 } } diff --git a/src/domain/users/users.module.ts b/src/domain/users/users.module.ts index 6a9273a..73742f5 100644 --- a/src/domain/users/users.module.ts +++ b/src/domain/users/users.module.ts @@ -1,24 +1,39 @@ import { DynamicModule, Module } from '@nestjs/common' -import { UsersService } from './services/users.service' +import { provideEntity } from 'src/libs' +import { PASSWORD_HASH_SALT, USERS_REPOSITORY } from './consts' +import { User } from './entities' +import { UsersModuleOptions } from './interfaces' +import { UsersPasswordsService, UsersService } from './services' @Module({}) export class UsersModule { - static options: any + static options: UsersModuleOptions - static forRoot(options: any): DynamicModule { + static getProviders() { + return [ + UsersService, + UsersPasswordsService, + { + provide: PASSWORD_HASH_SALT, + useValue: UsersModule.options.passwordHashSalt, + }, + provideEntity(USERS_REPOSITORY, User), + ] + } + + static forRoot(options: UsersModuleOptions): DynamicModule { UsersModule.options = options return { module: UsersModule, - providers: [UsersService], + providers: UsersModule.getProviders(), } } static forFeature(): DynamicModule { - console.log(UsersModule.options) return { module: UsersModule, - providers: [UsersService], + providers: UsersModule.getProviders(), } } } diff --git a/src/libs/database/database.module.ts b/src/libs/database/database.module.ts index f87ed9b..d3c5706 100755 --- a/src/libs/database/database.module.ts +++ b/src/libs/database/database.module.ts @@ -1,28 +1,14 @@ -import { DynamicModule, Global, Module } from '@nestjs/common'; -import { UsersModule } from 'src/domain/users/users.module'; -import { ConnectionOptions, createConnection, EntitySchema } from 'typeorm'; +import { DynamicModule, Global, Module } from '@nestjs/common' +import { TypeOrmModule } from '@nestjs/typeorm' +import { ConnectionOptions } from 'typeorm' @Global() @Module({}) export class DatabaseModule { - static forRoot( - options: Partial, - entities: EntitySchema[], - ): DynamicModule { - return { - module: DatabaseModule, - imports: [UsersModule.forFeature()], - providers: [ - { - provide: 'DATABASE_CONNECTION', - useFactory: async () => { - return await createConnection({ - ...options, - entities, - } as ConnectionOptions); - }, - }, - ], - }; - } + static forRoot(options: Partial, entities: any[]): DynamicModule { + return { + module: DatabaseModule, + imports: [TypeOrmModule.forRoot({ ...options, entities })], + } + } } diff --git a/src/libs/database/helpers/get-repository.helper.ts b/src/libs/database/helpers/get-repository.helper.ts index 73085cd..7a0d140 100755 --- a/src/libs/database/helpers/get-repository.helper.ts +++ b/src/libs/database/helpers/get-repository.helper.ts @@ -1,9 +1,17 @@ import { Connection } from 'typeorm' -export const getRepositoryHelper = (name, entity) => { +export const provideEntity = (name, entity) => { return { provide: name, useFactory: (connection: Connection) => connection.getRepository(entity), - inject: ['DATABASE_CONNECTION'], + inject: [Connection], + } +} + +export const provideCustomRepository = (name, repo) => { + return { + provide: name, + useFactory: (connection: Connection) => connection.getCustomRepository(repo), + inject: [Connection], } } diff --git a/src/main.ts b/src/main.ts index 6a7235d..5b85748 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,12 +1,8 @@ -import { NestFactory } from '@nestjs/core'; -import { AppModule } from './app.module'; - -import * as dotenv from 'dotenv'; - -dotenv.config(); +import { NestFactory } from '@nestjs/core' +import { AppModule } from './app.module' async function bootstrap() { - const app = await NestFactory.create(AppModule); - await app.listen(3000); + const app = await NestFactory.create(AppModule) + await app.listen(3000) } -bootstrap(); +bootstrap() diff --git a/src/shared/helpers/get-env.helpers.ts b/src/shared/helpers/get-env.helpers.ts new file mode 100644 index 0000000..f8e38e9 --- /dev/null +++ b/src/shared/helpers/get-env.helpers.ts @@ -0,0 +1,7 @@ +export const getEnv = (name: string): string => { + const value = process.env[name] + + if (value === undefined || value === null) throw new Error('Not found env var: ' + name) + + return value +} diff --git a/src/shared/helpers/index.ts b/src/shared/helpers/index.ts new file mode 100644 index 0000000..2886729 --- /dev/null +++ b/src/shared/helpers/index.ts @@ -0,0 +1,2 @@ +export * from './get-env.helpers' +export * from './phone-number.helpers' diff --git a/src/shared/helpers/phone-number.helpers.ts b/src/shared/helpers/phone-number.helpers.ts new file mode 100644 index 0000000..578d0a2 --- /dev/null +++ b/src/shared/helpers/phone-number.helpers.ts @@ -0,0 +1,10 @@ +import PhoneNumber from 'awesome-phonenumber' + +export const formatPhoneNumber = (phoneNumber: string) => { + console.log( + phoneNumber, + new PhoneNumber(phoneNumber), + new PhoneNumber(phoneNumber).getNumber('e164'), + ) + return new PhoneNumber(phoneNumber).getNumber('e164') +} diff --git a/src/shared/index.ts b/src/shared/index.ts new file mode 100644 index 0000000..b2a4c75 --- /dev/null +++ b/src/shared/index.ts @@ -0,0 +1 @@ +export * from './helpers'
                      + + + Static + getProviders + + +
                      + + getProviders() +
                      + +
                      + +
                      + Returns : {} +