From c64427f1ce6b471debf10e16eb8b0fa11f639b9a Mon Sep 17 00:00:00 2001 From: Thiago Ramalho Date: Fri, 13 Dec 2024 16:02:02 -0300 Subject: [PATCH 01/13] feat: add verify feature --- packages/nestjs-auth-verify/README.md | 15 + packages/nestjs-auth-verify/package.json | 44 ++ .../src/__fixtures__/app.module.db.fixture.ts | 76 +++ .../src/__fixtures__/app.module.fixture.ts | 52 ++ .../email/mailer.service.fixture.ts | 12 + .../src/__fixtures__/ormconfig.fixture.ts | 12 + .../__fixtures__/otp/otp.module.fixture.ts | 9 + .../__fixtures__/otp/otp.service.fixture.ts | 49 ++ .../__fixtures__/typeorm.module.fixture.ts | 15 + .../user/entities/user-entity.fixture.ts | 12 + .../user/entities/user-otp-entity.fixture.ts | 29 + .../services/user-lookup.service.fixture.ts | 35 ++ .../services/user-mutate.service.fixture.ts | 26 + .../src/__fixtures__/user/user.fixture.ts | 6 + .../__fixtures__/user/user.module.fixture.ts | 10 + ...password-updated-successfully.template.hbs | 3 + .../templates/email/verify-login.template.hbs | 7 + .../email/verify-password.template.hbs | 15 + .../src/auth-verify.constants.ts | 20 + .../src/auth-verify.controller.e2e-spec.ts | 119 ++++ .../src/auth-verify.controller.spec.ts | 56 ++ .../src/auth-verify.controller.ts | 60 ++ .../src/auth-verify.module-definition.spec.ts | 297 ++++++++++ .../src/auth-verify.module-definition.ts | 203 +++++++ .../src/auth-verify.module.spec.ts | 287 ++++++++++ .../src/auth-verify.module.ts | 40 ++ .../src/auth-verify.utils.spec.ts | 13 + .../src/auth-verify.utils.ts | 3 + .../src/config/auth-verify-default.config.ts | 30 + .../src/dto/auth-verify-update.dto.ts | 12 + .../src/dto/auth-verify.dto.ts | 13 + packages/nestjs-auth-verify/src/index.spec.ts | 29 + packages/nestjs-auth-verify/src/index.ts | 6 + .../auth-verify-email.service.interface.ts | 3 + ...h-verify-notification.service.interface.ts | 10 + .../auth-verify-options-extras.interface.ts | 4 + .../auth-verify-options.interface.ts | 17 + .../auth-verify-otp.service.interface.ts | 10 + .../auth-verify-settings.interface.ts | 22 + ...th-verify-user-lookup.service.interface.ts | 21 + ...th-verify-user-mutate.service.interface.ts | 14 + .../auth-verify.service.interface.ts | 14 + .../auth-verify-notification.service.spec.ts | 68 +++ .../auth-verify-notification.service.ts | 49 ++ .../src/services/auth-verify.service.spec.ts | 150 +++++ .../src/services/auth-verify.service.ts | 182 ++++++ packages/nestjs-auth-verify/tsconfig.json | 15 + packages/nestjs-auth-verify/typedoc.json | 3 + tsconfig.json | 3 + yarn.lock | 531 ++++-------------- 50 files changed, 2306 insertions(+), 425 deletions(-) create mode 100644 packages/nestjs-auth-verify/README.md create mode 100644 packages/nestjs-auth-verify/package.json create mode 100644 packages/nestjs-auth-verify/src/__fixtures__/app.module.db.fixture.ts create mode 100644 packages/nestjs-auth-verify/src/__fixtures__/app.module.fixture.ts create mode 100644 packages/nestjs-auth-verify/src/__fixtures__/email/mailer.service.fixture.ts create mode 100644 packages/nestjs-auth-verify/src/__fixtures__/ormconfig.fixture.ts create mode 100644 packages/nestjs-auth-verify/src/__fixtures__/otp/otp.module.fixture.ts create mode 100644 packages/nestjs-auth-verify/src/__fixtures__/otp/otp.service.fixture.ts create mode 100644 packages/nestjs-auth-verify/src/__fixtures__/typeorm.module.fixture.ts create mode 100644 packages/nestjs-auth-verify/src/__fixtures__/user/entities/user-entity.fixture.ts create mode 100644 packages/nestjs-auth-verify/src/__fixtures__/user/entities/user-otp-entity.fixture.ts create mode 100644 packages/nestjs-auth-verify/src/__fixtures__/user/services/user-lookup.service.fixture.ts create mode 100644 packages/nestjs-auth-verify/src/__fixtures__/user/services/user-mutate.service.fixture.ts create mode 100644 packages/nestjs-auth-verify/src/__fixtures__/user/user.fixture.ts create mode 100644 packages/nestjs-auth-verify/src/__fixtures__/user/user.module.fixture.ts create mode 100644 packages/nestjs-auth-verify/src/assets/templates/email/password-updated-successfully.template.hbs create mode 100644 packages/nestjs-auth-verify/src/assets/templates/email/verify-login.template.hbs create mode 100644 packages/nestjs-auth-verify/src/assets/templates/email/verify-password.template.hbs create mode 100644 packages/nestjs-auth-verify/src/auth-verify.constants.ts create mode 100644 packages/nestjs-auth-verify/src/auth-verify.controller.e2e-spec.ts create mode 100644 packages/nestjs-auth-verify/src/auth-verify.controller.spec.ts create mode 100644 packages/nestjs-auth-verify/src/auth-verify.controller.ts create mode 100644 packages/nestjs-auth-verify/src/auth-verify.module-definition.spec.ts create mode 100644 packages/nestjs-auth-verify/src/auth-verify.module-definition.ts create mode 100644 packages/nestjs-auth-verify/src/auth-verify.module.spec.ts create mode 100644 packages/nestjs-auth-verify/src/auth-verify.module.ts create mode 100644 packages/nestjs-auth-verify/src/auth-verify.utils.spec.ts create mode 100644 packages/nestjs-auth-verify/src/auth-verify.utils.ts create mode 100644 packages/nestjs-auth-verify/src/config/auth-verify-default.config.ts create mode 100644 packages/nestjs-auth-verify/src/dto/auth-verify-update.dto.ts create mode 100644 packages/nestjs-auth-verify/src/dto/auth-verify.dto.ts create mode 100644 packages/nestjs-auth-verify/src/index.spec.ts create mode 100644 packages/nestjs-auth-verify/src/index.ts create mode 100644 packages/nestjs-auth-verify/src/interfaces/auth-verify-email.service.interface.ts create mode 100644 packages/nestjs-auth-verify/src/interfaces/auth-verify-notification.service.interface.ts create mode 100644 packages/nestjs-auth-verify/src/interfaces/auth-verify-options-extras.interface.ts create mode 100644 packages/nestjs-auth-verify/src/interfaces/auth-verify-options.interface.ts create mode 100644 packages/nestjs-auth-verify/src/interfaces/auth-verify-otp.service.interface.ts create mode 100644 packages/nestjs-auth-verify/src/interfaces/auth-verify-settings.interface.ts create mode 100644 packages/nestjs-auth-verify/src/interfaces/auth-verify-user-lookup.service.interface.ts create mode 100644 packages/nestjs-auth-verify/src/interfaces/auth-verify-user-mutate.service.interface.ts create mode 100644 packages/nestjs-auth-verify/src/interfaces/auth-verify.service.interface.ts create mode 100644 packages/nestjs-auth-verify/src/services/auth-verify-notification.service.spec.ts create mode 100644 packages/nestjs-auth-verify/src/services/auth-verify-notification.service.ts create mode 100644 packages/nestjs-auth-verify/src/services/auth-verify.service.spec.ts create mode 100644 packages/nestjs-auth-verify/src/services/auth-verify.service.ts create mode 100644 packages/nestjs-auth-verify/tsconfig.json create mode 100644 packages/nestjs-auth-verify/typedoc.json diff --git a/packages/nestjs-auth-verify/README.md b/packages/nestjs-auth-verify/README.md new file mode 100644 index 000000000..5711b6ea2 --- /dev/null +++ b/packages/nestjs-auth-verify/README.md @@ -0,0 +1,15 @@ +# Rockets NestJS Auth verify Authentication + +Verify user password using email + +## Project + +[![NPM Latest](https://img.shields.io/npm/v/@concepta/nestjs-auth-verify)](https://www.npmjs.com/package/@concepta/nestjs-auth-verify) +[![NPM Downloads](https://img.shields.io/npm/dw/@conceptadev/nestjs-auth-verify)](https://www.npmjs.com/package/@concepta/nestjs-auth-verify) +[![GH Last Commit](https://img.shields.io/github/last-commit/conceptadev/rockets?logo=github)](https://github.com/conceptadev/rockets) +[![GH Contrib](https://img.shields.io/github/contributors/conceptadev/rockets?logo=github)](https://github.com/conceptadev/rockets/graphs/contributors) +[![NestJS Dep](https://img.shields.io/github/package-json/dependency-version/conceptadev/rockets/@nestjs/common?label=NestJS&logo=nestjs&filename=packages%2Fnestjs-core%2Fpackage.json)](https://www.npmjs.com/package/@nestjs/common) + +## Installation + +`yarn add @concepta/nestjs-auth-verify` diff --git a/packages/nestjs-auth-verify/package.json b/packages/nestjs-auth-verify/package.json new file mode 100644 index 000000000..f4e4c9da2 --- /dev/null +++ b/packages/nestjs-auth-verify/package.json @@ -0,0 +1,44 @@ +{ + "name": "@concepta/nestjs-auth-verify", + "version": "5.1.0", + "description": "Rockets NestJS Auth Recovery", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "license": "BSD-3-Clause", + "publishConfig": { + "access": "public" + }, + "files": [ + "dist/**/!(*.spec|*.e2e-spec|*.fixture).{js,d.ts}" + ], + "dependencies": { + "@concepta/nestjs-common": "^5.1.0", + "@concepta/typeorm-common": "^5.1.0", + "@nestjs/common": "^10.4.1", + "@nestjs/config": "^3.2.3", + "@nestjs/core": "^10.4.1", + "@nestjs/swagger": "^7.4.0" + }, + "devDependencies": { + "@concepta/nestjs-auth-jwt": "^5.1.0", + "@concepta/nestjs-authentication": "^5.1.0", + "@concepta/nestjs-crud": "^5.1.0", + "@concepta/nestjs-email": "^5.1.0", + "@concepta/nestjs-jwt": "^5.1.0", + "@concepta/nestjs-otp": "^5.1.0", + "@concepta/nestjs-password": "^5.1.0", + "@concepta/nestjs-typeorm-ext": "^5.1.0", + "@concepta/nestjs-user": "^5.1.0", + "@concepta/typeorm-seeding": "^4.0.0", + "@nestjs/testing": "^10.4.1", + "@nestjs/typeorm": "^10.0.2", + "jest-mock-extended": "^2.0.9", + "supertest": "^6.3.4" + }, + "peerDependencies": { + "class-transformer": "*", + "class-validator": "*", + "rxjs": "^7.1.0", + "typeorm": "^0.3.0" + } +} diff --git a/packages/nestjs-auth-verify/src/__fixtures__/app.module.db.fixture.ts b/packages/nestjs-auth-verify/src/__fixtures__/app.module.db.fixture.ts new file mode 100644 index 000000000..e58f33ad8 --- /dev/null +++ b/packages/nestjs-auth-verify/src/__fixtures__/app.module.db.fixture.ts @@ -0,0 +1,76 @@ +import { Module } from '@nestjs/common'; + +import { TypeOrmExtModule } from '@concepta/nestjs-typeorm-ext'; +import { CrudModule } from '@concepta/nestjs-crud'; +import { PasswordModule } from '@concepta/nestjs-password'; +import { AuthenticationModule } from '@concepta/nestjs-authentication'; +import { JwtModule } from '@concepta/nestjs-jwt'; +import { AuthJwtModule } from '@concepta/nestjs-auth-jwt'; +import { OtpModule, OtpService } from '@concepta/nestjs-otp'; +import { EmailModule, EmailService } from '@concepta/nestjs-email'; +import { + UserLookupService, + UserModule, + UserMutateService, +} from '@concepta/nestjs-user'; + +import { AuthVerifyModule } from '../auth-verify.module'; +import { UserOtpEntityFixture } from './user/entities/user-otp-entity.fixture'; +import { UserEntityFixture } from './user/entities/user-entity.fixture'; + +import { default as ormConfig } from './ormconfig.fixture'; +import { MailerServiceFixture } from './email/mailer.service.fixture'; + +@Module({ + imports: [ + TypeOrmExtModule.forRoot(ormConfig), + CrudModule.forRoot({}), + JwtModule.forRoot({}), + AuthenticationModule.forRoot({ + settings: { + disableGuard: (context, guard) => + guard.constructor.name === 'AuthJwtGuard' && + context.getClass().name === 'UserController', + }, + }), + AuthJwtModule.forRootAsync({ + inject: [UserLookupService], + useFactory: (userLookupService: UserLookupService) => ({ + userLookupService, + }), + }), + AuthVerifyModule.forRootAsync({ + inject: [UserLookupService, UserMutateService, OtpService, EmailService], + useFactory: ( + userLookupService, + userMutateService, + otpService, + emailService, + ) => ({ + userLookupService, + userMutateService, + otpService, + emailService, + }), + }), + OtpModule.forRoot({ + entities: { + userOtp: { + entity: UserOtpEntityFixture, + }, + }, + }), + PasswordModule.forRoot({}), + UserModule.forRoot({ + entities: { + user: { + entity: UserEntityFixture, + }, + }, + }), + EmailModule.forRoot({ + mailerService: new MailerServiceFixture(), + }), + ], +}) +export class AppModuleDbFixture {} diff --git a/packages/nestjs-auth-verify/src/__fixtures__/app.module.fixture.ts b/packages/nestjs-auth-verify/src/__fixtures__/app.module.fixture.ts new file mode 100644 index 000000000..512ab2db9 --- /dev/null +++ b/packages/nestjs-auth-verify/src/__fixtures__/app.module.fixture.ts @@ -0,0 +1,52 @@ +import { Module } from '@nestjs/common'; +import { EmailModule, EmailService } from '@concepta/nestjs-email'; +import { AuthenticationModule } from '@concepta/nestjs-authentication'; +import { AuthJwtModule } from '@concepta/nestjs-auth-jwt'; +import { JwtModule } from '@concepta/nestjs-jwt'; + +import { AuthVerifyModule } from '../auth-verify.module'; + +import { TypeOrmModuleFixture } from './typeorm.module.fixture'; +import { OtpServiceFixture } from './otp/otp.service.fixture'; +import { UserLookupServiceFixture } from './user/services/user-lookup.service.fixture'; +import { UserMutateServiceFixture } from './user/services/user-mutate.service.fixture'; +import { UserModuleFixture } from './user/user.module.fixture'; +import { OtpModuleFixture } from './otp/otp.module.fixture'; +import { MailerServiceFixture } from './email/mailer.service.fixture'; + +@Module({ + imports: [ + TypeOrmModuleFixture, + JwtModule.forRoot({}), + AuthenticationModule.forRoot({}), + AuthJwtModule.forRootAsync({ + inject: [UserLookupServiceFixture], + useFactory: (userLookupService: UserLookupServiceFixture) => ({ + userLookupService, + }), + }), + AuthVerifyModule.forRootAsync({ + inject: [ + EmailService, + OtpServiceFixture, + UserLookupServiceFixture, + UserMutateServiceFixture, + ], + useFactory: ( + emailService, + otpService, + userLookupService, + userMutateService, + ) => ({ + emailService, + otpService, + userLookupService, + userMutateService, + }), + }), + EmailModule.forRoot({ mailerService: new MailerServiceFixture() }), + OtpModuleFixture, + UserModuleFixture, + ], +}) +export class AppModuleFixture {} diff --git a/packages/nestjs-auth-verify/src/__fixtures__/email/mailer.service.fixture.ts b/packages/nestjs-auth-verify/src/__fixtures__/email/mailer.service.fixture.ts new file mode 100644 index 000000000..50cca616b --- /dev/null +++ b/packages/nestjs-auth-verify/src/__fixtures__/email/mailer.service.fixture.ts @@ -0,0 +1,12 @@ +import { Injectable } from '@nestjs/common'; +import { + EmailSendInterface, + EmailSendOptionsInterface, +} from '@concepta/nestjs-common'; + +@Injectable() +export class MailerServiceFixture implements EmailSendInterface { + sendMail(_sendMailOptions: EmailSendOptionsInterface): Promise { + throw new Error('Method not implemented.'); + } +} diff --git a/packages/nestjs-auth-verify/src/__fixtures__/ormconfig.fixture.ts b/packages/nestjs-auth-verify/src/__fixtures__/ormconfig.fixture.ts new file mode 100644 index 000000000..ce2171736 --- /dev/null +++ b/packages/nestjs-auth-verify/src/__fixtures__/ormconfig.fixture.ts @@ -0,0 +1,12 @@ +import { DataSourceOptions } from 'typeorm'; +import { UserOtpEntityFixture } from './user/entities/user-otp-entity.fixture'; +import { UserEntityFixture } from './user/entities/user-entity.fixture'; + +const config: DataSourceOptions = { + type: 'sqlite', + database: ':memory:', + synchronize: true, + entities: [UserEntityFixture, UserOtpEntityFixture], +}; + +export default config; diff --git a/packages/nestjs-auth-verify/src/__fixtures__/otp/otp.module.fixture.ts b/packages/nestjs-auth-verify/src/__fixtures__/otp/otp.module.fixture.ts new file mode 100644 index 000000000..a67a0776f --- /dev/null +++ b/packages/nestjs-auth-verify/src/__fixtures__/otp/otp.module.fixture.ts @@ -0,0 +1,9 @@ +import { Global, Module } from '@nestjs/common'; +import { OtpServiceFixture } from './otp.service.fixture'; + +@Global() +@Module({ + providers: [OtpServiceFixture], + exports: [OtpServiceFixture], +}) +export class OtpModuleFixture {} diff --git a/packages/nestjs-auth-verify/src/__fixtures__/otp/otp.service.fixture.ts b/packages/nestjs-auth-verify/src/__fixtures__/otp/otp.service.fixture.ts new file mode 100644 index 000000000..7ad59fc24 --- /dev/null +++ b/packages/nestjs-auth-verify/src/__fixtures__/otp/otp.service.fixture.ts @@ -0,0 +1,49 @@ +import { randomUUID } from 'crypto'; +import { Injectable } from '@nestjs/common'; + +import { + OtpCreatableInterface, + OtpInterface, + ReferenceAssigneeInterface, + ReferenceIdInterface, +} from '@concepta/nestjs-common'; + +import { AuthVerifyOtpServiceInterface } from '../../interfaces/auth-verify-otp.service.interface'; +import { UserFixture } from '../user/user.fixture'; + +@Injectable() +export class OtpServiceFixture implements AuthVerifyOtpServiceInterface { + async create( + _assignment: string, + otp: OtpCreatableInterface, + ): Promise { + const { assignee, category, type } = otp; + return { + id: randomUUID(), + category, + type, + assignee, + passcode: 'GOOD_PASSCODE', + expirationDate: new Date(), + dateCreated: new Date(), + dateUpdated: new Date(), + dateDeleted: null, + version: 1, + }; + } + + async validate( + _assignment: string, + otp: Pick, + _deleteIfValid: boolean, + ): Promise> | null> { + return otp.passcode === 'GOOD_PASSCODE' ? { assignee: UserFixture } : null; + } + + async clear( + _assignment: string, + _otp: Pick, + ): Promise { + return; + } +} diff --git a/packages/nestjs-auth-verify/src/__fixtures__/typeorm.module.fixture.ts b/packages/nestjs-auth-verify/src/__fixtures__/typeorm.module.fixture.ts new file mode 100644 index 000000000..cb2f6c519 --- /dev/null +++ b/packages/nestjs-auth-verify/src/__fixtures__/typeorm.module.fixture.ts @@ -0,0 +1,15 @@ +import { Global, Module } from '@nestjs/common'; +import { getEntityManagerToken } from '@nestjs/typeorm'; +import { createEntityManagerMock } from '@concepta/typeorm-common'; + +@Global() +@Module({ + providers: [ + { + provide: getEntityManagerToken(), + useFactory: createEntityManagerMock, + }, + ], + exports: [getEntityManagerToken()], +}) +export class TypeOrmModuleFixture {} diff --git a/packages/nestjs-auth-verify/src/__fixtures__/user/entities/user-entity.fixture.ts b/packages/nestjs-auth-verify/src/__fixtures__/user/entities/user-entity.fixture.ts new file mode 100644 index 000000000..4fe200626 --- /dev/null +++ b/packages/nestjs-auth-verify/src/__fixtures__/user/entities/user-entity.fixture.ts @@ -0,0 +1,12 @@ +import { Entity, OneToMany } from 'typeorm'; +import { UserSqliteEntity } from '@concepta/nestjs-user'; +import { UserOtpEntityFixture } from './user-otp-entity.fixture'; + +/** + * User Entity Fixture + */ +@Entity() +export class UserEntityFixture extends UserSqliteEntity { + @OneToMany(() => UserOtpEntityFixture, (userOtp) => userOtp.assignee) + userOtps?: UserOtpEntityFixture[]; +} diff --git a/packages/nestjs-auth-verify/src/__fixtures__/user/entities/user-otp-entity.fixture.ts b/packages/nestjs-auth-verify/src/__fixtures__/user/entities/user-otp-entity.fixture.ts new file mode 100644 index 000000000..512bf0727 --- /dev/null +++ b/packages/nestjs-auth-verify/src/__fixtures__/user/entities/user-otp-entity.fixture.ts @@ -0,0 +1,29 @@ +import { Column, Entity, ManyToOne } from 'typeorm'; +import { ReferenceIdInterface } from '@concepta/nestjs-common'; +import { UserEntityFixture } from './user-entity.fixture'; +import { OtpInterface } from '@concepta/nestjs-common'; +import { CommonSqliteEntity } from '@concepta/typeorm-common'; + +/** + * Otp Entity Fixture + */ +@Entity() +export class UserOtpEntityFixture + extends CommonSqliteEntity + implements OtpInterface +{ + @Column() + category!: string; + + @Column({ nullable: true }) + type!: string; + + @Column() + passcode!: string; + + @Column({ type: 'datetime' }) + expirationDate!: Date; + + @ManyToOne(() => UserEntityFixture, (user) => user.userOtps) + assignee!: ReferenceIdInterface; +} diff --git a/packages/nestjs-auth-verify/src/__fixtures__/user/services/user-lookup.service.fixture.ts b/packages/nestjs-auth-verify/src/__fixtures__/user/services/user-lookup.service.fixture.ts new file mode 100644 index 000000000..67d57cfd8 --- /dev/null +++ b/packages/nestjs-auth-verify/src/__fixtures__/user/services/user-lookup.service.fixture.ts @@ -0,0 +1,35 @@ +import { Injectable } from '@nestjs/common'; +import { + ReferenceEmail, + ReferenceIdInterface, + ReferenceSubject, +} from '@concepta/nestjs-common'; + +import { AuthVerifyUserLookupServiceInterface } from '../../../interfaces/auth-verify-user-lookup.service.interface'; + +import { UserFixture } from '../user.fixture'; + +@Injectable() +export class UserLookupServiceFixture + implements AuthVerifyUserLookupServiceInterface +{ + async byId( + id: string, + ): ReturnType { + if (id === UserFixture.id) { + return UserFixture; + } else { + throw new Error(); + } + } + + async byEmail( + email: ReferenceEmail, + ): ReturnType { + return email === UserFixture.email ? UserFixture : null; + } + + async bySubject(subject: ReferenceSubject): Promise { + throw new Error(`Method not implemented, can't get ${subject}.`); + } +} diff --git a/packages/nestjs-auth-verify/src/__fixtures__/user/services/user-mutate.service.fixture.ts b/packages/nestjs-auth-verify/src/__fixtures__/user/services/user-mutate.service.fixture.ts new file mode 100644 index 000000000..58666e425 --- /dev/null +++ b/packages/nestjs-auth-verify/src/__fixtures__/user/services/user-mutate.service.fixture.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@nestjs/common'; +import { + ReferenceActiveInterface, + ReferenceIdInterface, +} from '@concepta/nestjs-common'; + +import { AuthVerifyUserMutateServiceInterface } from '../../../interfaces/auth-verify-user-mutate.service.interface'; + +import { UserFixture } from '../user.fixture'; + +@Injectable() +export class UserMutateServiceFixture + implements AuthVerifyUserMutateServiceInterface +{ + // ReferenceIdInterface & ReferenceActiveInterface, + // ReferenceIdInterface & ReferenceEmailInterface & ReferenceActiveInterface, + async update( + object: ReferenceIdInterface & ReferenceActiveInterface, + ): ReturnType { + if (object.id === UserFixture.id) { + return UserFixture; + } else { + throw new Error(); + } + } +} diff --git a/packages/nestjs-auth-verify/src/__fixtures__/user/user.fixture.ts b/packages/nestjs-auth-verify/src/__fixtures__/user/user.fixture.ts new file mode 100644 index 000000000..989929386 --- /dev/null +++ b/packages/nestjs-auth-verify/src/__fixtures__/user/user.fixture.ts @@ -0,0 +1,6 @@ +export const UserFixture = { + id: 'abc', + email: 'me@dispostable.com', + username: 'me@dispostable.com', + active: true, +}; diff --git a/packages/nestjs-auth-verify/src/__fixtures__/user/user.module.fixture.ts b/packages/nestjs-auth-verify/src/__fixtures__/user/user.module.fixture.ts new file mode 100644 index 000000000..6611a2cf9 --- /dev/null +++ b/packages/nestjs-auth-verify/src/__fixtures__/user/user.module.fixture.ts @@ -0,0 +1,10 @@ +import { Global, Module } from '@nestjs/common'; +import { UserLookupServiceFixture } from './services/user-lookup.service.fixture'; +import { UserMutateServiceFixture } from './services/user-mutate.service.fixture'; + +@Global() +@Module({ + providers: [UserLookupServiceFixture, UserMutateServiceFixture], + exports: [UserLookupServiceFixture, UserMutateServiceFixture], +}) +export class UserModuleFixture {} diff --git a/packages/nestjs-auth-verify/src/assets/templates/email/password-updated-successfully.template.hbs b/packages/nestjs-auth-verify/src/assets/templates/email/password-updated-successfully.template.hbs new file mode 100644 index 000000000..a02fd9f32 --- /dev/null +++ b/packages/nestjs-auth-verify/src/assets/templates/email/password-updated-successfully.template.hbs @@ -0,0 +1,3 @@ +

+ Congratulations you were successfully joined app. +

diff --git a/packages/nestjs-auth-verify/src/assets/templates/email/verify-login.template.hbs b/packages/nestjs-auth-verify/src/assets/templates/email/verify-login.template.hbs new file mode 100644 index 000000000..cabc5cbb9 --- /dev/null +++ b/packages/nestjs-auth-verify/src/assets/templates/email/verify-login.template.hbs @@ -0,0 +1,7 @@ +

+You have requested to verify your login. If you did not make this request, please ignore this message. +

+ +

+This is your login {{login}} +

diff --git a/packages/nestjs-auth-verify/src/assets/templates/email/verify-password.template.hbs b/packages/nestjs-auth-verify/src/assets/templates/email/verify-password.template.hbs new file mode 100644 index 000000000..bb3ac8c6e --- /dev/null +++ b/packages/nestjs-auth-verify/src/assets/templates/email/verify-password.template.hbs @@ -0,0 +1,15 @@ +

+You have requested to reset your password. If you did not make this request, please ignore this message. +

+ +

+Please click on the link below to choose a new password. +

+ +

+Click Here +

+ +

+This link will expire at {{tokenExp}} +

diff --git a/packages/nestjs-auth-verify/src/auth-verify.constants.ts b/packages/nestjs-auth-verify/src/auth-verify.constants.ts new file mode 100644 index 000000000..088391095 --- /dev/null +++ b/packages/nestjs-auth-verify/src/auth-verify.constants.ts @@ -0,0 +1,20 @@ +export const AUTH_VERIFY_MODULE_SETTINGS_TOKEN = + 'AUTH_VERIFY_MODULE_SETTINGS_TOKEN'; + +export const AUTH_VERIFY_MODULE_DEFAULT_SETTINGS_TOKEN = + 'AUTH_VERIFY_MODULE_DEFAULT_SETTINGS_TOKEN'; + +export const AUTH_VERIFY_MODULE_OTP_SERVICE_TOKEN = + 'AUTH_VERIFY_MODULE_OTP_SERVICE_TOKEN'; + +export const AUTH_VERIFY_MODULE_EMAIL_SERVICE_TOKEN = + 'AUTH_VERIFY_MODULE_EMAIL_SERVICE_TOKEN'; + +export const AUTH_VERIFY_MODULE_USER_LOOKUP_SERVICE_TOKEN = + 'AUTH_VERIFY_MODULE_USER_LOOKUP_SERVICE_TOKEN'; + +export const AUTH_VERIFY_MODULE_USER_MUTATE_SERVICE_TOKEN = + 'AUTH_VERIFY_MODULE_USER_MUTATE_SERVICE_TOKEN'; + +export const AUTH_VERIFY_MODULE_ENTITY_MANAGER_PROXY_TOKEN = + 'AUTH_VERIFY_MODULE_ENTITY_MANAGER_PROXY_TOKEN'; diff --git a/packages/nestjs-auth-verify/src/auth-verify.controller.e2e-spec.ts b/packages/nestjs-auth-verify/src/auth-verify.controller.e2e-spec.ts new file mode 100644 index 000000000..27e36d4a6 --- /dev/null +++ b/packages/nestjs-auth-verify/src/auth-verify.controller.e2e-spec.ts @@ -0,0 +1,119 @@ +import supertest from 'supertest'; +import { Test, TestingModule } from '@nestjs/testing'; +import { INestApplication } from '@nestjs/common'; +import { getDataSourceToken } from '@nestjs/typeorm'; +import { OtpInterface, UserInterface } from '@concepta/nestjs-common'; +import { SeedingSource } from '@concepta/typeorm-seeding'; +import { EmailService } from '@concepta/nestjs-email'; +import { OtpService } from '@concepta/nestjs-otp'; +import { UserFactory } from '@concepta/nestjs-user/src/seeding'; + +import { AUTH_VERIFY_MODULE_SETTINGS_TOKEN } from './auth-verify.constants'; + +import { AuthVerifyController } from './auth-verify.controller'; +import { AuthVerifySettingsInterface } from './interfaces/auth-verify-settings.interface'; +import { AuthVerifyDto } from './dto/auth-verify.dto'; +import { AuthVerifyUpdateDto } from './dto/auth-verify-update.dto'; + +import { UserEntityFixture } from './__fixtures__/user/entities/user-entity.fixture'; +import { AppModuleDbFixture } from './__fixtures__/app.module.db.fixture'; + +describe(AuthVerifyController, () => { + let app: INestApplication; + let otpService: OtpService; + let settings: AuthVerifySettingsInterface; + let seedingSource: SeedingSource; + let userFactory: UserFactory; + + beforeEach(async () => { + const moduleFixture: TestingModule = await Test.createTestingModule({ + imports: [AppModuleDbFixture], + }).compile(); + app = moduleFixture.createNestApplication(); + await app.init(); + + otpService = moduleFixture.get(OtpService); + + settings = moduleFixture.get( + AUTH_VERIFY_MODULE_SETTINGS_TOKEN, + ) as AuthVerifySettingsInterface; + + seedingSource = new SeedingSource({ + dataSource: moduleFixture.get(getDataSourceToken()), + }); + + await seedingSource.initialize(); + + userFactory = new UserFactory({ + entity: UserEntityFixture, + seedingSource, + }); + + await userFactory.create({ + active: false, + }); + + jest.spyOn(EmailService.prototype, 'sendMail').mockResolvedValue(undefined); + }); + + afterEach(async () => { + jest.clearAllMocks(); + return app ? await app.close() : undefined; + }); + + it('POST auth/verify/send', async () => { + const user = await getFirstUser(app); + + await send(app, user); + }); + + it('PATCH auth/verify/confirm', async () => { + const user = await getFirstUser(app); + + await send(app, user); + + const otpCreateDto = await createOtp(settings, otpService, user.id); + + await supertest(app.getHttpServer()) + .patch('/auth/verify/confirm') + .send({ + passcode: otpCreateDto.passcode, + } as AuthVerifyUpdateDto) + .expect(200); + }); +}); + +const getFirstUser = async (app: INestApplication): Promise => { + const response = await supertest(app.getHttpServer()) + .get('/user?limit=1') + .expect(200); + + return response?.body[0]; +}; + +const send = async ( + app: INestApplication, + user: UserInterface, +): Promise => { + await supertest(app.getHttpServer()) + .post('/auth/verify/send') + .send({ email: user.email } as AuthVerifyDto) + .expect(201); +}; + +const createOtp = async ( + config: AuthVerifySettingsInterface, + otpService: OtpService, + userId: string, +): Promise => { + const { category, assignment, type, expiresIn } = config.otp; + + return await otpService.create(assignment, { + category, + type, + expiresIn, + assignee: { + id: userId, + }, + }); +}; diff --git a/packages/nestjs-auth-verify/src/auth-verify.controller.spec.ts b/packages/nestjs-auth-verify/src/auth-verify.controller.spec.ts new file mode 100644 index 000000000..12efcf433 --- /dev/null +++ b/packages/nestjs-auth-verify/src/auth-verify.controller.spec.ts @@ -0,0 +1,56 @@ +import { AuthVerifyController } from './auth-verify.controller'; +import { AuthVerifyService } from './services/auth-verify.service'; +import { AuthVerifyUpdateDto } from './dto/auth-verify-update.dto'; +import { mock } from 'jest-mock-extended'; +import { BadRequestException } from '@nestjs/common'; +import { AuthVerifyDto } from './dto/auth-verify.dto'; + +describe(AuthVerifyController.name, () => { + let controller: AuthVerifyController; + let authVerifyService: AuthVerifyService; + const dto: AuthVerifyDto = { + email: 'test@example.com', + }; + const passwordDto: AuthVerifyUpdateDto = { + passcode: '123456', + }; + beforeEach(() => { + authVerifyService = mock(); + controller = new AuthVerifyController(authVerifyService); + }); + + describe('send', () => { + it('should call send method of AuthVerifyService', async () => { + const verifyPasswordSpy = jest.spyOn(authVerifyService, 'send'); + + await controller.send(dto); + + expect(verifyPasswordSpy).toHaveBeenCalledWith(dto.email); + }); + }); + + describe('updatePassword', () => { + it('should call updatePassword method of AuthVerifyService', async () => { + const updatePasswordSpy = jest + .spyOn(authVerifyService, 'confirmUser') + .mockResolvedValue(null); + + const t = () => controller.confirm(passwordDto); + await expect(t).rejects.toThrow(BadRequestException); + + expect(updatePasswordSpy).toHaveBeenCalledWith(passwordDto.passcode); + }); + + it('should call updatePassword method of AuthVerifyService', async () => { + const updatePasswordSpy = jest + .spyOn(authVerifyService, 'confirmUser') + .mockResolvedValue({ + id: '1', + }); + + await controller.confirm(passwordDto); + + expect(updatePasswordSpy).toHaveBeenCalledWith(passwordDto.passcode); + }); + }); +}); diff --git a/packages/nestjs-auth-verify/src/auth-verify.controller.ts b/packages/nestjs-auth-verify/src/auth-verify.controller.ts new file mode 100644 index 000000000..51f5ea4f0 --- /dev/null +++ b/packages/nestjs-auth-verify/src/auth-verify.controller.ts @@ -0,0 +1,60 @@ +import { AuthPublic } from '@concepta/nestjs-authentication'; +import { + BadRequestException, + Body, + Controller, + Patch, + Post, +} from '@nestjs/common'; +import { + ApiBadRequestResponse, + ApiBody, + ApiOkResponse, + ApiOperation, + ApiTags, +} from '@nestjs/swagger'; +import { AuthVerifyUpdateDto } from './dto/auth-verify-update.dto'; +import { AuthVerifyDto } from './dto/auth-verify.dto'; +import { AuthVerifyService } from './services/auth-verify.service'; + +@Controller('auth/verify') +@AuthPublic() +@ApiTags('auth') +export class AuthVerifyController { + constructor(private readonly authVerifyService: AuthVerifyService) {} + + @ApiOperation({ + summary: + 'Send Verify account email by providing an email that will receive link to confirm account.', + }) + @ApiBody({ + type: AuthVerifyDto, + description: 'DTO of email verify.', + }) + @ApiOkResponse() + @Post('/send') + async send(@Body() verifyPasswordDto: AuthVerifyDto): Promise { + await this.authVerifyService.send(verifyPasswordDto.email); + } + + @ApiOperation({ + summary: 'confirm email providing passcode.', + }) + @ApiBody({ + type: AuthVerifyUpdateDto, + description: 'DTO of update password.', + }) + @ApiOkResponse() + @ApiBadRequestResponse() + @Patch('/confirm') + async confirm(@Body() updatePasswordDto: AuthVerifyUpdateDto): Promise { + const { passcode } = updatePasswordDto; + + const user = await this.authVerifyService.confirmUser(passcode); + + if (!user) { + // the client should have checked using validate passcode first + throw new BadRequestException(); + } + } +} diff --git a/packages/nestjs-auth-verify/src/auth-verify.module-definition.spec.ts b/packages/nestjs-auth-verify/src/auth-verify.module-definition.spec.ts new file mode 100644 index 000000000..ce8462f7a --- /dev/null +++ b/packages/nestjs-auth-verify/src/auth-verify.module-definition.spec.ts @@ -0,0 +1,297 @@ +import { FactoryProvider } from '@nestjs/common'; +import { mock } from 'jest-mock-extended'; +import { OtpServiceFixture } from './__fixtures__/otp/otp.service.fixture'; +import { UserLookupServiceFixture } from './__fixtures__/user/services/user-lookup.service.fixture'; +import { UserMutateServiceFixture } from './__fixtures__/user/services/user-mutate.service.fixture'; +import { + AUTH_VERIFY_MODULE_EMAIL_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_OTP_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_SETTINGS_TOKEN, + AUTH_VERIFY_MODULE_USER_LOOKUP_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_USER_MUTATE_SERVICE_TOKEN, +} from './auth-verify.constants'; +import { AuthVerifyController } from './auth-verify.controller'; +import { + createAuthVerifyControllers, + createAuthVerifyEmailServiceProvider, + createAuthVerifyEntityManagerProxyProvider, + createAuthVerifyExports, + createAuthVerifyNotificationServiceProvider, + createAuthVerifyOtpServiceProvider, + createAuthVerifyUserLookupServiceProvider, + createAuthVerifyUserMutateServiceProvider, +} from './auth-verify.module-definition'; +import { AuthVerifyEmailServiceInterface } from './interfaces/auth-verify-email.service.interface'; +import { AuthVerifyService } from './services/auth-verify.service'; +import { AuthVerifyUserLookupServiceInterface } from './interfaces/auth-verify-user-lookup.service.interface'; +import { AuthVerifyUserMutateServiceInterface } from './interfaces/auth-verify-user-mutate.service.interface'; +import { AuthVerifyNotificationServiceInterface } from './interfaces/auth-verify-notification.service.interface'; +import { AuthVerifyNotificationService } from './services/auth-verify-notification.service'; +import { EntityManagerProxy } from '@concepta/typeorm-common'; + +describe('AuthVerifyModuleDefinition', () => { + const mockEmailService = mock(); + const mockAuthVerifyNotification = + mock(); + const mockEntityManagerProxy = mock(); + const mockAuthVerifyOptions = { + emailService: mockEmailService, + otpService: new OtpServiceFixture(), + userLookupService: new UserLookupServiceFixture(), + userMutateService: new UserMutateServiceFixture(), + }; + describe(createAuthVerifyExports.name, () => { + it('should return an array with the expected tokens', () => { + const result = createAuthVerifyExports(); + expect(result).toEqual([ + AUTH_VERIFY_MODULE_SETTINGS_TOKEN, + AUTH_VERIFY_MODULE_OTP_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_EMAIL_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_USER_LOOKUP_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_USER_MUTATE_SERVICE_TOKEN, + AuthVerifyService, + ]); + }); + }); + + describe(createAuthVerifyControllers.name, () => { + it('should return a default AuthVerifyController', () => { + const result = createAuthVerifyControllers(); + expect(result).toEqual([AuthVerifyController]); + }); + + it('should return a default AuthVerifyController', () => { + const result = createAuthVerifyControllers({}); + expect(result).toEqual([AuthVerifyController]); + }); + + it('should return a default AuthVerifyController', () => { + const result = createAuthVerifyControllers({ controllers: undefined }); + expect(result).toEqual([AuthVerifyController]); + }); + + it('should return the provided controllers', () => { + const customController = class CustomController {}; + const result = createAuthVerifyControllers({ + controllers: [customController], + }); + expect(result).toEqual([customController]); + }); + + it('should return an empty array if the controllers option is an empty array', () => { + const result = createAuthVerifyControllers({ controllers: [] }); + expect(result).toEqual([]); + }); + + it('should return an array with AuthVerifyController if the controllers option includes AuthVerifyController', () => { + const result = createAuthVerifyControllers({ + controllers: [AuthVerifyController], + }); + expect(result).toEqual([AuthVerifyController]); + }); + + it('should return an array with AuthVerifyController and the provided controllers if the controllers option includes AuthVerifyController and other controllers', () => { + const customController = class CustomController {}; + const result = createAuthVerifyControllers({ + controllers: [AuthVerifyController, customController], + }); + expect(result).toEqual([AuthVerifyController, customController]); + }); + }); + + describe(createAuthVerifyOtpServiceProvider.name, () => { + class TestOtpService extends OtpServiceFixture {} + + const testOtpService = mock(); + + it('should return a default otpService', async () => { + const provider = createAuthVerifyOtpServiceProvider() as FactoryProvider; + + const useFactoryResult = await provider.useFactory({}); + + expect(useFactoryResult).toBe(undefined); + }); + + it('should return an otpService from initialization', async () => { + const provider = createAuthVerifyOtpServiceProvider() as FactoryProvider; + + const useFactoryResult = await provider.useFactory({ + otpService: testOtpService, + }); + + expect(useFactoryResult).toBe(testOtpService); + }); + + it('should return an overridden otpService', async () => { + const provider = createAuthVerifyOtpServiceProvider({ + otpService: mockAuthVerifyOptions.otpService, + }) as FactoryProvider; + + const useFactoryResult = await provider.useFactory({}); + + expect(useFactoryResult).toBeInstanceOf(OtpServiceFixture); + }); + }); + + describe(createAuthVerifyEmailServiceProvider.name, () => { + it('should return a have no default', async () => { + const provider = + createAuthVerifyEmailServiceProvider() as FactoryProvider; + + const useFactoryResult = await provider.useFactory({}); + + expect(useFactoryResult).toBe(undefined); + }); + + it('should override an emailService', async () => { + const provider = createAuthVerifyEmailServiceProvider({ + emailService: mockAuthVerifyOptions.emailService, + }) as FactoryProvider; + + const useFactoryResult = await provider.useFactory(); + + expect(useFactoryResult).toBe(mockAuthVerifyOptions.emailService); + }); + + it('should return an emailService from initialization', async () => { + const provider = + createAuthVerifyEmailServiceProvider() as FactoryProvider; + + const testMockEmailService = mock(); + const useFactoryResult = await provider.useFactory({ + emailService: testMockEmailService, + }); + + expect(useFactoryResult).toBe(testMockEmailService); + }); + }); + + describe(createAuthVerifyUserLookupServiceProvider.name, () => { + it('should return a have no default', async () => { + const provider = + createAuthVerifyUserLookupServiceProvider() as FactoryProvider; + + const useFactoryResult = await provider.useFactory({}); + + expect(useFactoryResult).toBe(undefined); + }); + + it('should override userLookupService', async () => { + const provider = createAuthVerifyUserLookupServiceProvider({ + userLookupService: mockAuthVerifyOptions.userLookupService, + }) as FactoryProvider; + + const useFactoryResult = await provider.useFactory(); + + expect(useFactoryResult).toBe(mockAuthVerifyOptions.userLookupService); + }); + + it('should return an userLookupService from initialization', async () => { + const provider = + createAuthVerifyUserLookupServiceProvider() as FactoryProvider; + + const mockService = mock(); + const useFactoryResult = await provider.useFactory({ + userLookupService: mockService, + }); + + expect(useFactoryResult).toBe(mockService); + }); + }); + + describe(createAuthVerifyUserMutateServiceProvider.name, () => { + it('should return a have no default', async () => { + const provider = + createAuthVerifyUserMutateServiceProvider() as FactoryProvider; + + const useFactoryResult = await provider.useFactory({}); + + expect(useFactoryResult).toBe(undefined); + }); + + it('should override userMutateService', async () => { + const provider = createAuthVerifyUserMutateServiceProvider({ + userMutateService: mockAuthVerifyOptions.userMutateService, + }) as FactoryProvider; + + const useFactoryResult = await provider.useFactory(); + + expect(useFactoryResult).toBe(mockAuthVerifyOptions.userMutateService); + }); + + it('should return an userMutateService from initialization', async () => { + const provider = + createAuthVerifyUserMutateServiceProvider() as FactoryProvider; + + const mockService = mock(); + const useFactoryResult = await provider.useFactory({ + userMutateService: mockService, + }); + + expect(useFactoryResult).toBe(mockService); + }); + }); + + describe(createAuthVerifyNotificationServiceProvider.name, () => { + it('should return a default AuthVerifyNotificationService', async () => { + const provider = + createAuthVerifyNotificationServiceProvider() as FactoryProvider; + + const useFactoryResult = await provider.useFactory({}); + + expect(useFactoryResult).toBeInstanceOf(AuthVerifyNotificationService); + }); + + it('should override notificationService', async () => { + const provider = createAuthVerifyNotificationServiceProvider({ + notificationService: mockAuthVerifyNotification, + }) as FactoryProvider; + + const useFactoryResult = await provider.useFactory(); + + expect(useFactoryResult).toBe(mockAuthVerifyNotification); + }); + + it('should return an notificationService from initialization', async () => { + const provider = + createAuthVerifyNotificationServiceProvider() as FactoryProvider; + + const useFactoryResult = await provider.useFactory({ + notificationService: mockAuthVerifyNotification, + }); + + expect(useFactoryResult).toBe(mockAuthVerifyNotification); + }); + }); + describe(createAuthVerifyEntityManagerProxyProvider.name, () => { + it('should return a default AuthVerifyNotificationService', async () => { + const provider = + createAuthVerifyEntityManagerProxyProvider() as FactoryProvider; + + const useFactoryResult = await provider.useFactory({}); + + expect(useFactoryResult).toBeInstanceOf(EntityManagerProxy); + }); + + it('should override notificationService', async () => { + const provider = createAuthVerifyEntityManagerProxyProvider({ + entityManagerProxy: mockEntityManagerProxy, + }) as FactoryProvider; + + const useFactoryResult = await provider.useFactory(); + + expect(useFactoryResult).toBe(mockEntityManagerProxy); + }); + + it('should return an notificationService from initialization', async () => { + const provider = + createAuthVerifyEntityManagerProxyProvider() as FactoryProvider; + + const useFactoryResult = await provider.useFactory({ + entityManagerProxy: mockEntityManagerProxy, + }); + + expect(useFactoryResult).toBe(mockEntityManagerProxy); + }); + }); +}); diff --git a/packages/nestjs-auth-verify/src/auth-verify.module-definition.ts b/packages/nestjs-auth-verify/src/auth-verify.module-definition.ts new file mode 100644 index 000000000..cd42bb932 --- /dev/null +++ b/packages/nestjs-auth-verify/src/auth-verify.module-definition.ts @@ -0,0 +1,203 @@ +import { EntityManager } from 'typeorm'; +import { + ConfigurableModuleBuilder, + DynamicModule, + Provider, +} from '@nestjs/common'; +import { getEntityManagerToken } from '@nestjs/typeorm'; +import { ConfigModule } from '@nestjs/config'; + +import { createSettingsProvider } from '@concepta/nestjs-common'; +import { EntityManagerProxy } from '@concepta/typeorm-common'; + +import { + AUTH_VERIFY_MODULE_EMAIL_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_OTP_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_SETTINGS_TOKEN, + AUTH_VERIFY_MODULE_ENTITY_MANAGER_PROXY_TOKEN, + AUTH_VERIFY_MODULE_USER_LOOKUP_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_USER_MUTATE_SERVICE_TOKEN, +} from './auth-verify.constants'; + +import { AuthVerifyOptionsInterface } from './interfaces/auth-verify-options.interface'; +import { AuthVerifyOptionsExtrasInterface } from './interfaces/auth-verify-options-extras.interface'; +import { AuthVerifySettingsInterface } from './interfaces/auth-verify-settings.interface'; +import { authVerifyDefaultConfig } from './config/auth-verify-default.config'; +import { AuthVerifyController } from './auth-verify.controller'; +import { AuthVerifyService } from './services/auth-verify.service'; +import { AuthVerifyNotificationService } from './services/auth-verify-notification.service'; +import { AuthVerifyEmailServiceInterface } from './interfaces/auth-verify-email.service.interface'; + +const RAW_OPTIONS_TOKEN = Symbol('__AUTH_VERIFY_MODULE_RAW_OPTIONS_TOKEN__'); + +export const { + ConfigurableModuleClass: AuthVerifyModuleClass, + OPTIONS_TYPE: AUTH_VERIFY_OPTIONS_TYPE, + ASYNC_OPTIONS_TYPE: AUTH_VERIFY_ASYNC_OPTIONS_TYPE, +} = new ConfigurableModuleBuilder({ + moduleName: 'AuthVerify', + optionsInjectionToken: RAW_OPTIONS_TOKEN, +}) + .setExtras( + { global: false }, + definitionTransform, + ) + .build(); + +export type AuthVerifyOptions = Omit; +export type AuthVerifyAsyncOptions = Omit< + typeof AUTH_VERIFY_ASYNC_OPTIONS_TYPE, + 'global' +>; + +function definitionTransform( + definition: DynamicModule, + extras: AuthVerifyOptionsExtrasInterface, +): DynamicModule { + const { providers } = definition; + const { controllers, global } = extras; + + return { + ...definition, + global, + imports: createAuthVerifyImports(), + providers: createAuthVerifyProviders({ providers }), + controllers: createAuthVerifyControllers({ controllers }), + exports: [ConfigModule, RAW_OPTIONS_TOKEN, ...createAuthVerifyExports()], + }; +} + +export function createAuthVerifyImports(): DynamicModule['imports'] { + return [ConfigModule.forFeature(authVerifyDefaultConfig)]; +} + +export function createAuthVerifyExports() { + return [ + AUTH_VERIFY_MODULE_SETTINGS_TOKEN, + AUTH_VERIFY_MODULE_OTP_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_EMAIL_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_USER_LOOKUP_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_USER_MUTATE_SERVICE_TOKEN, + AuthVerifyService, + ]; +} + +export function createAuthVerifyProviders(options: { + overrides?: AuthVerifyOptions; + providers?: Provider[]; +}): Provider[] { + return [ + ...(options.providers ?? []), + AuthVerifyService, + createAuthVerifySettingsProvider(options.overrides), + createAuthVerifyOtpServiceProvider(options.overrides), + createAuthVerifyEmailServiceProvider(options.overrides), + createAuthVerifyUserLookupServiceProvider(options.overrides), + createAuthVerifyUserMutateServiceProvider(options.overrides), + createAuthVerifyNotificationServiceProvider(options.overrides), + createAuthVerifyEntityManagerProxyProvider(options.overrides), + ]; +} + +export function createAuthVerifyControllers( + overrides: Pick = {}, +): DynamicModule['controllers'] { + return overrides?.controllers !== undefined + ? overrides.controllers + : [AuthVerifyController]; +} + +export function createAuthVerifySettingsProvider( + optionsOverrides?: AuthVerifyOptions, +): Provider { + return createSettingsProvider< + AuthVerifySettingsInterface, + AuthVerifyOptionsInterface + >({ + settingsToken: AUTH_VERIFY_MODULE_SETTINGS_TOKEN, + optionsToken: RAW_OPTIONS_TOKEN, + settingsKey: authVerifyDefaultConfig.KEY, + optionsOverrides, + }); +} + +export function createAuthVerifyOtpServiceProvider( + optionsOverrides?: Pick, +): Provider { + return { + provide: AUTH_VERIFY_MODULE_OTP_SERVICE_TOKEN, + inject: [RAW_OPTIONS_TOKEN], + useFactory: async (options: Pick) => + optionsOverrides?.otpService ?? options.otpService, + }; +} + +export function createAuthVerifyEmailServiceProvider( + optionsOverrides?: Pick, +): Provider { + return { + provide: AUTH_VERIFY_MODULE_EMAIL_SERVICE_TOKEN, + inject: [RAW_OPTIONS_TOKEN], + useFactory: async (options: Pick) => + optionsOverrides?.emailService ?? options.emailService, + }; +} + +export function createAuthVerifyUserLookupServiceProvider( + optionsOverrides?: Pick, +): Provider { + return { + provide: AUTH_VERIFY_MODULE_USER_LOOKUP_SERVICE_TOKEN, + inject: [RAW_OPTIONS_TOKEN], + useFactory: async (options: Pick) => + optionsOverrides?.userLookupService ?? options.userLookupService, + }; +} + +export function createAuthVerifyUserMutateServiceProvider( + optionsOverrides?: Pick, +): Provider { + return { + provide: AUTH_VERIFY_MODULE_USER_MUTATE_SERVICE_TOKEN, + inject: [RAW_OPTIONS_TOKEN], + useFactory: async (options: Pick) => + optionsOverrides?.userMutateService ?? options.userMutateService, + }; +} + +export function createAuthVerifyNotificationServiceProvider( + optionsOverrides?: Pick, +): Provider { + return { + provide: AuthVerifyNotificationService, + inject: [ + RAW_OPTIONS_TOKEN, + AUTH_VERIFY_MODULE_SETTINGS_TOKEN, + AUTH_VERIFY_MODULE_EMAIL_SERVICE_TOKEN, + ], + useFactory: async ( + options: Pick, + settings: AuthVerifySettingsInterface, + emailService: AuthVerifyEmailServiceInterface, + ) => + optionsOverrides?.notificationService ?? + options.notificationService ?? + new AuthVerifyNotificationService(settings, emailService), + }; +} + +export function createAuthVerifyEntityManagerProxyProvider( + optionsOverrides?: Pick, +): Provider { + return { + provide: AUTH_VERIFY_MODULE_ENTITY_MANAGER_PROXY_TOKEN, + inject: [RAW_OPTIONS_TOKEN, getEntityManagerToken()], + useFactory: async ( + options: Pick, + defaultEntityManager: EntityManager, + ) => + optionsOverrides?.entityManagerProxy ?? + options.entityManagerProxy ?? + new EntityManagerProxy(defaultEntityManager), + }; +} diff --git a/packages/nestjs-auth-verify/src/auth-verify.module.spec.ts b/packages/nestjs-auth-verify/src/auth-verify.module.spec.ts new file mode 100644 index 000000000..ac098545c --- /dev/null +++ b/packages/nestjs-auth-verify/src/auth-verify.module.spec.ts @@ -0,0 +1,287 @@ +import { mock } from 'jest-mock-extended'; +import { + DynamicModule, + Inject, + Injectable, + Module, + ModuleMetadata, +} from '@nestjs/common'; +import { Test, TestingModule } from '@nestjs/testing'; + +import { EmailModule, EmailService } from '@concepta/nestjs-email'; + +import { + AUTH_VERIFY_MODULE_EMAIL_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_OTP_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_SETTINGS_TOKEN, + AUTH_VERIFY_MODULE_USER_LOOKUP_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_USER_MUTATE_SERVICE_TOKEN, +} from './auth-verify.constants'; + +import { AuthVerifySettingsInterface } from './interfaces/auth-verify-settings.interface'; +import { AuthVerifyOtpServiceInterface } from './interfaces/auth-verify-otp.service.interface'; +import { AuthVerifyEmailServiceInterface } from './interfaces/auth-verify-email.service.interface'; +import { AuthVerifyUserLookupServiceInterface } from './interfaces/auth-verify-user-lookup.service.interface'; +import { AuthVerifyUserMutateServiceInterface } from './interfaces/auth-verify-user-mutate.service.interface'; +import { AuthVerifyServiceInterface } from './interfaces/auth-verify.service.interface'; +import { AuthVerifyController } from './auth-verify.controller'; +import { AuthVerifyModule } from './auth-verify.module'; +import { AuthVerifyService } from './services/auth-verify.service'; + +import { UserLookupServiceFixture } from './__fixtures__/user/services/user-lookup.service.fixture'; +import { UserModuleFixture } from './__fixtures__/user/user.module.fixture'; +import { OtpModuleFixture } from './__fixtures__/otp/otp.module.fixture'; +import { UserMutateServiceFixture } from './__fixtures__/user/services/user-mutate.service.fixture'; +import { OtpServiceFixture } from './__fixtures__/otp/otp.service.fixture'; +import { MailerServiceFixture } from './__fixtures__/email/mailer.service.fixture'; +import { TypeOrmModuleFixture } from './__fixtures__/typeorm.module.fixture'; + +describe(AuthVerifyModule, () => { + let testModule: TestingModule; + let authVerifyModule: AuthVerifyModule; + let otpService: AuthVerifyOtpServiceInterface; + let userLookupService: AuthVerifyUserLookupServiceInterface; + let userMutateService: AuthVerifyUserMutateServiceInterface; + let authVerifyService: AuthVerifyServiceInterface; + let authVerifyController: AuthVerifyController; + let emailService: EmailService; + + const mockEmailService = mock(); + + describe(AuthVerifyModule.forRoot, () => { + beforeEach(async () => { + testModule = await Test.createTestingModule( + testModuleFactory([ + AuthVerifyModule.forRoot({ + emailService: mockEmailService, + otpService: new OtpServiceFixture(), + userLookupService: new UserLookupServiceFixture(), + userMutateService: new UserMutateServiceFixture(), + }), + ]), + ).compile(); + }); + + it('module should be loaded', async () => { + commonVars(); + commonTests(); + }); + }); + + describe(AuthVerifyModule.register, () => { + beforeEach(async () => { + testModule = await Test.createTestingModule( + testModuleFactory([ + AuthVerifyModule.register({ + emailService: mockEmailService, + otpService: new OtpServiceFixture(), + userLookupService: new UserLookupServiceFixture(), + userMutateService: new UserMutateServiceFixture(), + }), + ]), + ).compile(); + }); + + it('module should be loaded', async () => { + commonVars(); + commonTests(); + }); + }); + + describe(AuthVerifyModule.forRootAsync, () => { + beforeEach(async () => { + testModule = await Test.createTestingModule( + testModuleFactory([ + AuthVerifyModule.forRootAsync({ + inject: [ + UserLookupServiceFixture, + UserMutateServiceFixture, + OtpServiceFixture, + EmailService, + ], + useFactory: ( + userLookupService, + userMutateService, + otpService, + emailService, + ) => ({ + userLookupService, + userMutateService, + otpService, + emailService, + }), + }), + ]), + ).compile(); + }); + + it('module should be loaded', async () => { + commonVars(); + commonTests(); + }); + }); + + describe(AuthVerifyModule.registerAsync, () => { + beforeEach(async () => { + testModule = await Test.createTestingModule( + testModuleFactory([ + AuthVerifyModule.registerAsync({ + inject: [ + UserLookupServiceFixture, + UserMutateServiceFixture, + OtpServiceFixture, + EmailService, + ], + useFactory: ( + userLookupService, + userMutateService, + otpService, + emailService, + ) => ({ + userLookupService, + userMutateService, + otpService, + emailService, + }), + }), + ]), + ).compile(); + }); + + it('module should be loaded', async () => { + commonVars(); + commonTests(); + }); + }); + + describe(AuthVerifyModule.forFeature, () => { + @Module({}) + class GlobalModule {} + + @Module({}) + class ForFeatureModule {} + + @Injectable() + class TestService { + constructor( + @Inject(AUTH_VERIFY_MODULE_SETTINGS_TOKEN) + public settings: AuthVerifySettingsInterface, + @Inject(AUTH_VERIFY_MODULE_EMAIL_SERVICE_TOKEN) + public emailService: AuthVerifyEmailServiceInterface, + @Inject(AUTH_VERIFY_MODULE_OTP_SERVICE_TOKEN) + public otpService: AuthVerifyOtpServiceInterface, + @Inject(AUTH_VERIFY_MODULE_USER_LOOKUP_SERVICE_TOKEN) + public userLookupService: AuthVerifyUserLookupServiceInterface, + @Inject(AUTH_VERIFY_MODULE_USER_MUTATE_SERVICE_TOKEN) + public userMutateService: AuthVerifyUserMutateServiceInterface, + ) {} + } + + let testService: TestService; + const ffEmailService = mock(); + const ffOtpService = new OtpServiceFixture(); + const ffUserLookupService = new UserLookupServiceFixture(); + const ffUserMutateService = new UserMutateServiceFixture(); + + beforeEach(async () => { + const globalModule = testModuleFactory([ + AuthVerifyModule.forRootAsync({ + inject: [ + UserLookupServiceFixture, + UserMutateServiceFixture, + OtpServiceFixture, + EmailService, + ], + useFactory: ( + userLookupService, + userMutateService, + otpService, + emailService, + ) => ({ + userLookupService, + userMutateService, + otpService, + emailService, + }), + }), + ]); + + testModule = await Test.createTestingModule({ + imports: [ + { module: GlobalModule, ...globalModule }, + { + module: ForFeatureModule, + imports: [ + AuthVerifyModule.forFeature({ + emailService: ffEmailService, + otpService: ffOtpService, + userLookupService: ffUserLookupService, + userMutateService: ffUserMutateService, + }), + ], + providers: [TestService], + }, + ], + }).compile(); + + testService = testModule.get(TestService); + }); + + it('module should be loaded', async () => { + commonVars(); + commonTests(); + }); + + it('should have custom providers', async () => { + commonVars(); + expect(testService.emailService).toBe(ffEmailService); + expect(testService.emailService).not.toBe(emailService); + expect(testService.otpService).toBe(ffOtpService); + expect(testService.otpService).not.toBe(otpService); + expect(testService.userLookupService).toBe(ffUserLookupService); + expect(testService.userLookupService).not.toBe(userLookupService); + expect(testService.userMutateService).toBe(ffUserMutateService); + expect(testService.userMutateService).not.toBe(userMutateService); + }); + }); + + function commonVars() { + authVerifyModule = testModule.get(AuthVerifyModule); + otpService = + testModule.get(OtpServiceFixture); + emailService = testModule.get(EmailService); + userLookupService = testModule.get( + UserLookupServiceFixture, + ); + userMutateService = testModule.get( + UserMutateServiceFixture, + ); + authVerifyService = testModule.get(AuthVerifyService); + authVerifyController = + testModule.get(AuthVerifyController); + } + + function commonTests() { + expect(authVerifyModule).toBeInstanceOf(AuthVerifyModule); + expect(otpService).toBeInstanceOf(OtpServiceFixture); + expect(emailService).toBeInstanceOf(EmailService); + expect(userLookupService).toBeInstanceOf(UserLookupServiceFixture); + expect(userMutateService).toBeInstanceOf(UserMutateServiceFixture); + expect(authVerifyService).toBeInstanceOf(AuthVerifyService); + expect(authVerifyController).toBeInstanceOf(AuthVerifyController); + } +}); + +function testModuleFactory( + extraImports: DynamicModule['imports'] = [], +): ModuleMetadata { + return { + imports: [ + TypeOrmModuleFixture, + UserModuleFixture, + OtpModuleFixture, + EmailModule.forRoot({ mailerService: new MailerServiceFixture() }), + ...extraImports, + ], + }; +} diff --git a/packages/nestjs-auth-verify/src/auth-verify.module.ts b/packages/nestjs-auth-verify/src/auth-verify.module.ts new file mode 100644 index 000000000..d62406988 --- /dev/null +++ b/packages/nestjs-auth-verify/src/auth-verify.module.ts @@ -0,0 +1,40 @@ +import { DynamicModule, Module } from '@nestjs/common'; + +import { + AuthVerifyAsyncOptions, + AuthVerifyModuleClass, + AuthVerifyOptions, + createAuthVerifyControllers, + createAuthVerifyExports, + createAuthVerifyImports, + createAuthVerifyProviders, +} from './auth-verify.module-definition'; + +@Module({}) +export class AuthVerifyModule extends AuthVerifyModuleClass { + static register(options: AuthVerifyOptions): DynamicModule { + return super.register(options); + } + + static registerAsync(options: AuthVerifyAsyncOptions): DynamicModule { + return super.registerAsync(options); + } + + static forRoot(options: AuthVerifyOptions): DynamicModule { + return super.register({ ...options, global: true }); + } + + static forRootAsync(options: AuthVerifyAsyncOptions): DynamicModule { + return super.registerAsync({ ...options, global: true }); + } + + static forFeature(options: AuthVerifyOptions): DynamicModule { + return { + module: AuthVerifyModule, + imports: createAuthVerifyImports(), + providers: createAuthVerifyProviders({ overrides: options }), + controllers: createAuthVerifyControllers(options), + exports: createAuthVerifyExports(), + }; + } +} diff --git a/packages/nestjs-auth-verify/src/auth-verify.utils.spec.ts b/packages/nestjs-auth-verify/src/auth-verify.utils.spec.ts new file mode 100644 index 000000000..a2323c3a2 --- /dev/null +++ b/packages/nestjs-auth-verify/src/auth-verify.utils.spec.ts @@ -0,0 +1,13 @@ +import { formatTokenUrl } from './auth-verify.utils'; + +describe('formatTokenUrl', () => { + it('should return the correct URL', () => { + const baseUrl = 'https://example.com'; + const passcode = '123456'; + const expectedUrl = 'https://example.com/123456'; + + const result = formatTokenUrl(baseUrl, passcode); + + expect(result).toBe(expectedUrl); + }); +}); diff --git a/packages/nestjs-auth-verify/src/auth-verify.utils.ts b/packages/nestjs-auth-verify/src/auth-verify.utils.ts new file mode 100644 index 000000000..1ff64db9d --- /dev/null +++ b/packages/nestjs-auth-verify/src/auth-verify.utils.ts @@ -0,0 +1,3 @@ +export function formatTokenUrl(baseUrl: string, passcode: string) { + return `${baseUrl}/${passcode}`; +} diff --git a/packages/nestjs-auth-verify/src/config/auth-verify-default.config.ts b/packages/nestjs-auth-verify/src/config/auth-verify-default.config.ts new file mode 100644 index 000000000..d126663bd --- /dev/null +++ b/packages/nestjs-auth-verify/src/config/auth-verify-default.config.ts @@ -0,0 +1,30 @@ +import { registerAs } from '@nestjs/config'; +import { AUTH_VERIFY_MODULE_DEFAULT_SETTINGS_TOKEN } from '../auth-verify.constants'; +import { AuthVerifySettingsInterface } from '../interfaces/auth-verify-settings.interface'; +import { formatTokenUrl } from '../auth-verify.utils'; + +/** + * Default configuration for auth verify. + */ +export const authVerifyDefaultConfig = registerAs( + AUTH_VERIFY_MODULE_DEFAULT_SETTINGS_TOKEN, + (): AuthVerifySettingsInterface => ({ + email: { + from: 'from', + baseUrl: 'baseUrl', + tokenUrlFormatter: formatTokenUrl, + templates: { + verifyEmail: { + fileName: __dirname + '/../assets/verify-password.template.hbs', + subject: 'Password Verify', + }, + }, + }, + otp: { + assignment: 'userOtp', + category: 'auth-verify', + type: 'uuid', + expiresIn: '1h', + }, + }), +); diff --git a/packages/nestjs-auth-verify/src/dto/auth-verify-update.dto.ts b/packages/nestjs-auth-verify/src/dto/auth-verify-update.dto.ts new file mode 100644 index 000000000..50fa09857 --- /dev/null +++ b/packages/nestjs-auth-verify/src/dto/auth-verify-update.dto.ts @@ -0,0 +1,12 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsString } from 'class-validator'; + +export class AuthVerifyUpdateDto { + @ApiProperty({ + title: 'account confirm passcode', + type: 'string', + description: 'Passcode used to confirm account', + }) + @IsString() + passcode = ''; +} diff --git a/packages/nestjs-auth-verify/src/dto/auth-verify.dto.ts b/packages/nestjs-auth-verify/src/dto/auth-verify.dto.ts new file mode 100644 index 000000000..913a8432f --- /dev/null +++ b/packages/nestjs-auth-verify/src/dto/auth-verify.dto.ts @@ -0,0 +1,13 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsEmail } from 'class-validator'; + +export class AuthVerifyDto { + @ApiProperty({ + title: 'user email', + type: 'string', + description: + 'Verify email by providing an email that will receive a confirmation link', + }) + @IsEmail() + email = ''; +} diff --git a/packages/nestjs-auth-verify/src/index.spec.ts b/packages/nestjs-auth-verify/src/index.spec.ts new file mode 100644 index 000000000..4d925a4d8 --- /dev/null +++ b/packages/nestjs-auth-verify/src/index.spec.ts @@ -0,0 +1,29 @@ +import { + AuthVerifyModule, + AuthVerifyController, + AuthVerifyService, + AuthVerifyNotificationService, + AuthVerifyDto, +} from './index'; + +describe('Index', () => { + it('AuthVerifyModule should be a function', () => { + expect(AuthVerifyModule).toBeInstanceOf(Function); + }); + + it('AuthVerifyController should be a function', () => { + expect(AuthVerifyController).toBeInstanceOf(Function); + }); + + it('AuthVerifyService should be a function', () => { + expect(AuthVerifyService).toBeInstanceOf(Function); + }); + + it('AuthVerifyNotificationService should be a function', () => { + expect(AuthVerifyNotificationService).toBeInstanceOf(Function); + }); + + it('AuthVerifyVerifyLoginDto should be a function', () => { + expect(AuthVerifyDto).toBeInstanceOf(Function); + }); +}); diff --git a/packages/nestjs-auth-verify/src/index.ts b/packages/nestjs-auth-verify/src/index.ts new file mode 100644 index 000000000..8b46c3e69 --- /dev/null +++ b/packages/nestjs-auth-verify/src/index.ts @@ -0,0 +1,6 @@ +export { AuthVerifyModule } from './auth-verify.module'; +export { AuthVerifyController } from './auth-verify.controller'; +export { AuthVerifyService } from './services/auth-verify.service'; +export { AuthVerifyNotificationService } from './services/auth-verify-notification.service'; +export { AuthVerifyDto } from './dto/auth-verify.dto'; +export { AuthVerifyUpdateDto } from './dto/auth-verify-update.dto'; diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify-email.service.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify-email.service.interface.ts new file mode 100644 index 000000000..f1b62ee77 --- /dev/null +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify-email.service.interface.ts @@ -0,0 +1,3 @@ +import { EmailSendInterface } from '@concepta/nestjs-common'; + +export interface AuthVerifyEmailServiceInterface extends EmailSendInterface {} diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify-notification.service.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify-notification.service.interface.ts new file mode 100644 index 000000000..90b496b61 --- /dev/null +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify-notification.service.interface.ts @@ -0,0 +1,10 @@ +import { EmailSendOptionsInterface } from '@concepta/nestjs-common'; + +export interface AuthVerifyNotificationServiceInterface { + sendEmail(sendMailOptions: EmailSendOptionsInterface): Promise; + sendVerifyEmail( + email: string, + passcode: string, + resetTokenExp: Date, + ): Promise; +} diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify-options-extras.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify-options-extras.interface.ts new file mode 100644 index 000000000..1c2921cdb --- /dev/null +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify-options-extras.interface.ts @@ -0,0 +1,4 @@ +import { DynamicModule } from '@nestjs/common'; + +export interface AuthVerifyOptionsExtrasInterface + extends Pick {} diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify-options.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify-options.interface.ts new file mode 100644 index 000000000..462c08116 --- /dev/null +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify-options.interface.ts @@ -0,0 +1,17 @@ +import { EntityManagerProxy } from '@concepta/typeorm-common'; +import { AuthVerifySettingsInterface } from './auth-verify-settings.interface'; +import { AuthVerifyOtpServiceInterface } from './auth-verify-otp.service.interface'; +import { AuthVerifyEmailServiceInterface } from './auth-verify-email.service.interface'; +import { AuthVerifyNotificationServiceInterface } from './auth-verify-notification.service.interface'; +import { AuthVerifyUserLookupServiceInterface } from './auth-verify-user-lookup.service.interface'; +import { AuthVerifyUserMutateServiceInterface } from './auth-verify-user-mutate.service.interface'; + +export interface AuthVerifyOptionsInterface { + settings?: AuthVerifySettingsInterface; + otpService: AuthVerifyOtpServiceInterface; + emailService: AuthVerifyEmailServiceInterface; + userLookupService: AuthVerifyUserLookupServiceInterface; + userMutateService: AuthVerifyUserMutateServiceInterface; + notificationService?: AuthVerifyNotificationServiceInterface; + entityManagerProxy?: EntityManagerProxy; +} diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify-otp.service.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify-otp.service.interface.ts new file mode 100644 index 000000000..d90683353 --- /dev/null +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify-otp.service.interface.ts @@ -0,0 +1,10 @@ +import { + OtpClearInterface, + OtpCreateInterface, + OtpValidateInterface, +} from '@concepta/nestjs-common'; + +export interface AuthVerifyOtpServiceInterface + extends OtpCreateInterface, + OtpValidateInterface, + OtpClearInterface {} diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify-settings.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify-settings.interface.ts new file mode 100644 index 000000000..16d9a1a43 --- /dev/null +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify-settings.interface.ts @@ -0,0 +1,22 @@ +import { ReferenceAssignment } from '@concepta/nestjs-common'; +import { OtpCreatableInterface } from '@concepta/nestjs-common'; + +export interface AuthVerifyOtpSettingsInterface + extends Pick { + assignment: ReferenceAssignment; +} + +export interface AuthVerifySettingsInterface { + email: { + from: string; + baseUrl: string; + tokenUrlFormatter?: (baseUrl: string, passcode: string) => string; + templates: { + verifyEmail: { + fileName: string; + subject: string; + }; + }; + }; + otp: AuthVerifyOtpSettingsInterface; +} diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify-user-lookup.service.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify-user-lookup.service.interface.ts new file mode 100644 index 000000000..2ede63f76 --- /dev/null +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify-user-lookup.service.interface.ts @@ -0,0 +1,21 @@ +import { + LookupEmailInterface, + LookupIdInterface, + ReferenceEmail, + ReferenceId, + ReferenceIdInterface, + ReferenceUsernameInterface, +} from '@concepta/nestjs-common'; +import { QueryOptionsInterface } from '@concepta/typeorm-common'; + +export interface AuthVerifyUserLookupServiceInterface + extends LookupIdInterface< + ReferenceId, + ReferenceIdInterface, + QueryOptionsInterface + >, + LookupEmailInterface< + ReferenceEmail, + ReferenceIdInterface & ReferenceUsernameInterface, + QueryOptionsInterface + > {} diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify-user-mutate.service.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify-user-mutate.service.interface.ts new file mode 100644 index 000000000..f0b9af7b8 --- /dev/null +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify-user-mutate.service.interface.ts @@ -0,0 +1,14 @@ +import { + ReferenceActiveInterface, + ReferenceEmailInterface, + ReferenceIdInterface, + UpdateOneInterface, +} from '@concepta/nestjs-common'; +import { QueryOptionsInterface } from '@concepta/typeorm-common'; + +export interface AuthVerifyUserMutateServiceInterface + extends UpdateOneInterface< + ReferenceIdInterface & ReferenceActiveInterface, + ReferenceIdInterface & ReferenceEmailInterface & ReferenceActiveInterface, + QueryOptionsInterface + > {} diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify.service.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify.service.interface.ts new file mode 100644 index 000000000..dc30aa2d6 --- /dev/null +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify.service.interface.ts @@ -0,0 +1,14 @@ +import { ReferenceIdInterface } from '@concepta/nestjs-common'; +import { QueryOptionsInterface } from '@concepta/typeorm-common'; + +export interface AuthVerifyServiceInterface { + send(email: string, queryOptions?: QueryOptionsInterface): Promise; + confirmUser( + passcode: string, + queryOptions?: QueryOptionsInterface, + ): Promise; + revokeAllUserVerifyToken( + email: string, + queryOptions?: QueryOptionsInterface, + ): Promise; +} diff --git a/packages/nestjs-auth-verify/src/services/auth-verify-notification.service.spec.ts b/packages/nestjs-auth-verify/src/services/auth-verify-notification.service.spec.ts new file mode 100644 index 000000000..96e910d7f --- /dev/null +++ b/packages/nestjs-auth-verify/src/services/auth-verify-notification.service.spec.ts @@ -0,0 +1,68 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { INestApplication } from '@nestjs/common'; +import { EmailService } from '@concepta/nestjs-email'; + +import { AUTH_VERIFY_MODULE_EMAIL_SERVICE_TOKEN } from '../auth-verify.constants'; +import { AuthVerifyNotificationService } from './auth-verify-notification.service'; + +import { AppModuleFixture } from '../__fixtures__/app.module.fixture'; + +describe('AuthVerifyNotificationService', () => { + let app: INestApplication; + let emailService: EmailService; + let authVerifyNotificationService: AuthVerifyNotificationService; + + let spyEmailService: jest.SpyInstance; + + beforeEach(async () => { + const moduleFixture: TestingModule = await Test.createTestingModule({ + imports: [AppModuleFixture], + }).compile(); + app = moduleFixture.createNestApplication(); + await app.init(); + + emailService = moduleFixture.get( + AUTH_VERIFY_MODULE_EMAIL_SERVICE_TOKEN, + ); + + spyEmailService = jest + .spyOn(emailService, 'sendMail') + .mockResolvedValue(undefined); + + authVerifyNotificationService = + moduleFixture.get( + AuthVerifyNotificationService, + ); + }); + + afterEach(async () => { + jest.clearAllMocks(); + return app ? await app.close() : undefined; + }); + + it('Send email', async () => { + await authVerifyNotificationService.sendEmail({}); + expect(spyEmailService).toHaveBeenCalledTimes(1); + }); + + it('Send verify email password', async () => { + await authVerifyNotificationService.sendVerifyEmail( + 'me@mail.com', + 'me', + new Date(), + ); + expect(spyEmailService).toHaveBeenCalledTimes(1); + }); + + it('Send verify email password', async () => { + authVerifyNotificationService['settings'].email.tokenUrlFormatter = + undefined; + + await authVerifyNotificationService.sendVerifyEmail( + 'me@mail.com', + 'me', + new Date(), + ); + expect(spyEmailService).toHaveBeenCalledTimes(1); + }); +}); diff --git a/packages/nestjs-auth-verify/src/services/auth-verify-notification.service.ts b/packages/nestjs-auth-verify/src/services/auth-verify-notification.service.ts new file mode 100644 index 000000000..2b540695e --- /dev/null +++ b/packages/nestjs-auth-verify/src/services/auth-verify-notification.service.ts @@ -0,0 +1,49 @@ +import { AuthVerifyNotificationServiceInterface } from '../interfaces/auth-verify-notification.service.interface'; +import { EmailSendOptionsInterface } from '@concepta/nestjs-common'; +import { Inject, Injectable } from '@nestjs/common'; +import { + AUTH_VERIFY_MODULE_EMAIL_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_SETTINGS_TOKEN, +} from '../auth-verify.constants'; +import { AuthVerifyEmailServiceInterface } from '../interfaces/auth-verify-email.service.interface'; +import { AuthVerifySettingsInterface } from '../interfaces/auth-verify-settings.interface'; +import { formatTokenUrl } from '../auth-verify.utils'; + +@Injectable() +export class AuthVerifyNotificationService + implements AuthVerifyNotificationServiceInterface +{ + constructor( + @Inject(AUTH_VERIFY_MODULE_SETTINGS_TOKEN) + private readonly settings: AuthVerifySettingsInterface, + @Inject(AUTH_VERIFY_MODULE_EMAIL_SERVICE_TOKEN) + private readonly emailService: AuthVerifyEmailServiceInterface, + ) {} + + async sendEmail(sendMailOptions: EmailSendOptionsInterface): Promise { + await this.emailService.sendMail(sendMailOptions); + } + + async sendVerifyEmail( + email: string, + passcode: string, + resetTokenExp: Date, + ): Promise { + const { + from, + baseUrl, + tokenUrlFormatter = formatTokenUrl, + } = this.settings.email; + const { subject, fileName } = this.settings.email.templates.verifyEmail; + await this.sendEmail({ + from, + subject, + to: email, + template: fileName, + context: { + tokenUrl: tokenUrlFormatter(baseUrl, passcode), + tokenExp: resetTokenExp, + }, + }); + } +} diff --git a/packages/nestjs-auth-verify/src/services/auth-verify.service.spec.ts b/packages/nestjs-auth-verify/src/services/auth-verify.service.spec.ts new file mode 100644 index 000000000..dc758f6bc --- /dev/null +++ b/packages/nestjs-auth-verify/src/services/auth-verify.service.spec.ts @@ -0,0 +1,150 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { INestApplication } from '@nestjs/common'; + +import { + AUTH_VERIFY_MODULE_SETTINGS_TOKEN, + AUTH_VERIFY_MODULE_USER_LOOKUP_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_USER_MUTATE_SERVICE_TOKEN, +} from '../auth-verify.constants'; + +import { AuthVerifyService } from './auth-verify.service'; +import { AuthVerifyNotificationService } from './auth-verify-notification.service'; + +import { AuthVerifySettingsInterface } from '../interfaces/auth-verify-settings.interface'; +import { AuthVerifyOtpServiceInterface } from '../interfaces/auth-verify-otp.service.interface'; +import { AuthVerifyUserLookupServiceInterface } from '../interfaces/auth-verify-user-lookup.service.interface'; +import { AuthVerifyNotificationServiceInterface } from '../interfaces/auth-verify-notification.service.interface'; +import { AuthVerifyUserMutateServiceInterface } from '../interfaces/auth-verify-user-mutate.service.interface'; + +import { AppModuleFixture } from '../__fixtures__/app.module.fixture'; +import { OtpServiceFixture } from '../__fixtures__/otp/otp.service.fixture'; +import { UserFixture } from '../__fixtures__/user/user.fixture'; + +describe(AuthVerifyService, () => { + let app: INestApplication; + let authVerifyService: AuthVerifyService; + let notificationService: AuthVerifyNotificationServiceInterface; + let otpService: AuthVerifyOtpServiceInterface; + let userLookupService: AuthVerifyUserLookupServiceInterface; + let userMutateService: AuthVerifyUserMutateServiceInterface; + let settings: AuthVerifySettingsInterface; + + let sendVerifyEmail: jest.SpyInstance; + let spyOtpServiceValidate: jest.SpyInstance; + let spyUserLookupServiceByEmail: jest.SpyInstance; + let spyUserMutateServiceUpdate: jest.SpyInstance; + + beforeEach(async () => { + const moduleFixture: TestingModule = await Test.createTestingModule({ + imports: [AppModuleFixture], + }).compile(); + + app = moduleFixture.createNestApplication(); + await app.init(); + + authVerifyService = moduleFixture.get(AuthVerifyService); + + otpService = + moduleFixture.get(OtpServiceFixture); + + settings = moduleFixture.get( + AUTH_VERIFY_MODULE_SETTINGS_TOKEN, + ) as AuthVerifySettingsInterface; + + notificationService = + moduleFixture.get( + AuthVerifyNotificationService, + ); + + userLookupService = moduleFixture.get( + AUTH_VERIFY_MODULE_USER_LOOKUP_SERVICE_TOKEN, + ); + + userMutateService = moduleFixture.get( + AUTH_VERIFY_MODULE_USER_MUTATE_SERVICE_TOKEN, + ); + + sendVerifyEmail = jest + .spyOn(notificationService, 'sendVerifyEmail') + .mockResolvedValue(undefined); + + spyOtpServiceValidate = jest.spyOn(otpService, 'validate'); + spyUserLookupServiceByEmail = jest.spyOn(userLookupService, 'byEmail'); + spyUserMutateServiceUpdate = jest.spyOn(userMutateService, 'update'); + }); + + afterEach(async () => { + jest.clearAllMocks(); + return app ? await app.close() : undefined; + }); + + describe(AuthVerifyService.prototype.send, () => { + it('should send password verify', async () => { + const result = await authVerifyService.send(UserFixture.email); + + expect(result).toBeUndefined(); + expect(spyUserLookupServiceByEmail).toHaveBeenCalledTimes(1); + expect(spyUserLookupServiceByEmail).toHaveBeenCalledWith( + UserFixture.email, + undefined, + ); + + expect(sendVerifyEmail).toHaveBeenCalledTimes(1); + expect(sendVerifyEmail).toHaveBeenCalledWith( + UserFixture.email, + 'GOOD_PASSCODE', + expect.any(Date), + ); + }); + }); + + describe(AuthVerifyService.prototype.validatePasscode, () => { + it('should call otp validator', async () => { + await authVerifyService.validatePasscode('GOOD_PASSCODE'); + + expect(spyOtpServiceValidate).toHaveBeenCalledWith( + settings.otp.assignment, + { category: settings.otp.category, passcode: 'GOOD_PASSCODE' }, + false, + undefined, + ); + }); + + it('should validate good passcode', async () => { + const otp = await authVerifyService.validatePasscode('GOOD_PASSCODE'); + expect(otp).toEqual({ assignee: UserFixture }); + }); + + it('should not validate bad passcode', async () => { + const otp = await authVerifyService.validatePasscode('BAD_PASSCODE'); + expect(otp).toBeNull(); + }); + }); + + describe(AuthVerifyService.prototype.confirmUser, () => { + it('should call user mutate service', async () => { + await authVerifyService.confirmUser('GOOD_PASSCODE'); + + expect(spyUserMutateServiceUpdate).toHaveBeenCalledTimes(1); + expect(spyUserMutateServiceUpdate).toHaveBeenCalledWith( + { + id: UserFixture.id, + active: true, + }, + expect.any(Object), + ); + }); + + it('should update password', async () => { + const user = await authVerifyService.confirmUser('GOOD_PASSCODE'); + + expect(user).toEqual(UserFixture); + }); + + it('should fail to update password', async () => { + const user = await authVerifyService.confirmUser('FAKE_PASSCODE'); + + expect(user).toBeNull(); + }); + }); +}); diff --git a/packages/nestjs-auth-verify/src/services/auth-verify.service.ts b/packages/nestjs-auth-verify/src/services/auth-verify.service.ts new file mode 100644 index 000000000..70dc70bf9 --- /dev/null +++ b/packages/nestjs-auth-verify/src/services/auth-verify.service.ts @@ -0,0 +1,182 @@ +import { Inject, Injectable } from '@nestjs/common'; + +import { AuthVerifyServiceInterface } from '../interfaces/auth-verify.service.interface'; +import { AuthVerifySettingsInterface } from '../interfaces/auth-verify-settings.interface'; +import { AuthVerifyOtpServiceInterface } from '../interfaces/auth-verify-otp.service.interface'; +import { AuthVerifyUserLookupServiceInterface } from '../interfaces/auth-verify-user-lookup.service.interface'; +import { AuthVerifyUserMutateServiceInterface } from '../interfaces/auth-verify-user-mutate.service.interface'; +import { + AUTH_VERIFY_MODULE_SETTINGS_TOKEN, + AUTH_VERIFY_MODULE_OTP_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_USER_LOOKUP_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_USER_MUTATE_SERVICE_TOKEN, + AUTH_VERIFY_MODULE_ENTITY_MANAGER_PROXY_TOKEN, +} from '../auth-verify.constants'; +import { AuthVerifyNotificationService } from './auth-verify-notification.service'; +import { + ReferenceAssigneeInterface, + ReferenceIdInterface, +} from '@concepta/nestjs-common'; +import { + EntityManagerProxy, + QueryOptionsInterface, +} from '@concepta/typeorm-common'; + +@Injectable() +export class AuthVerifyService implements AuthVerifyServiceInterface { + constructor( + @Inject(AUTH_VERIFY_MODULE_SETTINGS_TOKEN) + private readonly config: AuthVerifySettingsInterface, + @Inject(AUTH_VERIFY_MODULE_OTP_SERVICE_TOKEN) + private readonly otpService: AuthVerifyOtpServiceInterface, + @Inject(AUTH_VERIFY_MODULE_USER_LOOKUP_SERVICE_TOKEN) + private readonly userLookupService: AuthVerifyUserLookupServiceInterface, + @Inject(AUTH_VERIFY_MODULE_USER_MUTATE_SERVICE_TOKEN) + private readonly userMutateService: AuthVerifyUserMutateServiceInterface, + private readonly notificationService: AuthVerifyNotificationService, + @Inject(AUTH_VERIFY_MODULE_ENTITY_MANAGER_PROXY_TOKEN) + private readonly entityManagerProxy: EntityManagerProxy, + ) {} + + /** + * Send email to verify email. + * + * @param email - user email + */ + async send( + email: string, + queryOptions?: QueryOptionsInterface, + ): Promise { + // verify the user by providing an email + const user = await this.userLookupService.byEmail(email, queryOptions); + + // did we find a user? + if (user) { + // extract required otp properties + const { category, assignment, type, expiresIn } = this.config.otp; + // create an OTP save it in the database + const otp = await this.otpService.create( + assignment, + { + category, + type, + expiresIn, + assignee: { + id: user.id, + }, + }, + queryOptions, + ); + + // send en email with a verify OTP + await this.notificationService.sendVerifyEmail( + email, + otp.passcode, + otp.expirationDate, + ); + } + + // !!! Falling through to void is intentional !!!! + // !!! Do NOT give any indication if e-mail does not exist !!!! + } + + /** + * Validate passcode and return it's user. + * + * @param passcode - user's passcode + * @param deleteIfValid - flag to delete if valid or not + */ + async validatePasscode( + passcode: string, + deleteIfValid = false, + queryOptions?: QueryOptionsInterface, + ): Promise { + // extract required properties + const { category, assignment } = this.config.otp; + + // validate passcode return passcode's user was found + return this.otpService.validate( + assignment, + { category, passcode }, + deleteIfValid, + queryOptions, + ); + } + + /** + * Change user's password by providing it's OTP passcode and the new password. + * + * @param passcode - OTP user's passcode + * @param queryOptions - query options + */ + async confirmUser( + passcode: string, + queryOptions?: QueryOptionsInterface, + ): Promise { + // run in transaction + return this.entityManagerProxy + .transaction(queryOptions) + .commit(async (transaction): Promise => { + // nested query options + const nestedQueryOptions = { ...queryOptions, transaction }; + + // get otp by passcode, but no delete it until all workflow pass + const otp = await this.validatePasscode( + passcode, + true, + nestedQueryOptions, + ); + + // did we get an otp? + if (otp) { + // call user mutate service + const user = await this.userMutateService.update( + { + id: otp.assignee.id, + active: true, + }, + nestedQueryOptions, + ); + + if (user) { + await this.revokeAllUserVerifyToken(user.email, nestedQueryOptions); + } + + return user; + } + + // otp was not found + return null; + }); + } + + /** + * Clear all other user verify tokens + * + * @param email - user email + */ + async revokeAllUserVerifyToken( + email: string, + queryOptions?: QueryOptionsInterface, + ): Promise { + // verify users password by providing an email + const user = await this.userLookupService.byEmail(email, queryOptions); + + // did we find a user? + if (user) { + // extract required otp properties + const { category, assignment } = this.config.otp; + // clear all user's otps in DB + await this.otpService.clear( + assignment, + { + category, + assignee: { + id: user.id, + }, + }, + queryOptions, + ); + } + } +} diff --git a/packages/nestjs-auth-verify/tsconfig.json b/packages/nestjs-auth-verify/tsconfig.json new file mode 100644 index 000000000..ef9980950 --- /dev/null +++ b/packages/nestjs-auth-verify/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "composite": true, + "rootDir": "./src", + "outDir": "./dist", + "typeRoots": [ + "./node_modules/@types", + "../../node_modules/@types" + ] + }, + "include": [ + "src/**/*.ts" + ] +} diff --git a/packages/nestjs-auth-verify/typedoc.json b/packages/nestjs-auth-verify/typedoc.json new file mode 100644 index 000000000..944fda5ad --- /dev/null +++ b/packages/nestjs-auth-verify/typedoc.json @@ -0,0 +1,3 @@ +{ + "entryPoints": ["src/index.ts"] +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 9d0a5435f..15d05093e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -109,6 +109,9 @@ }, { "path": "packages/nestjs-report" + }, + { + "path": "packages/nestjs-auth-verify" } ] } diff --git a/yarn.lock b/yarn.lock index 5e887a97d..baebc0b5e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -63,18 +63,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.2": - version: 7.26.2 - resolution: "@babel/code-frame@npm:7.26.2" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.25.9" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.0.0" - checksum: 10c0/7d79621a6849183c415486af99b1a20b84737e8c11cd55b6544f688c51ce1fd710e6d869c3dd21232023da272a79b91efb3e83b5bc2dc65c1187c5fcd1b72ea8 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.24.7": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.24.7": version: 7.24.7 resolution: "@babel/code-frame@npm:7.24.7" dependencies: @@ -114,7 +103,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.6": +"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.6, @babel/generator@npm:^7.7.2": version: 7.25.6 resolution: "@babel/generator@npm:7.25.6" dependencies: @@ -126,19 +115,6 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.26.3, @babel/generator@npm:^7.7.2": - version: 7.26.3 - resolution: "@babel/generator@npm:7.26.3" - dependencies: - "@babel/parser": "npm:^7.26.3" - "@babel/types": "npm:^7.26.3" - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^3.0.2" - checksum: 10c0/54f260558e3e4ec8942da3cde607c35349bb983c3a7c5121243f96893fba3e8cd62e1f1773b2051f936f8c8a10987b758d5c7d76dbf2784e95bb63ab4843fa00 - languageName: node - linkType: hard - "@babel/helper-compilation-targets@npm:^7.25.2": version: 7.25.2 resolution: "@babel/helper-compilation-targets@npm:7.25.2" @@ -176,14 +152,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.8.0": - version: 7.25.9 - resolution: "@babel/helper-plugin-utils@npm:7.25.9" - checksum: 10c0/483066a1ba36ff16c0116cd24f93de05de746a603a777cd695ac7a1b034928a65a4ecb35f255761ca56626435d7abdb73219eba196f9aa83b6c3c3169325599d - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.24.8": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.24.8, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.24.8 resolution: "@babel/helper-plugin-utils@npm:7.24.8" checksum: 10c0/0376037f94a3bfe6b820a39f81220ac04f243eaee7193774b983e956c1750883ff236b30785795abbcda43fac3ece74750566830c2daa4d6e3870bb0dff34c2d @@ -207,13 +176,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-string-parser@npm:7.25.9" - checksum: 10c0/7244b45d8e65f6b4338a6a68a8556f2cb161b782343e97281a5f2b9b93e420cad0d9f5773a59d79f61d0c448913d06f6a2358a87f2e203cf112e3c5b53522ee6 - languageName: node - linkType: hard - "@babel/helper-validator-identifier@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-validator-identifier@npm:7.24.7" @@ -221,13 +183,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-validator-identifier@npm:7.25.9" - checksum: 10c0/4fc6f830177b7b7e887ad3277ddb3b91d81e6c4a24151540d9d1023e8dc6b1c0505f0f0628ae653601eb4388a8db45c1c14b2c07a9173837aef7e4116456259d - languageName: node - linkType: hard - "@babel/helper-validator-option@npm:^7.24.8": version: 7.24.8 resolution: "@babel/helper-validator-option@npm:7.24.8" @@ -257,18 +212,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.3, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.9.6": - version: 7.26.3 - resolution: "@babel/parser@npm:7.26.3" - dependencies: - "@babel/types": "npm:^7.26.3" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/48f736374e61cfd10ddbf7b80678514ae1f16d0e88bc793d2b505d73d9b987ea786fc8c2f7ee8f8b8c467df062030eb07fd0eb2168f0f541ca1f542775852cad - languageName: node - linkType: hard - -"@babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.6": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.6, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.9.6": version: 7.25.6 resolution: "@babel/parser@npm:7.25.6" dependencies: @@ -464,7 +408,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.25.0": +"@babel/template@npm:^7.25.0, @babel/template@npm:^7.3.3": version: 7.25.0 resolution: "@babel/template@npm:7.25.0" dependencies: @@ -475,18 +419,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.25.9, @babel/template@npm:^7.3.3": - version: 7.25.9 - resolution: "@babel/template@npm:7.25.9" - dependencies: - "@babel/code-frame": "npm:^7.25.9" - "@babel/parser": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/ebe677273f96a36c92cc15b7aa7b11cc8bc8a3bb7a01d55b2125baca8f19cae94ff3ce15f1b1880fb8437f3a690d9f89d4e91f16fc1dc4d3eb66226d128983ab - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.25.2": +"@babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.7.2": version: 7.25.6 resolution: "@babel/traverse@npm:7.25.6" dependencies: @@ -501,32 +434,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.7.2": - version: 7.26.4 - resolution: "@babel/traverse@npm:7.26.4" - dependencies: - "@babel/code-frame": "npm:^7.26.2" - "@babel/generator": "npm:^7.26.3" - "@babel/parser": "npm:^7.26.3" - "@babel/template": "npm:^7.25.9" - "@babel/types": "npm:^7.26.3" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10c0/cf25d0eda9505daa0f0832ad786b9e28c9d967e823aaf7fbe425250ab198c656085495aa6bed678b27929e095c84eea9fd778b851a31803da94c9bc4bf4eaef7 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.3, @babel/types@npm:^7.3.3, @babel/types@npm:^7.6.1, @babel/types@npm:^7.9.6": - version: 7.26.3 - resolution: "@babel/types@npm:7.26.3" - dependencies: - "@babel/helper-string-parser": "npm:^7.25.9" - "@babel/helper-validator-identifier": "npm:^7.25.9" - checksum: 10c0/966c5242c5e55c8704bf7a7418e7be2703a0afa4d19a8480999d5a4ef13d095dd60686615fe5983cb7593b4b06ba3a7de8d6ca501c1d78bdd233a10d90be787b - languageName: node - linkType: hard - -"@babel/types@npm:^7.24.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.6": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.6, @babel/types@npm:^7.3.3, @babel/types@npm:^7.6.1, @babel/types@npm:^7.9.6": version: 7.25.6 resolution: "@babel/types@npm:7.25.6" dependencies: @@ -974,6 +882,38 @@ __metadata: languageName: unknown linkType: soft +"@concepta/nestjs-auth-verify@workspace:packages/nestjs-auth-verify": + version: 0.0.0-use.local + resolution: "@concepta/nestjs-auth-verify@workspace:packages/nestjs-auth-verify" + dependencies: + "@concepta/nestjs-auth-jwt": "npm:^5.1.0" + "@concepta/nestjs-authentication": "npm:^5.1.0" + "@concepta/nestjs-common": "npm:^5.1.0" + "@concepta/nestjs-crud": "npm:^5.1.0" + "@concepta/nestjs-email": "npm:^5.1.0" + "@concepta/nestjs-jwt": "npm:^5.1.0" + "@concepta/nestjs-otp": "npm:^5.1.0" + "@concepta/nestjs-password": "npm:^5.1.0" + "@concepta/nestjs-typeorm-ext": "npm:^5.1.0" + "@concepta/nestjs-user": "npm:^5.1.0" + "@concepta/typeorm-common": "npm:^5.1.0" + "@concepta/typeorm-seeding": "npm:^4.0.0" + "@nestjs/common": "npm:^10.4.1" + "@nestjs/config": "npm:^3.2.3" + "@nestjs/core": "npm:^10.4.1" + "@nestjs/swagger": "npm:^7.4.0" + "@nestjs/testing": "npm:^10.4.1" + "@nestjs/typeorm": "npm:^10.0.2" + jest-mock-extended: "npm:^2.0.9" + supertest: "npm:^6.3.4" + peerDependencies: + class-transformer: "*" + class-validator: "*" + rxjs: ^7.1.0 + typeorm: ^0.3.0 + languageName: unknown + linkType: soft + "@concepta/nestjs-authentication@npm:^5.1.0, @concepta/nestjs-authentication@workspace:packages/nestjs-authentication": version: 0.0.0-use.local resolution: "@concepta/nestjs-authentication@workspace:packages/nestjs-authentication" @@ -2984,20 +2924,13 @@ __metadata: languageName: node linkType: hard -"@microsoft/tsdoc@npm:0.15.0": +"@microsoft/tsdoc@npm:0.15.0, @microsoft/tsdoc@npm:^0.15.0": version: 0.15.0 resolution: "@microsoft/tsdoc@npm:0.15.0" checksum: 10c0/6beaf6e01ff54daeba69862cb3d27e03bbabfe299d23d0fade885f5b29bf98af01cecc746d23875fe60ba89514e3b630b71140b1b18d37301096f7a1e35451aa languageName: node linkType: hard -"@microsoft/tsdoc@npm:^0.15.0": - version: 0.15.1 - resolution: "@microsoft/tsdoc@npm:0.15.1" - checksum: 10c0/09948691fac56c45a0d1920de478d66a30371a325bd81addc92eea5654d95106ce173c440fea1a1bd5bb95b3a544b6d4def7bb0b5a846c05d043575d8369a20c - languageName: node - linkType: hard - "@mrmlnc/readdir-enhanced@npm:^2.2.1": version: 2.2.1 resolution: "@mrmlnc/readdir-enhanced@npm:2.2.1" @@ -3590,7 +3523,7 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/core@npm:1.26.0": +"@opentelemetry/core@npm:1.26.0, @opentelemetry/core@npm:^1.1.0, @opentelemetry/core@npm:^1.25.1, @opentelemetry/core@npm:^1.8.0": version: 1.26.0 resolution: "@opentelemetry/core@npm:1.26.0" dependencies: @@ -3601,17 +3534,6 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/core@npm:1.29.0, @opentelemetry/core@npm:^1.1.0, @opentelemetry/core@npm:^1.25.1, @opentelemetry/core@npm:^1.8.0": - version: 1.29.0 - resolution: "@opentelemetry/core@npm:1.29.0" - dependencies: - "@opentelemetry/semantic-conventions": "npm:1.28.0" - peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10c0/393fa276262ecc0e7bd7db5f507a2118df0725afab0cea1cb071b8d0ec879c08d9d163a83bb13f77a6bd0ad0cb66094856eb19caf225da32d3b1767156105d26 - languageName: node - linkType: hard - "@opentelemetry/instrumentation-connect@npm:0.38.0": version: 0.38.0 resolution: "@opentelemetry/instrumentation-connect@npm:0.38.0" @@ -3870,18 +3792,6 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/resources@npm:1.29.0": - version: 1.29.0 - resolution: "@opentelemetry/resources@npm:1.29.0" - dependencies: - "@opentelemetry/core": "npm:1.29.0" - "@opentelemetry/semantic-conventions": "npm:1.28.0" - peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10c0/10a91597b2ae92eeeeee9645c8147056b930739023bde4f18190317f7e8a05acd9e440b29d04be3580f7af4ffe5ff629d970264278f86574c429685f4804a006 - languageName: node - linkType: hard - "@opentelemetry/sdk-metrics@npm:^1.9.1": version: 1.26.0 resolution: "@opentelemetry/sdk-metrics@npm:1.26.0" @@ -3894,20 +3804,7 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/sdk-trace-base@npm:^1.22": - version: 1.29.0 - resolution: "@opentelemetry/sdk-trace-base@npm:1.29.0" - dependencies: - "@opentelemetry/core": "npm:1.29.0" - "@opentelemetry/resources": "npm:1.29.0" - "@opentelemetry/semantic-conventions": "npm:1.28.0" - peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10c0/870f29d3d72f4d6cbcaada328b544aa111527d72f0818f89bc5661b0427a37618db939cc65e834c8c73bad744665f9ac6dc0ec48276b113b5d4a0913c2b8fece - languageName: node - linkType: hard - -"@opentelemetry/sdk-trace-base@npm:^1.25.1": +"@opentelemetry/sdk-trace-base@npm:^1.22, @opentelemetry/sdk-trace-base@npm:^1.25.1": version: 1.26.0 resolution: "@opentelemetry/sdk-trace-base@npm:1.26.0" dependencies: @@ -3934,13 +3831,6 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/semantic-conventions@npm:1.28.0": - version: 1.28.0 - resolution: "@opentelemetry/semantic-conventions@npm:1.28.0" - checksum: 10c0/deb8a0f744198071e70fea27143cf7c9f7ecb7e4d7b619488c917834ea09b31543c1c2bcea4ec5f3cf68797f0ef3549609c14e859013d9376400ac1499c2b9cb - languageName: node - linkType: hard - "@opentelemetry/sql-common@npm:^0.40.1": version: 0.40.1 resolution: "@opentelemetry/sql-common@npm:0.40.1" @@ -3997,13 +3887,6 @@ __metadata: languageName: node linkType: hard -"@sentry/core@npm:8.42.0": - version: 8.42.0 - resolution: "@sentry/core@npm:8.42.0" - checksum: 10c0/dae94cbb278f9e6db8b93ebe5d9f0b6285bb20f90da42a0a96f35d996132c0e66c92a00ca8a6d6920a9f54460780320b8d4b9afa670b147b12bd9ea64a435793 - languageName: node - linkType: hard - "@sentry/node@npm:^8.26.0": version: 8.27.0 resolution: "@sentry/node@npm:8.27.0" @@ -4062,22 +3945,13 @@ __metadata: languageName: node linkType: hard -"@sentry/types@npm:8.27.0": +"@sentry/types@npm:8.27.0, @sentry/types@npm:^8.26.0": version: 8.27.0 resolution: "@sentry/types@npm:8.27.0" checksum: 10c0/f5cbd7772c4b1a52c645aa3b640c056841625789c71f3d0d935281a37000f02ce9520626f75945357a701d03bb1a4d9617306ea055239e37466b29e2b237b0bc languageName: node linkType: hard -"@sentry/types@npm:^8.26.0": - version: 8.42.0 - resolution: "@sentry/types@npm:8.42.0" - dependencies: - "@sentry/core": "npm:8.42.0" - checksum: 10c0/41acdccfcebe88b137235142d77464708d9d3263f0187221926b7056ce51c883ab8a8b5b7da15f05d0aa5795022948b2fc470a07d010015428abe5b534bf086b - languageName: node - linkType: hard - "@sentry/utils@npm:8.27.0": version: 8.27.0 resolution: "@sentry/utils@npm:8.27.0" @@ -4268,14 +4142,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*": - version: 1.0.6 - resolution: "@types/estree@npm:1.0.6" - checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a - languageName: node - linkType: hard - -"@types/estree@npm:^1.0.5": +"@types/estree@npm:*, @types/estree@npm:^1.0.5": version: 1.0.5 resolution: "@types/estree@npm:1.0.5" checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d @@ -4381,12 +4248,12 @@ __metadata: languageName: node linkType: hard -"@types/jsonwebtoken@npm:*, @types/jsonwebtoken@npm:^9.0.2": - version: 9.0.7 - resolution: "@types/jsonwebtoken@npm:9.0.7" +"@types/jsonwebtoken@npm:*, @types/jsonwebtoken@npm:9.0.6, @types/jsonwebtoken@npm:^9.0.2": + version: 9.0.6 + resolution: "@types/jsonwebtoken@npm:9.0.6" dependencies: "@types/node": "npm:*" - checksum: 10c0/e1cd0e48fcae21b1d4378887a23453bd7212b480a131b11bcda2cdeb0687d03c9646ee5ba592e04cfaf76f7cc80f179950e627cdb3ebc90a5923bce49a35631a + checksum: 10c0/9c29e3896e5fb6056e54d87514643e59e0cfb966ae25171a107776270195bba955f0373e98c8ed6450c145b18984f5df9cf0fcac360f382cec3c7c4d3510b202 languageName: node linkType: hard @@ -4399,15 +4266,6 @@ __metadata: languageName: node linkType: hard -"@types/jsonwebtoken@npm:9.0.6": - version: 9.0.6 - resolution: "@types/jsonwebtoken@npm:9.0.6" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/9c29e3896e5fb6056e54d87514643e59e0cfb966ae25171a107776270195bba955f0373e98c8ed6450c145b18984f5df9cf0fcac360f382cec3c7c4d3510b202 - languageName: node - linkType: hard - "@types/methods@npm:^1.1.4": version: 1.1.4 resolution: "@types/methods@npm:1.1.4" @@ -5023,7 +4881,7 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.12.1": +"@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": version: 1.12.1 resolution: "@webassemblyjs/ast@npm:1.12.1" dependencies: @@ -5033,16 +4891,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.12.1": - version: 1.14.1 - resolution: "@webassemblyjs/ast@npm:1.14.1" - dependencies: - "@webassemblyjs/helper-numbers": "npm:1.13.2" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" - checksum: 10c0/67a59be8ed50ddd33fbb2e09daa5193ac215bf7f40a9371be9a0d9797a114d0d1196316d2f3943efdb923a3d809175e1563a3cb80c814fb8edccd1e77494972b - languageName: node - linkType: hard - "@webassemblyjs/floating-point-hex-parser@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" @@ -5050,13 +4898,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/floating-point-hex-parser@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.13.2" - checksum: 10c0/0e88bdb8b50507d9938be64df0867f00396b55eba9df7d3546eb5dc0ca64d62e06f8d881ec4a6153f2127d0f4c11d102b6e7d17aec2f26bb5ff95a5e60652412 - languageName: node - linkType: hard - "@webassemblyjs/helper-api-error@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" @@ -5064,13 +4905,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-api-error@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/helper-api-error@npm:1.13.2" - checksum: 10c0/31be497f996ed30aae4c08cac3cce50c8dcd5b29660383c0155fce1753804fc55d47fcba74e10141c7dd2899033164e117b3bcfcda23a6b043e4ded4f1003dfb - languageName: node - linkType: hard - "@webassemblyjs/helper-buffer@npm:1.12.1": version: 1.12.1 resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" @@ -5089,17 +4923,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-numbers@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/helper-numbers@npm:1.13.2" - dependencies: - "@webassemblyjs/floating-point-hex-parser": "npm:1.13.2" - "@webassemblyjs/helper-api-error": "npm:1.13.2" - "@xtuc/long": "npm:4.2.2" - checksum: 10c0/9c46852f31b234a8fb5a5a9d3f027bc542392a0d4de32f1a9c0075d5e8684aa073cb5929b56df565500b3f9cc0a2ab983b650314295b9bf208d1a1651bfc825a - languageName: node - linkType: hard - "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" @@ -5107,13 +4930,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-wasm-bytecode@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.13.2" - checksum: 10c0/c4355d14f369b30cf3cbdd3acfafc7d0488e086be6d578e3c9780bd1b512932352246be96e034e2a7fcfba4f540ec813352f312bfcbbfe5bcfbf694f82ccc682 - languageName: node - linkType: hard - "@webassemblyjs/helper-wasm-section@npm:1.12.1": version: 1.12.1 resolution: "@webassemblyjs/helper-wasm-section@npm:1.12.1" @@ -5135,15 +4951,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/ieee754@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/ieee754@npm:1.13.2" - dependencies: - "@xtuc/ieee754": "npm:^1.2.0" - checksum: 10c0/2e732ca78c6fbae3c9b112f4915d85caecdab285c0b337954b180460290ccd0fb00d2b1dc4bb69df3504abead5191e0d28d0d17dfd6c9d2f30acac8c4961c8a7 - languageName: node - linkType: hard - "@webassemblyjs/leb128@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/leb128@npm:1.11.6" @@ -5153,15 +4960,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/leb128@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/leb128@npm:1.13.2" - dependencies: - "@xtuc/long": "npm:4.2.2" - checksum: 10c0/dad5ef9e383c8ab523ce432dfd80098384bf01c45f70eb179d594f85ce5db2f80fa8c9cba03adafd85684e6d6310f0d3969a882538975989919329ac4c984659 - languageName: node - linkType: hard - "@webassemblyjs/utf8@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/utf8@npm:1.11.6" @@ -5169,13 +4967,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/utf8@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/utf8@npm:1.13.2" - checksum: 10c0/d3fac9130b0e3e5a1a7f2886124a278e9323827c87a2b971e6d0da22a2ba1278ac9f66a4f2e363ecd9fac8da42e6941b22df061a119e5c0335f81006de9ee799 - languageName: node - linkType: hard - "@webassemblyjs/wasm-edit@npm:^1.12.1": version: 1.12.1 resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" @@ -5217,7 +5008,7 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.12.1": +"@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.12.1": version: 1.12.1 resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" dependencies: @@ -5231,20 +5022,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:^1.12.1": - version: 1.14.1 - resolution: "@webassemblyjs/wasm-parser@npm:1.14.1" - dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@webassemblyjs/helper-api-error": "npm:1.13.2" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" - "@webassemblyjs/ieee754": "npm:1.13.2" - "@webassemblyjs/leb128": "npm:1.13.2" - "@webassemblyjs/utf8": "npm:1.13.2" - checksum: 10c0/95427b9e5addbd0f647939bd28e3e06b8deefdbdadcf892385b5edc70091bf9b92fa5faac3fce8333554437c5d85835afef8c8a7d9d27ab6ba01ffab954db8c6 - languageName: node - linkType: hard - "@webassemblyjs/wast-printer@npm:1.12.1": version: 1.12.1 resolution: "@webassemblyjs/wast-printer@npm:1.12.1" @@ -5408,16 +5185,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.11.0, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.14.0 - resolution: "acorn@npm:8.14.0" - bin: - acorn: bin/acorn - checksum: 10c0/6d4ee461a7734b2f48836ee0fbb752903606e576cc100eb49340295129ca0b452f3ba91ddd4424a1d4406a98adfb2ebb6bd0ff4c49d7a0930c10e462719bbfd7 - languageName: node - linkType: hard - -"acorn@npm:^8.12.0, acorn@npm:^8.7.1": +"acorn@npm:^8.11.0, acorn@npm:^8.12.0, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": version: 8.12.1 resolution: "acorn@npm:8.12.1" bin: @@ -6542,25 +6310,16 @@ __metadata: languageName: node linkType: hard -"call-bind-apply-helpers@npm:^1.0.0": - version: 1.0.0 - resolution: "call-bind-apply-helpers@npm:1.0.0" - dependencies: - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - checksum: 10c0/fb91dbfcb0b54b025e88dba660e2a9fe6ca69107dab2f6696e1f7cf8b9c35aafc4879ac3a47d0fa9da55eecf767f2191f5651648dce920ac9b49df0ceb65063f - languageName: node - linkType: hard - "call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": - version: 1.0.8 - resolution: "call-bind@npm:1.0.8" + version: 1.0.7 + resolution: "call-bind@npm:1.0.7" dependencies: - call-bind-apply-helpers: "npm:^1.0.0" es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" get-intrinsic: "npm:^1.2.4" - set-function-length: "npm:^1.2.2" - checksum: 10c0/a13819be0681d915144467741b69875ae5f4eba8961eb0bf322aab63ec87f8250eb6d6b0dcbb2e1349876412a56129ca338592b3829ef4343527f5f18a0752d4 + set-function-length: "npm:^1.2.1" + checksum: 10c0/a3ded2e423b8e2a265983dba81c27e125b48eefb2655e7dfab6be597088da3d47c47976c24bc51b8fd9af1061f8f87b4ab78a314f3c77784b2ae2ba535ad8b8d languageName: node linkType: hard @@ -8327,20 +8086,13 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:16.4.5": +"dotenv@npm:16.4.5, dotenv@npm:^16.0.3": version: 16.4.5 resolution: "dotenv@npm:16.4.5" checksum: 10c0/48d92870076832af0418b13acd6e5a5a3e83bb00df690d9812e94b24aff62b88ade955ac99a05501305b8dc8f1b0ee7638b18493deb6fe93d680e5220936292f languageName: node linkType: hard -"dotenv@npm:^16.0.3": - version: 16.4.7 - resolution: "dotenv@npm:16.4.7" - checksum: 10c0/be9f597e36a8daf834452daa1f4cc30e5375a5968f98f46d89b16b983c567398a330580c88395069a77473943c06b877d1ca25b4afafcdd6d4adb549e8293462 - languageName: node - linkType: hard - "dotgitignore@npm:^2.1.0": version: 2.1.0 resolution: "dotgitignore@npm:2.1.0" @@ -8351,17 +8103,6 @@ __metadata: languageName: node linkType: hard -"dunder-proto@npm:^1.0.0": - version: 1.0.0 - resolution: "dunder-proto@npm:1.0.0" - dependencies: - call-bind-apply-helpers: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - gopd: "npm:^1.2.0" - checksum: 10c0/b321e5cbf64f0a4c786b0b3dc187eb5197a83f6e05a1e11b86db25251b3ae6747c4b805d9e0a4fbf481d22a86a539dc75f82d883daeac7fc2ce4bd72ff5ef5a2 - languageName: node - linkType: hard - "duplexer@npm:^0.1.1": version: 0.1.2 resolution: "duplexer@npm:0.1.2" @@ -8577,8 +8318,8 @@ __metadata: linkType: hard "es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2": - version: 1.23.5 - resolution: "es-abstract@npm:1.23.5" + version: 1.23.3 + resolution: "es-abstract@npm:1.23.3" dependencies: array-buffer-byte-length: "npm:^1.0.1" arraybuffer.prototype.slice: "npm:^1.0.3" @@ -8595,7 +8336,7 @@ __metadata: function.prototype.name: "npm:^1.1.6" get-intrinsic: "npm:^1.2.4" get-symbol-description: "npm:^1.0.2" - globalthis: "npm:^1.0.4" + globalthis: "npm:^1.0.3" gopd: "npm:^1.0.1" has-property-descriptors: "npm:^1.0.2" has-proto: "npm:^1.0.3" @@ -8611,10 +8352,10 @@ __metadata: is-string: "npm:^1.0.7" is-typed-array: "npm:^1.1.13" is-weakref: "npm:^1.0.2" - object-inspect: "npm:^1.13.3" + object-inspect: "npm:^1.13.1" object-keys: "npm:^1.1.1" object.assign: "npm:^4.1.5" - regexp.prototype.flags: "npm:^1.5.3" + regexp.prototype.flags: "npm:^1.5.2" safe-array-concat: "npm:^1.1.2" safe-regex-test: "npm:^1.0.3" string.prototype.trim: "npm:^1.2.9" @@ -8626,7 +8367,7 @@ __metadata: typed-array-length: "npm:^1.0.6" unbox-primitive: "npm:^1.0.2" which-typed-array: "npm:^1.1.15" - checksum: 10c0/1f6f91da9cf7ee2c81652d57d3046621d598654d1d1b05c1578bafe5c4c2d3d69513901679bdca2de589f620666ec21de337e4935cec108a4ed0871d5ef04a5d + checksum: 10c0/d27e9afafb225c6924bee9971a7f25f20c314f2d6cb93a63cada4ac11dcf42040896a6c22e5fb8f2a10767055ed4ddf400be3b1eb12297d281726de470b75666 languageName: node linkType: hard @@ -8637,10 +8378,12 @@ __metadata: languageName: node linkType: hard -"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": - version: 1.0.1 - resolution: "es-define-property@npm:1.0.1" - checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c +"es-define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "es-define-property@npm:1.0.0" + dependencies: + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/6bf3191feb7ea2ebda48b577f69bdfac7a2b3c9bcf97307f55fd6ef1bbca0b49f0c219a935aca506c993d8c5d8bddd937766cb760cd5e5a1071351f2df9f9aa4 languageName: node linkType: hard @@ -8714,14 +8457,7 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.1": - version: 3.2.0 - resolution: "escalade@npm:3.2.0" - checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 - languageName: node - linkType: hard - -"escalade@npm:^3.1.2": +"escalade@npm:^3.1.1, escalade@npm:^3.1.2": version: 3.1.2 resolution: "escalade@npm:3.1.2" checksum: 10c0/6b4adafecd0682f3aa1cd1106b8fff30e492c7015b178bc81b2d2f75106dabea6c6d6e8508fc491bd58e597c74abb0e8e2368f943ecb9393d4162e3c2f3cf287 @@ -10092,19 +9828,16 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": - version: 1.2.5 - resolution: "get-intrinsic@npm:1.2.5" +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": + version: 1.2.4 + resolution: "get-intrinsic@npm:1.2.4" dependencies: - call-bind-apply-helpers: "npm:^1.0.0" - dunder-proto: "npm:^1.0.0" - es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" function-bind: "npm:^1.1.2" - gopd: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" - hasown: "npm:^2.0.2" - checksum: 10c0/dcaace9fd4b4dd127b6668f580393e1a704bad308b7b88d694145e2599ee6c51b70cbfd49c6c96a5ffdb14a70824a0b3bd9b78bad84953932e5f0c5da4e508fd + has-proto: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.0" + checksum: 10c0/0a9b82c16696ed6da5e39b1267104475c47e3a9bdbe8b509dfe1710946e38a87be70d759f4bb3cda042d76a41ef47fe769660f3b7c0d1f68750299344ffb15b7 languageName: node linkType: hard @@ -10469,7 +10202,7 @@ __metadata: languageName: node linkType: hard -"globalthis@npm:^1.0.4": +"globalthis@npm:^1.0.3": version: 1.0.4 resolution: "globalthis@npm:1.0.4" dependencies: @@ -10509,10 +10242,12 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1, gopd@npm:^1.2.0": - version: 1.2.0 - resolution: "gopd@npm:1.2.0" - checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead +"gopd@npm:^1.0.1": + version: 1.0.1 + resolution: "gopd@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.1.3" + checksum: 10c0/505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 languageName: node linkType: hard @@ -10609,29 +10344,20 @@ __metadata: languageName: node linkType: hard -"has-proto@npm:^1.0.3": - version: 1.2.0 - resolution: "has-proto@npm:1.2.0" - dependencies: - dunder-proto: "npm:^1.0.0" - checksum: 10c0/46538dddab297ec2f43923c3d35237df45d8c55a6fc1067031e04c13ed8a9a8f94954460632fd4da84c31a1721eefee16d901cbb1ae9602bab93bb6e08f93b95 +"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": + version: 1.0.3 + resolution: "has-proto@npm:1.0.3" + checksum: 10c0/35a6989f81e9f8022c2f4027f8b48a552de714938765d019dbea6bb547bd49ce5010a3c7c32ec6ddac6e48fc546166a3583b128f5a7add8b058a6d8b4afec205 languageName: node linkType: hard -"has-symbols@npm:^1.0.2": +"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 languageName: node linkType: hard -"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": - version: 1.1.0 - resolution: "has-symbols@npm:1.1.0" - checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e - languageName: node - linkType: hard - "has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": version: 1.0.2 resolution: "has-tostringtag@npm:1.0.2" @@ -11035,7 +10761,7 @@ __metadata: languageName: node linkType: hard -"import-in-the-middle@npm:^1.11.0": +"import-in-the-middle@npm:^1.11.0, import-in-the-middle@npm:^1.8.1": version: 1.11.0 resolution: "import-in-the-middle@npm:1.11.0" dependencies: @@ -11047,18 +10773,6 @@ __metadata: languageName: node linkType: hard -"import-in-the-middle@npm:^1.8.1": - version: 1.11.3 - resolution: "import-in-the-middle@npm:1.11.3" - dependencies: - acorn: "npm:^8.8.2" - acorn-import-attributes: "npm:^1.9.5" - cjs-module-lexer: "npm:^1.2.2" - module-details-from-path: "npm:^1.0.3" - checksum: 10c0/1eac3b485dfa747224fd0542ade60197d2af5e76c1dc2e3628f41066c90ccd3f02cc0f0115a2741e2bd6f12456dcea270853954c54a04626b5bf5fb1cfd035d6 - languageName: node - linkType: hard - "import-local@npm:^2.0.0": version: 2.0.0 resolution: "import-local@npm:2.0.0" @@ -11675,7 +11389,7 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.5": +"is-string@npm:^1.0.5, is-string@npm:^1.0.7": version: 1.0.7 resolution: "is-string@npm:1.0.7" dependencies: @@ -11684,16 +11398,6 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.7": - version: 1.1.0 - resolution: "is-string@npm:1.1.0" - dependencies: - call-bind: "npm:^1.0.7" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/2781bce7bfdb00276d000a7aafccad8038a7b5cb06abbfc638417a705dd41bca259977af78731dc8a87f170783c94c9f684bc086fc4856b623c1fd942c509b6b - languageName: node - linkType: hard - "is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": version: 1.0.4 resolution: "is-symbol@npm:1.0.4" @@ -12593,15 +12297,6 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^3.0.2": - version: 3.0.2 - resolution: "jsesc@npm:3.0.2" - bin: - jsesc: bin/jsesc - checksum: 10c0/ef22148f9e793180b14d8a145ee6f9f60f301abf443288117b4b6c53d0ecd58354898dc506ccbb553a5f7827965cd38bc5fb726575aae93c5e8915e2de8290e1 - languageName: node - linkType: hard - "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" @@ -14665,20 +14360,13 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": +"negotiator@npm:0.6.3, negotiator@npm:^0.6.2, negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 languageName: node linkType: hard -"negotiator@npm:^0.6.2": - version: 0.6.4 - resolution: "negotiator@npm:0.6.4" - checksum: 10c0/3e677139c7fb7628a6f36335bf11a885a62c21d5390204590a1a214a5631fcbe5ea74ef6a610b60afe84b4d975cbe0566a23f20ee17c77c73e74b80032108dea - languageName: node - linkType: hard - "neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" @@ -15122,10 +14810,10 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.13.1, object-inspect@npm:^1.13.3": - version: 1.13.3 - resolution: "object-inspect@npm:1.13.3" - checksum: 10c0/cc3f15213406be89ffdc54b525e115156086796a515410a8d390215915db9f23c8eab485a06f1297402f440a33715fe8f71a528c1dcbad6e1a3bcaf5a46921d4 +"object-inspect@npm:^1.13.1": + version: 1.13.2 + resolution: "object-inspect@npm:1.13.2" + checksum: 10c0/b97835b4c91ec37b5fd71add84f21c3f1047d1d155d00c0fcd6699516c256d4fcc6ff17a1aced873197fe447f91a3964178fd2a67a1ee2120cdaf60e81a050b4 languageName: node linkType: hard @@ -15999,14 +15687,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0": - version: 1.1.1 - resolution: "picocolors@npm:1.1.1" - checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 - languageName: node - linkType: hard - -"picocolors@npm:^1.0.1": +"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1": version: 1.0.1 resolution: "picocolors@npm:1.0.1" checksum: 10c0/c63cdad2bf812ef0d66c8db29583802355d4ca67b9285d846f390cc15c2f6ccb94e8cb7eb6a6e97fc5990a6d3ad4ae42d86c84d3146e667c739a4234ed50d400 @@ -16929,15 +16610,15 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.3": - version: 1.5.3 - resolution: "regexp.prototype.flags@npm:1.5.3" +"regexp.prototype.flags@npm:^1.5.2": + version: 1.5.2 + resolution: "regexp.prototype.flags@npm:1.5.2" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.6" define-properties: "npm:^1.2.1" es-errors: "npm:^1.3.0" - set-function-name: "npm:^2.0.2" - checksum: 10c0/e1a7c7dc42cc91abf73e47a269c4b3a8f225321b7f617baa25821f6a123a91d23a73b5152f21872c566e699207e1135d075d2251cd3e84cc96d82a910adf6020 + set-function-name: "npm:^2.0.1" + checksum: 10c0/0f3fc4f580d9c349f8b560b012725eb9c002f36daa0041b3fbf6f4238cb05932191a4d7d5db3b5e2caa336d5150ad0402ed2be81f711f9308fe7e1a9bf9bd552 languageName: node linkType: hard @@ -17521,7 +17202,7 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.2": +"set-function-length@npm:^1.2.1": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" dependencies: @@ -17535,7 +17216,7 @@ __metadata: languageName: node linkType: hard -"set-function-name@npm:^2.0.2": +"set-function-name@npm:^2.0.1": version: 2.0.2 resolution: "set-function-name@npm:2.0.2" dependencies: From f0c773a897370cdabbf8dbe671d882d09ac95309 Mon Sep 17 00:00:00 2001 From: Thiago Ramalho Date: Fri, 13 Dec 2024 18:25:22 -0300 Subject: [PATCH 02/13] chore: update template --- packages/nestjs-auth-verify/package.json | 2 +- .../password-updated-successfully.template.hbs | 3 --- .../templates/email/verify-login.template.hbs | 7 ------- .../templates/email/verify-password.template.hbs | 15 --------------- .../assets/templates/email/verify.template.hbs | 15 +++++++++++++++ .../src/config/auth-verify-default.config.ts | 4 ++-- 6 files changed, 18 insertions(+), 28 deletions(-) delete mode 100644 packages/nestjs-auth-verify/src/assets/templates/email/password-updated-successfully.template.hbs delete mode 100644 packages/nestjs-auth-verify/src/assets/templates/email/verify-login.template.hbs delete mode 100644 packages/nestjs-auth-verify/src/assets/templates/email/verify-password.template.hbs create mode 100644 packages/nestjs-auth-verify/src/assets/templates/email/verify.template.hbs diff --git a/packages/nestjs-auth-verify/package.json b/packages/nestjs-auth-verify/package.json index f4e4c9da2..0e302dda1 100644 --- a/packages/nestjs-auth-verify/package.json +++ b/packages/nestjs-auth-verify/package.json @@ -1,7 +1,7 @@ { "name": "@concepta/nestjs-auth-verify", "version": "5.1.0", - "description": "Rockets NestJS Auth Recovery", + "description": "Rockets NestJS Auth Verify", "main": "dist/index.js", "types": "dist/index.d.ts", "license": "BSD-3-Clause", diff --git a/packages/nestjs-auth-verify/src/assets/templates/email/password-updated-successfully.template.hbs b/packages/nestjs-auth-verify/src/assets/templates/email/password-updated-successfully.template.hbs deleted file mode 100644 index a02fd9f32..000000000 --- a/packages/nestjs-auth-verify/src/assets/templates/email/password-updated-successfully.template.hbs +++ /dev/null @@ -1,3 +0,0 @@ -

- Congratulations you were successfully joined app. -

diff --git a/packages/nestjs-auth-verify/src/assets/templates/email/verify-login.template.hbs b/packages/nestjs-auth-verify/src/assets/templates/email/verify-login.template.hbs deleted file mode 100644 index cabc5cbb9..000000000 --- a/packages/nestjs-auth-verify/src/assets/templates/email/verify-login.template.hbs +++ /dev/null @@ -1,7 +0,0 @@ -

-You have requested to verify your login. If you did not make this request, please ignore this message. -

- -

-This is your login {{login}} -

diff --git a/packages/nestjs-auth-verify/src/assets/templates/email/verify-password.template.hbs b/packages/nestjs-auth-verify/src/assets/templates/email/verify-password.template.hbs deleted file mode 100644 index bb3ac8c6e..000000000 --- a/packages/nestjs-auth-verify/src/assets/templates/email/verify-password.template.hbs +++ /dev/null @@ -1,15 +0,0 @@ -

-You have requested to reset your password. If you did not make this request, please ignore this message. -

- -

-Please click on the link below to choose a new password. -

- -

-Click Here -

- -

-This link will expire at {{tokenExp}} -

diff --git a/packages/nestjs-auth-verify/src/assets/templates/email/verify.template.hbs b/packages/nestjs-auth-verify/src/assets/templates/email/verify.template.hbs new file mode 100644 index 000000000..5a9ca2cd8 --- /dev/null +++ b/packages/nestjs-auth-verify/src/assets/templates/email/verify.template.hbs @@ -0,0 +1,15 @@ +

+Welcome! Thank you for registering. To complete your registration and verify your email address, +

+ +

+Please click on the link below to confirm your account. +

+ +

+Click Here +

+ +

+This link will expire at {{tokenExp}} +

diff --git a/packages/nestjs-auth-verify/src/config/auth-verify-default.config.ts b/packages/nestjs-auth-verify/src/config/auth-verify-default.config.ts index d126663bd..12bf54c35 100644 --- a/packages/nestjs-auth-verify/src/config/auth-verify-default.config.ts +++ b/packages/nestjs-auth-verify/src/config/auth-verify-default.config.ts @@ -15,7 +15,7 @@ export const authVerifyDefaultConfig = registerAs( tokenUrlFormatter: formatTokenUrl, templates: { verifyEmail: { - fileName: __dirname + '/../assets/verify-password.template.hbs', + fileName: __dirname + '/../assets/verify.template.hbs', subject: 'Password Verify', }, }, @@ -24,7 +24,7 @@ export const authVerifyDefaultConfig = registerAs( assignment: 'userOtp', category: 'auth-verify', type: 'uuid', - expiresIn: '1h', + expiresIn: '24h', }, }), ); From 59c6e6dd0f70d9382e5834800f2f27e05d287935 Mon Sep 17 00:00:00 2001 From: Thiago Ramalho Date: Wed, 18 Dec 2024 17:20:54 -0300 Subject: [PATCH 03/13] chore: add documentation --- packages/nestjs-auth-verify/README.md | 750 +++++++++++++++++- packages/nestjs-auth-verify/package.json | 1 + .../src/auth-verify.controller.spec.ts | 4 +- .../src/auth-verify.controller.ts | 11 +- .../auth-verify-otp-invalid.exception.ts | 15 + .../src/exceptions/auth-verify.exception.ts | 14 + packages/nestjs-auth-verify/src/index.ts | 7 + packages/nestjs-email/README.md | 71 ++ 8 files changed, 862 insertions(+), 11 deletions(-) create mode 100644 packages/nestjs-auth-verify/src/exceptions/auth-verify-otp-invalid.exception.ts create mode 100644 packages/nestjs-auth-verify/src/exceptions/auth-verify.exception.ts diff --git a/packages/nestjs-auth-verify/README.md b/packages/nestjs-auth-verify/README.md index 5711b6ea2..395301879 100644 --- a/packages/nestjs-auth-verify/README.md +++ b/packages/nestjs-auth-verify/README.md @@ -10,6 +10,754 @@ Verify user password using email [![GH Contrib](https://img.shields.io/github/contributors/conceptadev/rockets?logo=github)](https://github.com/conceptadev/rockets/graphs/contributors) [![NestJS Dep](https://img.shields.io/github/package-json/dependency-version/conceptadev/rockets/@nestjs/common?label=NestJS&logo=nestjs&filename=packages%2Fnestjs-core%2Fpackage.json)](https://www.npmjs.com/package/@nestjs/common) -## Installation +## Table of Contents + +1. [Tutorials](#tutorials) + - [Introduction](#introduction) + - [Email Configuration](#email-configuration) + - [Setup Auth Verify Module](#setup-auth-verify-module) + +2. [How-To Guides](#how-to-guides) + - [1. How to define the AuthVerifySettings](#1-how-to-define-the-authverifysettings) + - [2. How to define the OtpService](#2-how-to-define-the-otpservice) + - [3. How to define EmailService](#3-how-to-define-emailservice) + - [4. How to define the UserLookupService](#4-how-to-define-the-userlookupservice) + - [5. How to define the UserMutateService](#5-how-to-define-the-usermutateservice) + - [6. How to define the NotificationService](#6-how-to-define-the-notificationservice) + - [7. How to define the EntityManagerProxy](#7-how-to-define-the-entitymanagerproxy) + +3. [Engineering Concepts](#engineering-concepts) + - [1. Dynamic Configuration Settings](#1-dynamic-configuration-settings) + - [2. Dynamic OTP service](#2-dynamic-otp-service) + - [3. Dynamic Email Service](#3-dynamic-email-service) + - [4. User Lookup Service](#4-user-lookup-service) + - [5. User Mutate Service](#5-user-mutate-service) + - [6. Notification Service (Optional)](#6-notification-service-optional) + - [7. Entity Manager Proxy (Optional)](#7-entity-manager-proxy-optional) + +## Tutorials + +### Introduction + +The Auth Verify module provides functionality to verify user accounts +via email. Before getting started, ensure you have email sending +capabilities set up in your application. + +The module relies on the following key components: + +- `@nestjs-modules/mailer` for email delivery +- `@concepta/nestjs-email` for email service integration + +The module already implements all the necessary logic for email +verification through these key classes: + +- `AuthVerifyService` - Core service for managing verification +- `AuthVerifyNotificationService` - Handles sending verification emails +- `AuthVerifyController` - Exposes verification endpoints + +Let's walk through setting up the required email configuration first. +Note that you can use any email setup that works for your needs, but for +this tutorial we'll demonstrate using `@concepta/nestjs-email`, +`@nestjs-modules/mailer` and with Mailgun. + +#### Installation `yarn add @concepta/nestjs-auth-verify` + +### Email Configuration + +For detailed instructions on setting up email functionality, please +follow the tutorial in the [@concepta/nestjs-email README](https://github.com/conceptadev/rockets/tree/main/packages/nestjs-email#tutorial). + +The tutorial covers: + +- Creating email configuration with mailer options +- Setting up SMTP transport settings +- Configuring email templates +- Initializing the required modules (EmailModule and MailerModule) + +Once you have email properly configured following those instructions, +you can proceed with setting up the verification module below. + +### Setup Auth Verify Module + +```ts +import { AuthVerifySettingsInterface } from '@concepta/nestjs-auth-verify'; +import { registerAs } from '@nestjs/config'; + +/** + * Default configuration for auth verify. + */ +export const authVerifyDefaultConfig = registerAs( + "STARTER_AUTH_VERIFY_MODULE_DEFAULT_SETTINGS_TOKEN", + (): AuthVerifySettingsInterface => ({ + email: { + from: 'from', + baseUrl: 'baseUrl', + templates: { + verifyEmail: { + fileName: `${__dirname}/../${ + process.env?.NODEMAILER_TEMPLATE_PATH ?? 'assets/templates/email' + }/verify.template.hbs`, + subject: 'Password Recovery', + }, + }, + }, + otp: { + assignment: 'userOtp', + category: 'auth-verify', + type: 'uuid', + expiresIn: '24h', + }, + }), +); +``` + +Let's take advantage of the following modules to set up the verify +module: + +- [@concepta/nestjs-user](https://github.com/conceptadev/rockets/tree/main/packages/nestjs-user) + - Provides `UserLookupService` to get users and `UserMutateService` to + update them +- [@concepta/nestjs-otp](https://github.com/conceptadev/rockets/tree/main/packages/nestjs-otp) + - Provides `OtpService` to create one-time passwords +- [@concepta/nestjs-email](https://github.com/conceptadev/rockets/tree/main/packages/nestjs-email) + - Provides `EmailService` to send emails + +Please refer to each module's documentation linked above to see how to +properly set them up in your application. + +Assuming both `@concepta/nestjs-user` and `@concepta/nestjs-otp` are +configured, we can proceed with setting up the verify module. While the +use of these modules is optional, it is recommended to use them to take +advantage of their pre-built services and functionality. + +```ts +import { MailerModule, MailerService } from '@nestjs-modules/mailer'; +import { mailerConfig } from './config/mailer.config'; +import { authVerifyDefaultConfig } from './config/auth-verify-default.config'; +import { AuthVerifyModule } from '@concepta/nestjs-auth-verify'; +import { EmailModule, EmailService } from '@concepta/nestjs-email'; +import { + UserLookupService, + UserMutateService, +} from '@concepta/nestjs-user'; +import { + OtpService, + OtpModule, +} from '@concepta/nestjs-otp'; + +/// ... +@Module({ + imports: [ + /// + AuthVerifyModule.forRootAsync({ + inject: [ + UserLookupService, + UserMutateService, + OtpService, + EmailService, + authVerifyDefaultConfig.KEY, + ], + useFactory: ( + userLookupService, + userMutateService, + otpService, + emailService, + settings: ConfigType, + ) => ({ + userLookupService, + userMutateService, + otpService, + emailService, + settings, + }), + }), + //... +} + +``` + +The module exposes the following endpoints: + +- `POST /auth/verify/send` - Sends a verification email to the user +- `PATCH /auth/verify/confirm` - Confirms the verification code received + in the email + +These endpoints handle the email verification flow, allowing users to +verify their email addresses and activate their accounts. + +Once the module is setup, we can send a request to the +`/auth/verify/send` endpoint to send a verify email to the user. + +```ts +curl -X 'POST' \ + 'http://localhost:3001/auth/verify/send' \ + -H 'accept: */*' \ + -H 'Content-Type: application/json' \ + -d '{ + "email": "user-email@email.com" +}' +``` + +An email will be sent to the user containing a verification code. Once +the user receives the email, they can use the verification code to +confirm their email address. To validate the code, send a request to the +`/auth/verify/confirm` endpoint with the code received in the email. + +```ts +curl -X 'PATCH' \ + 'http://localhost:3001/auth/verify/confirm' \ + -H 'accept: */*' \ + -H 'Content-Type: application/json' \ + -d '{ + "passcode": "123455" +}' +``` + +if the code is valid, the user will be verified and the user status will be +updated to active. + +## How-To Guides + +### 1. How to define the AuthVerifySettings + +The `AuthVerifySettingsInterface` allows you to configure various +settings for the authentication verification module. These settings +control the behavior of the verification process, including OTP +configuration and email templates. + +Here's an example of how to define the settings: + +```ts +import { AuthVerifySettingsInterface } from '@concepta/nestjs-auth-verify'; +import { registerAs } from '@nestjs/config'; + +/** + * Default configuration for auth verify. + */ +export const authVerifyDefaultConfig = registerAs( + "YOUR_AUTH_VERIFY_MODULE_DEFAULT_SETTINGS_TOKEN", + (): AuthVerifySettingsInterface => ({ + email: { + from: 'from', + baseUrl: 'baseUrl', + templates: { + verifyEmail: { + fileName: `${__dirname}/../${ + process.env?.NODEMAILER_TEMPLATE_PATH ?? 'assets/templates/email' + }/verify.template.hbs`, + subject: 'Password Recovery', + }, + }, + }, + otp: { + assignment: 'userOtp', + category: 'auth-verify', + type: 'uuid', + expiresIn: '24h', + }, + }), +); +``` + +Now let's add the new settings to our module. + +```ts +uthVerifyModule.forRootAsync({ + inject: [ + //... + authVerifyDefaultConfig.KEY, + ], + useFactory: ( + //... + settings: ConfigType, + ) => ({ + //... + settings, + }), + }), +``` + +### 2. How to define the OtpService + +The `OtpService` is responsible for handling the creation and validation +of one-time passwords (OTP) used in the email verification process. This +service must implement the `AuthVerifyOtpServiceInterface` interface, +which defines the required methods for OTP management. + +The service should handle: + +- Creating new OTP codes when verification emails are requested +- Validating OTP codes submitted during the confirmation step +- Managing OTP expiration and usage limits + +Here's an example of how to implement the OTP service: + +```ts +import { + OtpCreatableInterface, OtpInterface, + ReferenceAssigneeInterface, + ReferenceAssignment +} from '@concepta/nestjs-common'; +import { + QueryOptionsInterface +} from '@concepta/typeorm-common'; +import { Inject, Injectable } from '@nestjs/common'; +import { Repository } from 'typeorm'; +import { OtpServiceInterface } from '../interfaces/otp-service.interface'; +import { OtpSettingsInterface } from '../interfaces/otp-settings.interface'; +import { + OTP_MODULE_REPOSITORIES_TOKEN, + OTP_MODULE_SETTINGS_TOKEN, +} from '../otp.constants'; + +@Injectable() +export class YourAuthVerifyOtpService implements AuthVerifyOtpServiceInterface { + constructor() {} + + async create( + assignment: ReferenceAssignment, + otp: OtpCreatableInterface, + queryOptions?: QueryOptionsInterface, + ): Promise { + // your custom logic to create OTP + } + + async validate( + assignment: ReferenceAssignment, + otp: Pick, + deleteIfValid = false, + queryOptions?: QueryOptionsInterface, + ): Promise { + // your custom logic to validate OTP + } + + async clear( + assignment: ReferenceAssignment, + otp: Pick, + queryOptions?: QueryOptionsInterface, + ): Promise { + // your custom logic to clear OTP + } +} +``` + +Now let's add the new OTP service to our module. + +```ts +AuthVerifyModule.forRootAsync({ + inject: [ + //... + YourAuthVerifyOtpService, + //... + ], + useFactory: ( + //... + otpService, + //... + ) => ({ + //... + otpService, + //... + }), + }), +``` + +### 3. How to define EmailService + +The email service is responsible for handling email delivery in the +verification process. It must implement the +`AuthVerifyEmailServiceInterface` which extends the `EmailSendInterface`. +The key method to implement is: + +- `sendMail()`: Handles sending the verification email to users + +See [3. How to define the EmailService](#3-how-to-define-the-email-service) +under How-To Guides for more details on implementing the EmailService. + +```ts +import { EmailSendOptionsInterface } from '@concepta/nestjs-common'; +import { Injectable } from '@nestjs/common'; +import { AuthVerifyEmailServiceInterface } from '@nestjs/nestjs-auth-verify'; + +@Injectable() +export class YourAuthVerifyEmailService implements AuthVerifyEmailServiceInterface { + constructor() {} + + public async sendMail(dto: EmailSendOptionsInterface): Promise { + // your custom logic to send email + } +} +``` + +Now let's add the new email service to our module. + +```ts +AuthVerifyModule.forRootAsync({ + inject: [ + //... + YourAuthVerifyEmailService, + //... + ], + useFactory: ( + //... + emailService, + //... + ) => ({ + //... + emailService, + //... + }), + }), +``` + +### 4. How to define the UserLookupService + +```ts +import { + LookupEmailInterface, + LookupIdInterface, + ReferenceEmail, + ReferenceId, + ReferenceIdInterface, + ReferenceUsernameInterface, +} from '@concepta/nestjs-common'; +import { QueryOptionsInterface } from '@concepta/typeorm-common'; +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class YourAuthVerifyUserLookupService + implements AuthVerifyUserLookupServiceInterface { + + async findById( + id: ReferenceId, + options?: QueryOptionsInterface, + ): Promise { + // your custom logic to find user by ID + } + + async findByEmail( + email: ReferenceEmail, + options?: QueryOptionsInterface, + ): Promise { + // your custom logic to find user by email + } +} +``` + +Now let's add the new user lookup service to our module: + +```ts +AuthVerifyModule.forRootAsync({ + inject: [ + //... + YourAuthVerifyUserLookupService, + //... + ], + useFactory: ( + //... + userLookupService, + //... + ) => ({ + //... + userLookupService, + //... + }), +}), +``` + +### 5. How to define the UserMutateService + +Here's an example of how to implement the `UserMutateService`: + +```ts +import { + ReferenceActiveInterface, + ReferenceEmailInterface, + ReferenceIdInterface, + UpdateOneInterface, +} from '@concepta/nestjs-common'; +import { QueryOptionsInterface } from '@concepta/typeorm-common'; +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class YourAuthVerifyUserMutateService + implements AuthVerifyUserMutateServiceInterface { + + async update( + user: ReferenceIdInterface & ReferenceActiveInterface, + options?: QueryOptionsInterface, + ): Promise { + // your custom logic to update user details + } +} +``` + +Now let's add the new user mutate service to our module: + +```ts +AuthVerifyModule.forRootAsync({ + inject: [ + //... + YourAuthVerifyUserMutateService, + //... + ], + useFactory: ( + //... + userMutateService, + //... + ) => ({ + //... + userMutateService, + //... + }), +}), +``` + +### 6. How to define the NotificationService + +Here's an example of how to implement the `NotificationService`: + +```ts +import { EmailSendOptionsInterface } from '@concepta/nestjs-common'; +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class YourAuthVerifyNotificationService + implements AuthVerifyNotificationServiceInterface { + + async sendEmail(sendMailOptions: EmailSendOptionsInterface): Promise { + // your custom logic to send a general email + } + + async sendVerifyEmail( + email: string, + passcode: string, + resetTokenExp: Date, + ): Promise { + // your custom logic to send a verification email + } +} +``` + +Now let's add the new notification service to our module: + +```ts +AuthVerifyModule.forRootAsync({ + inject: [ + //... + YourAuthVerifyNotificationService, + //... + ], + useFactory: ( + //... + notificationService, + //... + ) => ({ + //... + notificationService, + //... + }), +}), +``` + +### 7. How to define the EntityManagerProxy + +Here's an example of how to implement the `EntityManagerProxy`: + +```ts + +import { EntityManager, ObjectLiteral, Repository } from 'typeorm'; +import { EntityManagerOptionInterface } from '../interfaces/entity-manager-option.interface'; +import { QueryOptionsInterface } from '../interfaces/query-options.interface'; +import { SafeTransactionOptionsInterface } from '../interfaces/safe-transaction-options.interface'; +import { TransactionProxy } from './transaction.proxy'; + +export class EntityManagerProxy { + constructor(private _entityManager: EntityManager) {} + + entityManager() { + return this._entityManager; + } + + repository( + repository: Repository, + options?: QueryOptionsInterface & EntityManagerOptionInterface, + ): Repository { + if (options?.transaction) { + return options.transaction.repository(repository); + } else if ( + options?.entityManager && + options?.entityManager !== repository.manager + ) { + return options.entityManager.withRepository>(repository); + } else { + return repository; + } + } + + transaction(options?: SafeTransactionOptionsInterface): TransactionProxy { + return new TransactionProxy(this._entityManager, options); + } +} + +``` + +## Engineering Concepts + +### 1. Dynamic Configuration Settings + +In designing the dynamic configuration settings for the authentication +verification module, several key decisions were made to ensure +flexibility, maintainability, and scalability: + +These choices were made to create a robust configuration system that +adapts to various operational needs while maintaining a clean and +organized codebase. This approach not only enhances the application's +flexibility but also simplifies the process of managing and updating +configurations as the application evolves. + +### 2. Dynamic OTP service + +The OTP (One-Time Password) service is a crucial component that handles +the generation, validation, and management of verification tokens. The +service must implement the `AuthVerifyOtpServiceInterface` which defines +three core methods: + +- `create()`: Generates a new OTP token associated with a specific user + assignment +- `validate()`: Verifies if a provided OTP token is valid for the given + assignment +- `clear()`: Removes existing OTP tokens for a user assignment + +While you can implement your own custom OTP service logic, the +`@concepta/nestjs-otp` module provides a ready-to-use implementation that +handles: + +- Secure token generation using configurable algorithms (UUID, numeric + codes, etc) +- Token expiration and lifecycle management +- Storage and retrieval of OTP records +- Built-in validation logic with configurable rules + +Using the `@concepta/nestjs-otp` module can significantly reduce +development time while ensuring secure and reliable OTP functionality. +The module seamlessly integrates with the auth verification flow and +follows best practices for OTP implementation. + +The OTP service implementation requires implementing the +`AuthVerifyOtpServiceInterface`. Here's an example of leveraging the +`@concepta/nestjs-otp` module in your OTP service: + +See [2. How to Define the OtpService](#2-how-to-define-the-otp-service) +under How-To Guides for more details on implementing the OTP service. + +### 3. Dynamic Email Service + +The email service is responsible for handling email delivery in the +verification process. It must implement the `AuthVerifyEmailServiceInterface` +which extends the `EmailSendInterface`. The key method to implement is: + +- `sendMail()`: Handles sending the verification email to users + +See [3. How to define the EmailService](#3-how-to-define-the-email-service) +under How-To Guides for more details on implementing the EmailService. + +### 4. User Lookup Service + +The user lookup service is responsible for retrieving user information +during the verification process. It must implement the +`AuthVerifyUserLookupServiceInterface` which extends both +`LookupIdInterface` and `LookupEmailInterface`. The key methods to +implement are: + +- `byId()`: Retrieves a user by their unique identifier +- `byEmail()`: Retrieves a user by their email address + +The lookup service provides a standardized way to query user data +regardless of your underlying user storage implementation. This +abstraction allows the auth verification module to work with any user +data source while maintaining a consistent interface. + +### 5. User Mutate Service + +The user mutate service handles updating user data during the verification +process. It must implement the `AuthVerifyUserMutateServiceInterface` which +extends the `UpdateOneInterface`. The key method to implement is: + +- `update()`: Updates user data with verification status changes + +This service is crucial for persisting verification state changes to your user +records. For example, when a user successfully verifies their email, the mutate +service updates their account to reflect the verified status. + +The mutate service works in conjunction with the lookup service to provide a complete user +data management solution. While the lookup service handles retrieving user information, the +mutate service manages modifications to user data. + +See [4. How to Define the UserMutateService](#4-how-to-define-the-user-mutate-service) +under How-To Guides for more details on implementing the UserMutateService. + +### 6. Notification Service (Optional) + +The notification service is an optional component that handles sending +verification-related notifications to users. It must implement the +`AuthVerifyNotificationServiceInterface`. The key methods to implement are: + +- `sendEmail()`: Sends a generic email using the provided options +- `sendVerifyEmail()`: Sends a verification email with the passcode and +expiration + +The notification service provides a higher-level abstraction over the +email service, specifically tailored for verification-related communications. +It handles formatting verification emails with the correct templates and +context data. + +When implemented, the notification service: + +- Uses configured email templates +- Formats verification URLs +- Includes token expiration information +- Manages email sending through the underlying email service + +While optional, implementing a notification service can help standardize your +verification-related communications and reduce code duplication. The module +provides a default implementation that you can use or extend. + +See [6. How to Define the NotificationService](#6-how-to-define-the-notification-service) +under How-To Guides for more details on implementing the NotificationService. + +### 7. Entity Manager Proxy (Optional) + +The entity manager proxy is an optional component that provides transaction +management capabilities for database operations. It wraps TypeORM's +EntityManager to provide a consistent interface for managing database +transactions across the verification process. + +When provided, the entity manager proxy: + +- Manages database transactions for verification operations +- Ensures data consistency during multi-step processes +- Provides rollback capabilities if errors occur + +The proxy is particularly useful when: + +- Updating user verification status +- Creating and managing OTP tokens +- Coordinating multiple database operations + +The EntityManagerProxy class offers several key methods: + +- `entityManager()`: Returns the underlying EntityManager instance +- `repository()`: Gets a repository instance with transaction context +- `transaction()`: Creates a new transaction context + +While optional, using the entity manager proxy is recommended when your +verification process involves multiple database operations that need to +maintain consistency. The module's core services are designed to work +with the proxy when available. + +See [7. How to Use the EntityManagerProxy](#7-how-to-use-the-entity-manager-proxy) +under How-To Guides for more details on implementing and using +the EntityManagerProxy. diff --git a/packages/nestjs-auth-verify/package.json b/packages/nestjs-auth-verify/package.json index 0e302dda1..678dee72f 100644 --- a/packages/nestjs-auth-verify/package.json +++ b/packages/nestjs-auth-verify/package.json @@ -13,6 +13,7 @@ ], "dependencies": { "@concepta/nestjs-common": "^5.1.0", + "@concepta/nestjs-exception": "^5.1.0", "@concepta/typeorm-common": "^5.1.0", "@nestjs/common": "^10.4.1", "@nestjs/config": "^3.2.3", diff --git a/packages/nestjs-auth-verify/src/auth-verify.controller.spec.ts b/packages/nestjs-auth-verify/src/auth-verify.controller.spec.ts index 12efcf433..218fcc8e2 100644 --- a/packages/nestjs-auth-verify/src/auth-verify.controller.spec.ts +++ b/packages/nestjs-auth-verify/src/auth-verify.controller.spec.ts @@ -2,8 +2,8 @@ import { AuthVerifyController } from './auth-verify.controller'; import { AuthVerifyService } from './services/auth-verify.service'; import { AuthVerifyUpdateDto } from './dto/auth-verify-update.dto'; import { mock } from 'jest-mock-extended'; -import { BadRequestException } from '@nestjs/common'; import { AuthVerifyDto } from './dto/auth-verify.dto'; +import { AuthRecoveryOtpInvalidException } from './exceptions/auth-verify-otp-invalid.exception'; describe(AuthVerifyController.name, () => { let controller: AuthVerifyController; @@ -36,7 +36,7 @@ describe(AuthVerifyController.name, () => { .mockResolvedValue(null); const t = () => controller.confirm(passwordDto); - await expect(t).rejects.toThrow(BadRequestException); + await expect(t).rejects.toThrow(AuthRecoveryOtpInvalidException); expect(updatePasswordSpy).toHaveBeenCalledWith(passwordDto.passcode); }); diff --git a/packages/nestjs-auth-verify/src/auth-verify.controller.ts b/packages/nestjs-auth-verify/src/auth-verify.controller.ts index 51f5ea4f0..aaf723cb0 100644 --- a/packages/nestjs-auth-verify/src/auth-verify.controller.ts +++ b/packages/nestjs-auth-verify/src/auth-verify.controller.ts @@ -1,11 +1,5 @@ import { AuthPublic } from '@concepta/nestjs-authentication'; -import { - BadRequestException, - Body, - Controller, - Patch, - Post, -} from '@nestjs/common'; +import { Body, Controller, Patch, Post } from '@nestjs/common'; import { ApiBadRequestResponse, ApiBody, @@ -16,6 +10,7 @@ import { import { AuthVerifyUpdateDto } from './dto/auth-verify-update.dto'; import { AuthVerifyDto } from './dto/auth-verify.dto'; import { AuthVerifyService } from './services/auth-verify.service'; +import { AuthRecoveryOtpInvalidException } from './exceptions/auth-verify-otp-invalid.exception'; @Controller('auth/verify') @AuthPublic() @@ -54,7 +49,7 @@ export class AuthVerifyController { if (!user) { // the client should have checked using validate passcode first - throw new BadRequestException(); + throw new AuthRecoveryOtpInvalidException(); } } } diff --git a/packages/nestjs-auth-verify/src/exceptions/auth-verify-otp-invalid.exception.ts b/packages/nestjs-auth-verify/src/exceptions/auth-verify-otp-invalid.exception.ts new file mode 100644 index 000000000..974260aaf --- /dev/null +++ b/packages/nestjs-auth-verify/src/exceptions/auth-verify-otp-invalid.exception.ts @@ -0,0 +1,15 @@ +import { RuntimeExceptionOptions } from '@concepta/nestjs-exception'; +import { AuthVerifyException } from './auth-verify.exception'; +import { HttpStatus } from '@nestjs/common'; + +export class AuthRecoveryOtpInvalidException extends AuthVerifyException { + constructor(options?: RuntimeExceptionOptions) { + super({ + message: `Invalid confirmation code provided`, + httpStatus: HttpStatus.BAD_REQUEST, + ...options, + }); + + this.errorCode = 'AUTH_VERIFY_OTP_INVALID_ERROR'; + } +} diff --git a/packages/nestjs-auth-verify/src/exceptions/auth-verify.exception.ts b/packages/nestjs-auth-verify/src/exceptions/auth-verify.exception.ts new file mode 100644 index 000000000..6b1f661b4 --- /dev/null +++ b/packages/nestjs-auth-verify/src/exceptions/auth-verify.exception.ts @@ -0,0 +1,14 @@ +import { + RuntimeException, + RuntimeExceptionOptions, +} from '@concepta/nestjs-exception'; + +/** + * Generic auth verify exception. + */ +export class AuthVerifyException extends RuntimeException { + constructor(options?: RuntimeExceptionOptions) { + super(options); + this.errorCode = 'AUTH_VERIFY_ERROR'; + } +} diff --git a/packages/nestjs-auth-verify/src/index.ts b/packages/nestjs-auth-verify/src/index.ts index 8b46c3e69..bc2332e13 100644 --- a/packages/nestjs-auth-verify/src/index.ts +++ b/packages/nestjs-auth-verify/src/index.ts @@ -4,3 +4,10 @@ export { AuthVerifyService } from './services/auth-verify.service'; export { AuthVerifyNotificationService } from './services/auth-verify-notification.service'; export { AuthVerifyDto } from './dto/auth-verify.dto'; export { AuthVerifyUpdateDto } from './dto/auth-verify-update.dto'; + +// interfaces +export { AuthVerifySettingsInterface } from './interfaces/auth-verify-settings.interface'; +export { AuthVerifyEmailServiceInterface } from './interfaces/auth-verify-email.service.interface'; +export { AuthVerifyUserLookupServiceInterface } from './interfaces/auth-verify-user-lookup.service.interface'; +export { AuthVerifyUserMutateServiceInterface } from './interfaces/auth-verify-user-mutate.service.interface'; +export { AuthVerifyOtpServiceInterface } from './interfaces/auth-verify-otp.service.interface'; diff --git a/packages/nestjs-email/README.md b/packages/nestjs-email/README.md index e7d5f232f..2e3c9defb 100644 --- a/packages/nestjs-email/README.md +++ b/packages/nestjs-email/README.md @@ -1,5 +1,7 @@ # Rockets NestJS Email +![Email Documentation](https://img.shields.io/badge/Email-Documentation-blue?logo=mailchimp) + Email deliver module that supports the popular [@nestjs-modules/mailer](https://www.npmjs.com/package/@nestjs-modules/mailer) module. @@ -16,3 +18,72 @@ Email deliver module that supports the popular `yarn add @concepta/nestjs-email` `yarn add @nestjs-modules/mailer handlebars` + +## Tutorial + +### Configuring Email Settings + +First, let's configure the email settings required for the verification system. Create a configuration file to set up the mailer options. Check the [reference](#reference) for more details about the environment variables: + +```ts +// config/mailer.config.ts +import { MailerOptions } from '@nestjs-modules/mailer'; +import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter'; +import { registerAs } from '@nestjs/config'; + +export const mailerConfig = registerAs( + 'MAILER_CONFIG', + (): MailerOptions => ({ + transport: { + host: process.env?.MAILGUN_SMTP_SERVER ?? 'smtp.mailgun.org', + port: process.env?.MAILGUN_SMTP_PORT + ? Number(process.env?.MAILGUN_SMTP_PORT) + : 587, + auth: { + user: process.env?.MAILGUN_SMTP_LOGIN ?? '', + pass: process.env?.MAILGUN_SMTP_PASSWORD ?? '', + }, + }, + defaults: { + from: process.env?.NODEMAILER_FROM_EMAIL ?? 'no-reply@email.com', + }, + template: { + dir: `${__dirname}/../${ + process.env?.NODEMAILER_TEMPLATE_PATH ?? 'assets/templates/email' + }`, + adapter: new HandlebarsAdapter(), + options: { + strict: true, + }, + }, + }), +); +``` + +### Initializing Modules + +Initialize the `EmailModule` and `MailerModule` in your application: + +```ts +import { MailerModule, MailerService } from '@nestjs-modules/mailer'; +import { mailerConfig } from './config/mailer.config'; +import { EmailModule } from '@concepta/nestjs-email'; + +// ... +ConfigModule.forRoot({ + isGlobal: true, + load: [ + //... + mailerConfig, + ], +}), +MailerModule.forRootAsync({ + inject: [mailerConfig.KEY], + useFactory: async (config: ConfigType) => config, +}), +EmailModule.forRootAsync({ + inject: [MailerService], + useFactory: (mailerService: MailerService) => ({ mailerService }), +}), +// ... +``` From a1b0d91a8684f191f20fcc9b863324e7f86b602f Mon Sep 17 00:00:00 2001 From: Thiago Ramalho Date: Wed, 18 Dec 2024 17:33:22 -0300 Subject: [PATCH 04/13] chore: yarn lock --- yarn.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/yarn.lock b/yarn.lock index baebc0b5e..a3aeb1164 100644 --- a/yarn.lock +++ b/yarn.lock @@ -891,6 +891,7 @@ __metadata: "@concepta/nestjs-common": "npm:^5.1.0" "@concepta/nestjs-crud": "npm:^5.1.0" "@concepta/nestjs-email": "npm:^5.1.0" + "@concepta/nestjs-exception": "npm:^5.1.0" "@concepta/nestjs-jwt": "npm:^5.1.0" "@concepta/nestjs-otp": "npm:^5.1.0" "@concepta/nestjs-password": "npm:^5.1.0" From 2f3c92cf1d28f6fdf4256e7b2215b3ae66cd4684 Mon Sep 17 00:00:00 2001 From: Thiago Ramalho Date: Wed, 18 Dec 2024 17:37:10 -0300 Subject: [PATCH 05/13] chore: linting --- packages/nestjs-auth-verify/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/nestjs-auth-verify/README.md b/packages/nestjs-auth-verify/README.md index 395301879..a14d94b51 100644 --- a/packages/nestjs-auth-verify/README.md +++ b/packages/nestjs-auth-verify/README.md @@ -12,12 +12,12 @@ Verify user password using email ## Table of Contents -1. [Tutorials](#tutorials) +- [Tutorials](#tutorials) - [Introduction](#introduction) - [Email Configuration](#email-configuration) - [Setup Auth Verify Module](#setup-auth-verify-module) -2. [How-To Guides](#how-to-guides) +- [How-To Guides](#how-to-guides) - [1. How to define the AuthVerifySettings](#1-how-to-define-the-authverifysettings) - [2. How to define the OtpService](#2-how-to-define-the-otpservice) - [3. How to define EmailService](#3-how-to-define-emailservice) @@ -26,7 +26,7 @@ Verify user password using email - [6. How to define the NotificationService](#6-how-to-define-the-notificationservice) - [7. How to define the EntityManagerProxy](#7-how-to-define-the-entitymanagerproxy) -3. [Engineering Concepts](#engineering-concepts) +- [Engineering Concepts](#engineering-concepts) - [1. Dynamic Configuration Settings](#1-dynamic-configuration-settings) - [2. Dynamic OTP service](#2-dynamic-otp-service) - [3. Dynamic Email Service](#3-dynamic-email-service) From 7c30414543f8e4fd170431cf1a380b449959ce9e Mon Sep 17 00:00:00 2001 From: Thiago Ramalho Date: Wed, 18 Dec 2024 18:05:05 -0300 Subject: [PATCH 06/13] chore: linting --- packages/nestjs-auth-verify/README.md | 63 ++++++++++++--------------- packages/nestjs-email/README.md | 3 +- 2 files changed, 29 insertions(+), 37 deletions(-) diff --git a/packages/nestjs-auth-verify/README.md b/packages/nestjs-auth-verify/README.md index a14d94b51..d44ad6971 100644 --- a/packages/nestjs-auth-verify/README.md +++ b/packages/nestjs-auth-verify/README.md @@ -13,27 +13,27 @@ Verify user password using email ## Table of Contents - [Tutorials](#tutorials) - - [Introduction](#introduction) - - [Email Configuration](#email-configuration) - - [Setup Auth Verify Module](#setup-auth-verify-module) + - [Introduction](#introduction) + - [Email Configuration](#email-configuration) + - [Setup Auth Verify Module](#setup-auth-verify-module) - [How-To Guides](#how-to-guides) - - [1. How to define the AuthVerifySettings](#1-how-to-define-the-authverifysettings) - - [2. How to define the OtpService](#2-how-to-define-the-otpservice) - - [3. How to define EmailService](#3-how-to-define-emailservice) - - [4. How to define the UserLookupService](#4-how-to-define-the-userlookupservice) - - [5. How to define the UserMutateService](#5-how-to-define-the-usermutateservice) - - [6. How to define the NotificationService](#6-how-to-define-the-notificationservice) - - [7. How to define the EntityManagerProxy](#7-how-to-define-the-entitymanagerproxy) + - [1. How to define the AuthVerifySettings](#1-how-to-define-the-authverifysettings) + - [2. How to define the OtpService](#2-how-to-define-the-otpservice) + - [3. How to define EmailService](#3-how-to-define-the-emailservice) + - [4. How to define the UserLookupService](#4-how-to-define-the-userlookupservice) + - [5. How to define the UserMutateService](#5-how-to-define-the-usermutateservice) + - [6. How to define the NotificationService](#6-how-to-define-the-notificationservice) + - [7. How to define the EntityManagerProxy](#7-how-to-define-the-entitymanagerproxy) - [Engineering Concepts](#engineering-concepts) - - [1. Dynamic Configuration Settings](#1-dynamic-configuration-settings) - - [2. Dynamic OTP service](#2-dynamic-otp-service) - - [3. Dynamic Email Service](#3-dynamic-email-service) - - [4. User Lookup Service](#4-user-lookup-service) - - [5. User Mutate Service](#5-user-mutate-service) - - [6. Notification Service (Optional)](#6-notification-service-optional) - - [7. Entity Manager Proxy (Optional)](#7-entity-manager-proxy-optional) + - [1. Dynamic Configuration Settings](#1-dynamic-configuration-settings) + - [2. Dynamic OTP service](#2-dynamic-otp-service) + - [3. Dynamic Email Service](#3-dynamic-email-service) + - [4. User Lookup Service](#4-user-lookup-service) + - [5. User Mutate Service](#5-user-mutate-service) + - [6. Notification Service (Optional)](#6-notification-service-optional) + - [7. Entity Manager Proxy (Optional)](#7-entity-manager-proxy-optional) ## Tutorials @@ -364,17 +364,7 @@ AuthVerifyModule.forRootAsync({ }), ``` -### 3. How to define EmailService - -The email service is responsible for handling email delivery in the -verification process. It must implement the -`AuthVerifyEmailServiceInterface` which extends the `EmailSendInterface`. -The key method to implement is: - -- `sendMail()`: Handles sending the verification email to users - -See [3. How to define the EmailService](#3-how-to-define-the-email-service) -under How-To Guides for more details on implementing the EmailService. +### 3. How to define the EmailService ```ts import { EmailSendOptionsInterface } from '@concepta/nestjs-common'; @@ -650,7 +640,7 @@ The OTP service implementation requires implementing the `AuthVerifyOtpServiceInterface`. Here's an example of leveraging the `@concepta/nestjs-otp` module in your OTP service: -See [2. How to Define the OtpService](#2-how-to-define-the-otp-service) +See [2. How to Define the OtpService](#2-how-to-define-the-otpservice) under How-To Guides for more details on implementing the OTP service. ### 3. Dynamic Email Service @@ -661,7 +651,7 @@ which extends the `EmailSendInterface`. The key method to implement is: - `sendMail()`: Handles sending the verification email to users -See [3. How to define the EmailService](#3-how-to-define-the-email-service) +See [3. How to define the EmailService](#3-how-to-define-the-emailservice) under How-To Guides for more details on implementing the EmailService. ### 4. User Lookup Service @@ -692,11 +682,12 @@ This service is crucial for persisting verification state changes to your user records. For example, when a user successfully verifies their email, the mutate service updates their account to reflect the verified status. -The mutate service works in conjunction with the lookup service to provide a complete user -data management solution. While the lookup service handles retrieving user information, the -mutate service manages modifications to user data. +The mutate service works in conjunction with the lookup service to provide +a complete user data management solution. While the lookup service handles +retrieving user information, the mutate service manages modifications to +user data. -See [4. How to Define the UserMutateService](#4-how-to-define-the-user-mutate-service) +See [5. How to Define the UserMutateService](#5-how-to-define-the-usermutateservice) under How-To Guides for more details on implementing the UserMutateService. ### 6. Notification Service (Optional) @@ -725,7 +716,7 @@ While optional, implementing a notification service can help standardize your verification-related communications and reduce code duplication. The module provides a default implementation that you can use or extend. -See [6. How to Define the NotificationService](#6-how-to-define-the-notification-service) +See [6. How to Define the NotificationService](#6-how-to-define-the-notificationservice) under How-To Guides for more details on implementing the NotificationService. ### 7. Entity Manager Proxy (Optional) @@ -758,6 +749,6 @@ verification process involves multiple database operations that need to maintain consistency. The module's core services are designed to work with the proxy when available. -See [7. How to Use the EntityManagerProxy](#7-how-to-use-the-entity-manager-proxy) +See [7. How to define the EntityManagerProxy](#7-how-to-define-the-entitymanagerproxy) under How-To Guides for more details on implementing and using the EntityManagerProxy. diff --git a/packages/nestjs-email/README.md b/packages/nestjs-email/README.md index 2e3c9defb..9cf9e2c5f 100644 --- a/packages/nestjs-email/README.md +++ b/packages/nestjs-email/README.md @@ -23,7 +23,8 @@ Email deliver module that supports the popular ### Configuring Email Settings -First, let's configure the email settings required for the verification system. Create a configuration file to set up the mailer options. Check the [reference](#reference) for more details about the environment variables: +First, let's configure the email settings required for the verification system. +Create a configuration file to set up the mailer options. ```ts // config/mailer.config.ts From e707eab0a8ec94560e7d972cbb994950f4d74dd1 Mon Sep 17 00:00:00 2001 From: Thiago Ramalho Date: Wed, 18 Dec 2024 18:17:14 -0300 Subject: [PATCH 07/13] chore: linting --- packages/nestjs-auth-verify/README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/nestjs-auth-verify/README.md b/packages/nestjs-auth-verify/README.md index d44ad6971..bdf8f8006 100644 --- a/packages/nestjs-auth-verify/README.md +++ b/packages/nestjs-auth-verify/README.md @@ -372,7 +372,8 @@ import { Injectable } from '@nestjs/common'; import { AuthVerifyEmailServiceInterface } from '@nestjs/nestjs-auth-verify'; @Injectable() -export class YourAuthVerifyEmailService implements AuthVerifyEmailServiceInterface { +export class YourAuthVerifyEmailService + implements AuthVerifyEmailServiceInterface { constructor() {} public async sendMail(dto: EmailSendOptionsInterface): Promise { @@ -478,7 +479,11 @@ export class YourAuthVerifyUserMutateService async update( user: ReferenceIdInterface & ReferenceActiveInterface, options?: QueryOptionsInterface, - ): Promise { + ): Promise< + ReferenceIdInterface & + ReferenceEmailInterface & + ReferenceActiveInterface + > { // your custom logic to update user details } } From f9b4a75cd0544f7ab00056a884e7dcf6661e8cf8 Mon Sep 17 00:00:00 2001 From: Thiago Ramalho Date: Mon, 6 Jan 2025 16:44:03 -0300 Subject: [PATCH 08/13] chore: adjusts otp create params --- .../src/__fixtures__/otp/otp.service.fixture.ts | 7 +++---- .../src/auth-verify.controller.e2e-spec.ts | 17 ++++++++++------- .../src/services/auth-verify.service.ts | 6 +++--- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/packages/nestjs-auth-verify/src/__fixtures__/otp/otp.service.fixture.ts b/packages/nestjs-auth-verify/src/__fixtures__/otp/otp.service.fixture.ts index 7ad59fc24..e85403a43 100644 --- a/packages/nestjs-auth-verify/src/__fixtures__/otp/otp.service.fixture.ts +++ b/packages/nestjs-auth-verify/src/__fixtures__/otp/otp.service.fixture.ts @@ -3,6 +3,7 @@ import { Injectable } from '@nestjs/common'; import { OtpCreatableInterface, + OtpCreateParamsInterface, OtpInterface, ReferenceAssigneeInterface, ReferenceIdInterface, @@ -13,11 +14,9 @@ import { UserFixture } from '../user/user.fixture'; @Injectable() export class OtpServiceFixture implements AuthVerifyOtpServiceInterface { - async create( - _assignment: string, - otp: OtpCreatableInterface, - ): Promise { + async create({ otp }: OtpCreateParamsInterface): Promise { const { assignee, category, type } = otp; + return { id: randomUUID(), category, diff --git a/packages/nestjs-auth-verify/src/auth-verify.controller.e2e-spec.ts b/packages/nestjs-auth-verify/src/auth-verify.controller.e2e-spec.ts index 27e36d4a6..9ef44ccaf 100644 --- a/packages/nestjs-auth-verify/src/auth-verify.controller.e2e-spec.ts +++ b/packages/nestjs-auth-verify/src/auth-verify.controller.e2e-spec.ts @@ -108,12 +108,15 @@ const createOtp = async ( ): Promise => { const { category, assignment, type, expiresIn } = config.otp; - return await otpService.create(assignment, { - category, - type, - expiresIn, - assignee: { - id: userId, - }, + return await otpService.create({ + assignment, + otp: { + category, + type, + expiresIn, + assignee: { + id: userId, + }, + } }); }; diff --git a/packages/nestjs-auth-verify/src/services/auth-verify.service.ts b/packages/nestjs-auth-verify/src/services/auth-verify.service.ts index 70dc70bf9..91e1e529d 100644 --- a/packages/nestjs-auth-verify/src/services/auth-verify.service.ts +++ b/packages/nestjs-auth-verify/src/services/auth-verify.service.ts @@ -55,9 +55,9 @@ export class AuthVerifyService implements AuthVerifyServiceInterface { // extract required otp properties const { category, assignment, type, expiresIn } = this.config.otp; // create an OTP save it in the database - const otp = await this.otpService.create( + const otp = await this.otpService.create({ assignment, - { + otp: { category, type, expiresIn, @@ -66,7 +66,7 @@ export class AuthVerifyService implements AuthVerifyServiceInterface { }, }, queryOptions, - ); + }); // send en email with a verify OTP await this.notificationService.sendVerifyEmail( From 00230d5a06cb2de8c320c02e93609cb6e3a325b3 Mon Sep 17 00:00:00 2001 From: Thiago Ramalho Date: Mon, 6 Jan 2025 16:51:36 -0300 Subject: [PATCH 09/13] chore: linting --- .../src/__fixtures__/otp/otp.service.fixture.ts | 2 -- .../src/auth-verify.controller.e2e-spec.ts | 5 ++--- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/nestjs-auth-verify/src/__fixtures__/otp/otp.service.fixture.ts b/packages/nestjs-auth-verify/src/__fixtures__/otp/otp.service.fixture.ts index e85403a43..b17feffe5 100644 --- a/packages/nestjs-auth-verify/src/__fixtures__/otp/otp.service.fixture.ts +++ b/packages/nestjs-auth-verify/src/__fixtures__/otp/otp.service.fixture.ts @@ -2,7 +2,6 @@ import { randomUUID } from 'crypto'; import { Injectable } from '@nestjs/common'; import { - OtpCreatableInterface, OtpCreateParamsInterface, OtpInterface, ReferenceAssigneeInterface, @@ -16,7 +15,6 @@ import { UserFixture } from '../user/user.fixture'; export class OtpServiceFixture implements AuthVerifyOtpServiceInterface { async create({ otp }: OtpCreateParamsInterface): Promise { const { assignee, category, type } = otp; - return { id: randomUUID(), category, diff --git a/packages/nestjs-auth-verify/src/auth-verify.controller.e2e-spec.ts b/packages/nestjs-auth-verify/src/auth-verify.controller.e2e-spec.ts index 9ef44ccaf..e71ffe20d 100644 --- a/packages/nestjs-auth-verify/src/auth-verify.controller.e2e-spec.ts +++ b/packages/nestjs-auth-verify/src/auth-verify.controller.e2e-spec.ts @@ -107,9 +107,8 @@ const createOtp = async ( userId: string, ): Promise => { const { category, assignment, type, expiresIn } = config.otp; - return await otpService.create({ - assignment, + assignment, otp: { category, type, @@ -117,6 +116,6 @@ const createOtp = async ( assignee: { id: userId, }, - } + }, }); }; From 9ac2151a9989acaacd6e5b6ac4937b7c03ef528b Mon Sep 17 00:00:00 2001 From: Thiago Ramalho Date: Mon, 6 Jan 2025 21:01:14 -0300 Subject: [PATCH 10/13] chore: yarn updates --- yarn.lock | 3476 +++++++++++++++++++++++++++-------------------------- 1 file changed, 1778 insertions(+), 1698 deletions(-) diff --git a/yarn.lock b/yarn.lock index 01bb6ccb7..247dd3671 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,9 +15,9 @@ __metadata: languageName: node linkType: hard -"@angular-devkit/core@npm:17.3.11": - version: 17.3.11 - resolution: "@angular-devkit/core@npm:17.3.11" +"@angular-devkit/core@npm:17.3.8": + version: 17.3.8 + resolution: "@angular-devkit/core@npm:17.3.8" dependencies: ajv: "npm:8.12.0" ajv-formats: "npm:2.1.1" @@ -30,40 +30,40 @@ __metadata: peerDependenciesMeta: chokidar: optional: true - checksum: 10c0/c6d3ed77e98568d3f2126e5682631ceec32cdc6bb1c642bf0c8bcbd5a71ee521941e6ff981ec104703e668cfb886043e0bd239442645bef6151d265799128521 + checksum: 10c0/9a5efd90247820cc469ab9773c28405873b4716528ea0873e8ab3e442280e6a631972247b74dc61ec88b3a1f689af0aa1318115bf50496045c1f5ac9476820d9 languageName: node linkType: hard -"@angular-devkit/schematics-cli@npm:17.3.11": - version: 17.3.11 - resolution: "@angular-devkit/schematics-cli@npm:17.3.11" +"@angular-devkit/schematics-cli@npm:17.3.8": + version: 17.3.8 + resolution: "@angular-devkit/schematics-cli@npm:17.3.8" dependencies: - "@angular-devkit/core": "npm:17.3.11" - "@angular-devkit/schematics": "npm:17.3.11" + "@angular-devkit/core": "npm:17.3.8" + "@angular-devkit/schematics": "npm:17.3.8" ansi-colors: "npm:4.1.3" inquirer: "npm:9.2.15" symbol-observable: "npm:4.0.0" yargs-parser: "npm:21.1.1" bin: schematics: bin/schematics.js - checksum: 10c0/042c8a740f20ff4e5675a49d74551e936311b82a6f22d9d3eaefe032dc4ac61ad679004524bf4a69fbf394c9d1eb562d20cc5abd5571131cd6e8bbbe3f3bb768 + checksum: 10c0/bbd7692e0ac2b8f9a5fda8ccafd94a08475e6b4a304580a581dabbeb7b8c8db1934c7ae3eab7bed059862170c62045133800fcfe12cfb8f57700aba3a6aebf37 languageName: node linkType: hard -"@angular-devkit/schematics@npm:17.3.11": - version: 17.3.11 - resolution: "@angular-devkit/schematics@npm:17.3.11" +"@angular-devkit/schematics@npm:17.3.8": + version: 17.3.8 + resolution: "@angular-devkit/schematics@npm:17.3.8" dependencies: - "@angular-devkit/core": "npm:17.3.11" + "@angular-devkit/core": "npm:17.3.8" jsonc-parser: "npm:3.2.1" magic-string: "npm:0.30.8" ora: "npm:5.4.1" rxjs: "npm:7.8.1" - checksum: 10c0/981c674e724408294faa271492e49719c5854aeadfab454c0bdbe761d2ffb1e611881a236f520f6c712fe11bac7283d1edb267d8bdc2ff1b1ddc57dcd99bfaf4 + checksum: 10c0/19c88446b2d82c6f1e14343287c9e9c9cb17edd3d3147346124fb2deadcb836b6da4026b368f87b252e7a5b5b2fe7875e4468bc38a3778ca126412d4ba1c6030 languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.26.2": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.2": version: 7.26.2 resolution: "@babel/code-frame@npm:7.26.2" dependencies: @@ -74,37 +74,59 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.25.9": - version: 7.26.3 - resolution: "@babel/compat-data@npm:7.26.3" - checksum: 10c0/d63e71845c34dfad8d7ff8c15b562e620dbf60e68e3abfa35681d24d612594e8e5ec9790d831a287ecd79ce00f48e7ffddc85c5ce94af7242d45917b9c1a5f90 +"@babel/code-frame@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/code-frame@npm:7.24.7" + dependencies: + "@babel/highlight": "npm:^7.24.7" + picocolors: "npm:^1.0.0" + checksum: 10c0/ab0af539473a9f5aeaac7047e377cb4f4edd255a81d84a76058595f8540784cc3fbe8acf73f1e073981104562490aabfb23008cd66dc677a456a4ed5390fdde6 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.25.2": + version: 7.25.4 + resolution: "@babel/compat-data@npm:7.25.4" + checksum: 10c0/50d79734d584a28c69d6f5b99adfaa064d0f41609a378aef04eb06accc5b44f8520e68549eba3a082478180957b7d5783f1bfb1672e4ae8574e797ce8bae79fa languageName: node linkType: hard "@babel/core@npm:^7.1.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.7.2, @babel/core@npm:^7.8.0": - version: 7.26.0 - resolution: "@babel/core@npm:7.26.0" + version: 7.25.2 + resolution: "@babel/core@npm:7.25.2" dependencies: "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.26.0" - "@babel/generator": "npm:^7.26.0" - "@babel/helper-compilation-targets": "npm:^7.25.9" - "@babel/helper-module-transforms": "npm:^7.26.0" - "@babel/helpers": "npm:^7.26.0" - "@babel/parser": "npm:^7.26.0" - "@babel/template": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.26.0" + "@babel/code-frame": "npm:^7.24.7" + "@babel/generator": "npm:^7.25.0" + "@babel/helper-compilation-targets": "npm:^7.25.2" + "@babel/helper-module-transforms": "npm:^7.25.2" + "@babel/helpers": "npm:^7.25.0" + "@babel/parser": "npm:^7.25.0" + "@babel/template": "npm:^7.25.0" + "@babel/traverse": "npm:^7.25.2" + "@babel/types": "npm:^7.25.2" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10c0/91de73a7ff5c4049fbc747930aa039300e4d2670c2a91f5aa622f1b4868600fc89b01b6278385fbcd46f9574186fa3d9b376a9e7538e50f8d118ec13cfbcb63e + checksum: 10c0/a425fa40e73cb72b6464063a57c478bc2de9dbcc19c280f1b55a3d88b35d572e87e8594e7d7b4880331addb6faef641bbeb701b91b41b8806cd4deae5d74f401 languageName: node linkType: hard -"@babel/generator@npm:^7.26.0, @babel/generator@npm:^7.26.3, @babel/generator@npm:^7.7.2": +"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.6": + version: 7.25.6 + resolution: "@babel/generator@npm:7.25.6" + dependencies: + "@babel/types": "npm:^7.25.6" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^2.5.1" + checksum: 10c0/f89282cce4ddc63654470b98086994d219407d025497f483eb03ba102086e11e2b685b27122f6ff2e1d93b5b5fa0c3a6b7e974fbf2e4a75b685041a746a4291e + languageName: node + linkType: hard + +"@babel/generator@npm:^7.26.3, @babel/generator@npm:^7.7.2": version: 7.26.3 resolution: "@babel/generator@npm:7.26.3" dependencies: @@ -117,49 +139,74 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-compilation-targets@npm:7.25.9" +"@babel/helper-compilation-targets@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-compilation-targets@npm:7.25.2" dependencies: - "@babel/compat-data": "npm:^7.25.9" - "@babel/helper-validator-option": "npm:^7.25.9" - browserslist: "npm:^4.24.0" + "@babel/compat-data": "npm:^7.25.2" + "@babel/helper-validator-option": "npm:^7.24.8" + browserslist: "npm:^4.23.1" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 10c0/a6b26a1e4222e69ef8e62ee19374308f060b007828bc11c65025ecc9e814aba21ff2175d6d3f8bf53c863edd728ee8f94ba7870f8f90a37d39552ad9933a8aaa + checksum: 10c0/de10e986b5322c9f807350467dc845ec59df9e596a5926a3b5edbb4710d8e3b8009d4396690e70b88c3844fe8ec4042d61436dd4b92d1f5f75655cf43ab07e99 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-module-imports@npm:7.25.9" +"@babel/helper-module-imports@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-module-imports@npm:7.24.7" dependencies: - "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/078d3c2b45d1f97ffe6bb47f61961be4785d2342a4156d8b42c92ee4e1b7b9e365655dd6cb25329e8fe1a675c91eeac7e3d04f0c518b67e417e29d6e27b6aa70 + "@babel/traverse": "npm:^7.24.7" + "@babel/types": "npm:^7.24.7" + checksum: 10c0/97c57db6c3eeaea31564286e328a9fb52b0313c5cfcc7eee4bc226aebcf0418ea5b6fe78673c0e4a774512ec6c86e309d0f326e99d2b37bfc16a25a032498af0 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/helper-module-transforms@npm:7.26.0" +"@babel/helper-module-transforms@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-module-transforms@npm:7.25.2" dependencies: - "@babel/helper-module-imports": "npm:^7.25.9" - "@babel/helper-validator-identifier": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" + "@babel/helper-module-imports": "npm:^7.24.7" + "@babel/helper-simple-access": "npm:^7.24.7" + "@babel/helper-validator-identifier": "npm:^7.24.7" + "@babel/traverse": "npm:^7.25.2" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/ee111b68a5933481d76633dad9cdab30c41df4479f0e5e1cc4756dc9447c1afd2c9473b5ba006362e35b17f4ebddd5fca090233bef8dfc84dca9d9127e56ec3a + checksum: 10c0/adaa15970ace0aee5934b5a633789b5795b6229c6a9cf3e09a7e80aa33e478675eee807006a862aa9aa517935d81f88a6db8a9f5936e3a2a40ec75f8062bc329 languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.8.0": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.25.9 resolution: "@babel/helper-plugin-utils@npm:7.25.9" checksum: 10c0/483066a1ba36ff16c0116cd24f93de05de746a603a777cd695ac7a1b034928a65a4ecb35f255761ca56626435d7abdb73219eba196f9aa83b6c3c3169325599d languageName: node linkType: hard +"@babel/helper-plugin-utils@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-plugin-utils@npm:7.24.8" + checksum: 10c0/0376037f94a3bfe6b820a39f81220ac04f243eaee7193774b983e956c1750883ff236b30785795abbcda43fac3ece74750566830c2daa4d6e3870bb0dff34c2d + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-simple-access@npm:7.24.7" + dependencies: + "@babel/traverse": "npm:^7.24.7" + "@babel/types": "npm:^7.24.7" + checksum: 10c0/7230e419d59a85f93153415100a5faff23c133d7442c19e0cd070da1784d13cd29096ee6c5a5761065c44e8164f9f80e3a518c41a0256df39e38f7ad6744fed7 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-string-parser@npm:7.24.8" + checksum: 10c0/6361f72076c17fabf305e252bf6d580106429014b3ab3c1f5c4eb3e6d465536ea6b670cc0e9a637a77a9ad40454d3e41361a2909e70e305116a23d68ce094c08 + languageName: node + linkType: hard + "@babel/helper-string-parser@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-string-parser@npm:7.25.9" @@ -167,6 +214,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-validator-identifier@npm:7.24.7" + checksum: 10c0/87ad608694c9477814093ed5b5c080c2e06d44cb1924ae8320474a74415241223cc2a725eea2640dd783ff1e3390e5f95eede978bc540e870053152e58f1d651 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-validator-identifier@npm:7.25.9" @@ -174,24 +228,36 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-validator-option@npm:7.25.9" - checksum: 10c0/27fb195d14c7dcb07f14e58fe77c44eea19a6a40a74472ec05c441478fa0bb49fa1c32b2d64be7a38870ee48ef6601bdebe98d512f0253aea0b39756c4014f3e +"@babel/helper-validator-option@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-validator-option@npm:7.24.8" + checksum: 10c0/73db93a34ae89201351288bee7623eed81a54000779462a986105b54ffe82069e764afd15171a428b82e7c7a9b5fec10b5d5603b216317a414062edf5c67a21f languageName: node linkType: hard -"@babel/helpers@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/helpers@npm:7.26.0" +"@babel/helpers@npm:^7.25.0": + version: 7.25.6 + resolution: "@babel/helpers@npm:7.25.6" dependencies: - "@babel/template": "npm:^7.25.9" - "@babel/types": "npm:^7.26.0" - checksum: 10c0/343333cced6946fe46617690a1d0789346960910225ce359021a88a60a65bc0d791f0c5d240c0ed46cf8cc63b5fd7df52734ff14e43b9c32feae2b61b1647097 + "@babel/template": "npm:^7.25.0" + "@babel/types": "npm:^7.25.6" + checksum: 10c0/448c1cdabccca42fd97a252f73f1e4bcd93776dbf24044f3b4f49b756bf2ece73ee6df05177473bb74ea7456dddd18d6f481e4d96d2cc7839d078900d48c696c languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.3, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.9.6": +"@babel/highlight@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/highlight@npm:7.24.7" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.24.7" + chalk: "npm:^2.4.2" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.0.0" + checksum: 10c0/674334c571d2bb9d1c89bdd87566383f59231e16bcdcf5bb7835babdf03c9ae585ca0887a7b25bdf78f303984af028df52831c7989fecebb5101cc132da9393a + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.3, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.9.6": version: 7.26.3 resolution: "@babel/parser@npm:7.26.3" dependencies: @@ -202,6 +268,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.6": + version: 7.25.6 + resolution: "@babel/parser@npm:7.25.6" + dependencies: + "@babel/types": "npm:^7.25.6" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/f88a0e895dbb096fd37c4527ea97d12b5fc013720602580a941ac3a339698872f0c911e318c292b184c36b5fbe23b612f05aff9d24071bc847c7b1c21552c41d + languageName: node + linkType: hard + "@babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" @@ -247,13 +324,13 @@ __metadata: linkType: hard "@babel/plugin-syntax-import-attributes@npm:^7.24.7": - version: 7.26.0 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.26.0" + version: 7.25.6 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.24.8" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/e594c185b12bfe0bbe7ca78dfeebe870e6d569a12128cac86f3164a075fe0ff70e25ddbd97fd0782906b91f65560c9dc6957716b7b4a68aba2516c9b7455e352 + checksum: 10c0/0e9359cf2d117476310961dfcfd7204ed692e933707da10d6194153d3996cd2ea5b7635fc90d720dce3612083af89966bb862561064a509c350320dc98644751 languageName: node linkType: hard @@ -368,22 +445,33 @@ __metadata: linkType: hard "@babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.25.9 - resolution: "@babel/plugin-syntax-typescript@npm:7.25.9" + version: 7.25.4 + resolution: "@babel/plugin-syntax-typescript@npm:7.25.4" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.24.8" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/5192ebe11bd46aea68b7a60fd9555465c59af7e279e71126788e59121b86e00b505816685ab4782abe159232b0f73854e804b54449820b0d950b397ee158caa2 + checksum: 10c0/199919d44c73e5edee9ffd311cf638f88d26a810189e32d338c46c7600441fd5c4a2e431f9be377707cbf318410895304e90b83bf8d9011d205150fa7f260e63 languageName: node linkType: hard "@babel/runtime@npm:^7.23.9": - version: 7.26.0 - resolution: "@babel/runtime@npm:7.26.0" + version: 7.25.6 + resolution: "@babel/runtime@npm:7.25.6" dependencies: regenerator-runtime: "npm:^0.14.0" - checksum: 10c0/12c01357e0345f89f4f7e8c0e81921f2a3e3e101f06e8eaa18a382b517376520cd2fa8c237726eb094dab25532855df28a7baaf1c26342b52782f6936b07c287 + checksum: 10c0/d6143adf5aa1ce79ed374e33fdfd74fa975055a80bc6e479672ab1eadc4e4bfd7484444e17dd063a1d180e051f3ec62b357c7a2b817e7657687b47313158c3d2 + languageName: node + linkType: hard + +"@babel/template@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/template@npm:7.25.0" + dependencies: + "@babel/code-frame": "npm:^7.24.7" + "@babel/parser": "npm:^7.25.0" + "@babel/types": "npm:^7.25.0" + checksum: 10c0/4e31afd873215744c016e02b04f43b9fa23205d6d0766fb2e93eb4091c60c1b88897936adb895fb04e3c23de98dfdcbe31bc98daaa1a4e0133f78bb948e1209b languageName: node linkType: hard @@ -398,7 +486,22 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.7.2": +"@babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.25.2": + version: 7.25.6 + resolution: "@babel/traverse@npm:7.25.6" + dependencies: + "@babel/code-frame": "npm:^7.24.7" + "@babel/generator": "npm:^7.25.6" + "@babel/parser": "npm:^7.25.6" + "@babel/template": "npm:^7.25.0" + "@babel/types": "npm:^7.25.6" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/964304c6fa46bd705428ba380bf73177eeb481c3f26d82ea3d0661242b59e0dd4329d23886035e9ca9a4ceb565c03a76fd615109830687a27bcd350059d6377e + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.7.2": version: 7.26.4 resolution: "@babel/traverse@npm:7.26.4" dependencies: @@ -413,7 +516,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.26.3, @babel/types@npm:^7.3.3, @babel/types@npm:^7.6.1, @babel/types@npm:^7.9.6": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.3, @babel/types@npm:^7.3.3, @babel/types@npm:^7.6.1, @babel/types@npm:^7.9.6": version: 7.26.3 resolution: "@babel/types@npm:7.26.3" dependencies: @@ -423,6 +526,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.24.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.6": + version: 7.25.6 + resolution: "@babel/types@npm:7.25.6" + dependencies: + "@babel/helper-string-parser": "npm:^7.24.8" + "@babel/helper-validator-identifier": "npm:^7.24.7" + to-fast-properties: "npm:^2.0.0" + checksum: 10c0/89d45fbee24e27a05dca2d08300a26b905bd384a480448823f6723c72d3a30327c517476389b7280ce8cb9a2c48ef8f47da7f9f6d326faf6f53fd6b68237bdc4 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -438,193 +552,194 @@ __metadata: linkType: hard "@commitlint/cli@npm:^19.4.0": - version: 19.6.1 - resolution: "@commitlint/cli@npm:19.6.1" - dependencies: - "@commitlint/format": "npm:^19.5.0" - "@commitlint/lint": "npm:^19.6.0" - "@commitlint/load": "npm:^19.6.1" - "@commitlint/read": "npm:^19.5.0" - "@commitlint/types": "npm:^19.5.0" - tinyexec: "npm:^0.3.0" + version: 19.4.1 + resolution: "@commitlint/cli@npm:19.4.1" + dependencies: + "@commitlint/format": "npm:^19.3.0" + "@commitlint/lint": "npm:^19.4.1" + "@commitlint/load": "npm:^19.4.0" + "@commitlint/read": "npm:^19.4.0" + "@commitlint/types": "npm:^19.0.3" + execa: "npm:^8.0.1" yargs: "npm:^17.0.0" bin: commitlint: cli.js - checksum: 10c0/fa7a344292f1d25533b195b061bcae0a80434490fae843ad28593c09668f48e9a74906b69f95d26df4152c56c71ab31a0bc169d333e22c6ca53dc54646a2ff19 + checksum: 10c0/a829b91e690b3dd44fab9661d7defdb3bd2556f014e122a004b3ffaf25673f2c0916a112db651a9af3168f8ebdc91828d1ee4db7a1f3cef7e7f4ff9b9699aabf languageName: node linkType: hard "@commitlint/config-conventional@npm:^19.2.2": - version: 19.6.0 - resolution: "@commitlint/config-conventional@npm:19.6.0" + version: 19.4.1 + resolution: "@commitlint/config-conventional@npm:19.4.1" dependencies: - "@commitlint/types": "npm:^19.5.0" + "@commitlint/types": "npm:^19.0.3" conventional-changelog-conventionalcommits: "npm:^7.0.2" - checksum: 10c0/984870138f5d4b947bc2ea8d12fcb8103ef9e6141d0fb50a6e387665495b80b35890d9dc025443a243a53d2a69d7c0bab1d77c5658a6e5a15a3dd7773557fad2 + checksum: 10c0/aece8757a2263735d9a131b6b2eeeeff2c30106a902b74b0f6de13c1b3724594ed3b94986c1d4bd5ad70b7ba1569ed8b8441ac171dc0343b4d45f733b397011c languageName: node linkType: hard -"@commitlint/config-validator@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/config-validator@npm:19.5.0" +"@commitlint/config-validator@npm:^19.0.3": + version: 19.0.3 + resolution: "@commitlint/config-validator@npm:19.0.3" dependencies: - "@commitlint/types": "npm:^19.5.0" + "@commitlint/types": "npm:^19.0.3" ajv: "npm:^8.11.0" - checksum: 10c0/f04b8c66448c9a4f335d1ac9625393d471d2bcc864adc834eeec52ce19939c25475bf90677504df03ab88869e883b4ebfddff68f99f7652900d6b297ef586643 + checksum: 10c0/7a0d55837fb88b1f05892fed67a9582669331a452de96e4caec0c9a397cd6083701265b066e6e32a259b43737187cd31b15ab02b0459c817ea9e7b75602db3c7 languageName: node linkType: hard -"@commitlint/ensure@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/ensure@npm:19.5.0" +"@commitlint/ensure@npm:^19.0.3": + version: 19.0.3 + resolution: "@commitlint/ensure@npm:19.0.3" dependencies: - "@commitlint/types": "npm:^19.5.0" + "@commitlint/types": "npm:^19.0.3" lodash.camelcase: "npm:^4.3.0" lodash.kebabcase: "npm:^4.1.1" lodash.snakecase: "npm:^4.1.1" lodash.startcase: "npm:^4.4.0" lodash.upperfirst: "npm:^4.3.1" - checksum: 10c0/94955d424da36a4e9390dfb6e128160d1dcd3ffa20b835a9b6fdd92af46bf8897851f19cbeb9d12a70e9b9c36a993d3a48a60893e74f32fe1b601e1e68484d71 + checksum: 10c0/66785aeddec70e26766f6bb11b1f78892cabdb97b0b77fb97ca6457578e663188903933d5f64559205dd54754e8c2c4a902e73e1749e34cbe07a4b296e374d72 languageName: node linkType: hard -"@commitlint/execute-rule@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/execute-rule@npm:19.5.0" - checksum: 10c0/966dfc09ae3fe609527fb49c7773ae210ade9d14a802a92a57ab251900a77d2968aed08df6b34f175bf4ae9bf5d675b52b346e7b10b717e8a635499e4cf42267 +"@commitlint/execute-rule@npm:^19.0.0": + version: 19.0.0 + resolution: "@commitlint/execute-rule@npm:19.0.0" + checksum: 10c0/70d37f25a9af0a6adcd9ae7cadd4a917e8d219d316798469e2957608288d7cab8a3b03f7b132f1229a5ee545bbba139dc801d0006a7df3b756354b3890b9c1bb languageName: node linkType: hard -"@commitlint/format@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/format@npm:19.5.0" +"@commitlint/format@npm:^19.3.0": + version: 19.3.0 + resolution: "@commitlint/format@npm:19.3.0" dependencies: - "@commitlint/types": "npm:^19.5.0" + "@commitlint/types": "npm:^19.0.3" chalk: "npm:^5.3.0" - checksum: 10c0/209a3d530d028d483886ea2337d6ec8a95b61119f53f7f1db167b13fd8a204bdcbcd704e649406a0b2285e8424b3bac9e1e6856d2a78f45e176976b9efb76e45 + checksum: 10c0/857a1784481edad9013514cbcc9ec93af33acc8bd491f5d23625c53fb93841566ce110e3004ecaab7f4f89c9331940fe63b83922a4a81f419e67b70e0dc90e41 languageName: node linkType: hard -"@commitlint/is-ignored@npm:^19.6.0": - version: 19.6.0 - resolution: "@commitlint/is-ignored@npm:19.6.0" +"@commitlint/is-ignored@npm:^19.2.2": + version: 19.2.2 + resolution: "@commitlint/is-ignored@npm:19.2.2" dependencies: - "@commitlint/types": "npm:^19.5.0" + "@commitlint/types": "npm:^19.0.3" semver: "npm:^7.6.0" - checksum: 10c0/64e3522598f131aefab72e78f2b0d5d78228041fbe14fd9785611bd5a4ff7dfae38288ff87b171ab2ff722342983387b6e568ab4d758f3c97866eb924252e6c5 + checksum: 10c0/8e416edbf24ec386f6211d4879c002cf82fdebfd1f69556ae2ad62f6ae9b705aa20ea3108529fd44e7d246526c6133851905ee826a83efc81b2f11443a7d03c3 languageName: node linkType: hard -"@commitlint/lint@npm:^19.6.0": - version: 19.6.0 - resolution: "@commitlint/lint@npm:19.6.0" +"@commitlint/lint@npm:^19.4.1": + version: 19.4.1 + resolution: "@commitlint/lint@npm:19.4.1" dependencies: - "@commitlint/is-ignored": "npm:^19.6.0" - "@commitlint/parse": "npm:^19.5.0" - "@commitlint/rules": "npm:^19.6.0" - "@commitlint/types": "npm:^19.5.0" - checksum: 10c0/d7e3c6a43d89b2196362dce5abef6665869844455176103f311cab7a92f6b7be60edec4f03d27b946a65ee2ceb8ff16f5955cba1da6ecdeb9efe9f215b16f47f + "@commitlint/is-ignored": "npm:^19.2.2" + "@commitlint/parse": "npm:^19.0.3" + "@commitlint/rules": "npm:^19.4.1" + "@commitlint/types": "npm:^19.0.3" + checksum: 10c0/d3b455c23480f64fb4939eb78266eee687048a5e3c4203207fb25f6b7bd1f369a8529c659018db20765a6a57f6c161d3f80a01422ca7883b1a4405cd064d8fd6 languageName: node linkType: hard -"@commitlint/load@npm:^19.6.1": - version: 19.6.1 - resolution: "@commitlint/load@npm:19.6.1" +"@commitlint/load@npm:^19.4.0": + version: 19.4.0 + resolution: "@commitlint/load@npm:19.4.0" dependencies: - "@commitlint/config-validator": "npm:^19.5.0" - "@commitlint/execute-rule": "npm:^19.5.0" - "@commitlint/resolve-extends": "npm:^19.5.0" - "@commitlint/types": "npm:^19.5.0" + "@commitlint/config-validator": "npm:^19.0.3" + "@commitlint/execute-rule": "npm:^19.0.0" + "@commitlint/resolve-extends": "npm:^19.1.0" + "@commitlint/types": "npm:^19.0.3" chalk: "npm:^5.3.0" cosmiconfig: "npm:^9.0.0" - cosmiconfig-typescript-loader: "npm:^6.1.0" + cosmiconfig-typescript-loader: "npm:^5.0.0" lodash.isplainobject: "npm:^4.0.6" lodash.merge: "npm:^4.6.2" lodash.uniq: "npm:^4.5.0" - checksum: 10c0/3f92ef6a592491dbb48ae985ef8e3897adccbbb735c09425304cbe574a0ec392b2d724ca14ebb99107e32f60bbec3b873ab64e87fea6d5af7aa579a9052a626e + checksum: 10c0/805fd80b1f0e127a03b89405c60535dd89fd6676c749ef86e4a41af787f3c9cae0c18c5d5ce906bd6620f566b37d19a4edff63d21539da4212414fd741e19c72 languageName: node linkType: hard -"@commitlint/message@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/message@npm:19.5.0" - checksum: 10c0/72b990ba8c3c41441bff2126f4ea536a635c9768dee7000b4951770ac82c5e0bb4c2d408cf28cadbf51a0abbdb7a09ddd36e0968af0997fcc166596d4c3866a7 +"@commitlint/message@npm:^19.0.0": + version: 19.0.0 + resolution: "@commitlint/message@npm:19.0.0" + checksum: 10c0/753bf18838ebde4464e8f4b346d04d3367fbb90b542db6a54da08aa241497b4050a6ecd09dba4f37f6348855fa86e6625350d596fe5dea7a8dd4faee49ab76a7 languageName: node linkType: hard -"@commitlint/parse@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/parse@npm:19.5.0" +"@commitlint/parse@npm:^19.0.3": + version: 19.0.3 + resolution: "@commitlint/parse@npm:19.0.3" dependencies: - "@commitlint/types": "npm:^19.5.0" + "@commitlint/types": "npm:^19.0.3" conventional-changelog-angular: "npm:^7.0.0" conventional-commits-parser: "npm:^5.0.0" - checksum: 10c0/63655cedcf48b29613ef959155ee83f49942406abe40ee6b64ad989a169a0582451dcf15a9c9b69a66011ae451ab2e086fb80c1823cc7ddf275705ff627660b1 + checksum: 10c0/ede8d5bfb37520337ea7836a68f280cdb4b9788d0586b8be676394b3dd8a7a9626391178c4f94d334c5b8d95ea75c73939c40c8c9d81c372cf7743f5bff3d0e1 languageName: node linkType: hard -"@commitlint/read@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/read@npm:19.5.0" +"@commitlint/read@npm:^19.4.0": + version: 19.4.0 + resolution: "@commitlint/read@npm:19.4.0" dependencies: - "@commitlint/top-level": "npm:^19.5.0" - "@commitlint/types": "npm:^19.5.0" + "@commitlint/top-level": "npm:^19.0.0" + "@commitlint/types": "npm:^19.0.3" + execa: "npm:^8.0.1" git-raw-commits: "npm:^4.0.0" minimist: "npm:^1.2.8" - tinyexec: "npm:^0.3.0" - checksum: 10c0/c2d6f958930e815337a4994779ca1dfcbbb6b81b8f3098cc7380e2cc5ddeae69ebd839b48fecd08950e565d43bc42c479915c578eaf57b3877706bca1fad6b8a + checksum: 10c0/b0243feeb903fe4bb15bc352b10116451ac280fffbf2220a684e0f01ce4583e558b944ff8a6901f8a70faa0ec6020fa720da70328fb110747dbd4a7162695125 languageName: node linkType: hard -"@commitlint/resolve-extends@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/resolve-extends@npm:19.5.0" +"@commitlint/resolve-extends@npm:^19.1.0": + version: 19.1.0 + resolution: "@commitlint/resolve-extends@npm:19.1.0" dependencies: - "@commitlint/config-validator": "npm:^19.5.0" - "@commitlint/types": "npm:^19.5.0" + "@commitlint/config-validator": "npm:^19.0.3" + "@commitlint/types": "npm:^19.0.3" global-directory: "npm:^4.0.1" import-meta-resolve: "npm:^4.0.0" lodash.mergewith: "npm:^4.6.2" resolve-from: "npm:^5.0.0" - checksum: 10c0/10569a46036b7aa93c77dc5001a67bc9f36b340b97b2fd39b5ee95b0efc5e35335c61f86d4ba0bb5a8e6dd49ccf956990cce9ee29cfea9ba567e02668be01841 + checksum: 10c0/5b4c69694ddf63f15499a940f99a39bdf0ae1943eb4731c7ea10572e416e44d6d57280faa8011801f4dc64aa70e55eb3b510c86c8e2b76820dcfe88b421afd4a languageName: node linkType: hard -"@commitlint/rules@npm:^19.6.0": - version: 19.6.0 - resolution: "@commitlint/rules@npm:19.6.0" +"@commitlint/rules@npm:^19.4.1": + version: 19.4.1 + resolution: "@commitlint/rules@npm:19.4.1" dependencies: - "@commitlint/ensure": "npm:^19.5.0" - "@commitlint/message": "npm:^19.5.0" - "@commitlint/to-lines": "npm:^19.5.0" - "@commitlint/types": "npm:^19.5.0" - checksum: 10c0/1d93b741cfb46e6c5314ddb03282844b65db832aa4767561bb37e9d0595d02330e6a0a557fb66f86d78b2ffd91cd2ed794899df59ee23b27abc44e1e57b42d0e + "@commitlint/ensure": "npm:^19.0.3" + "@commitlint/message": "npm:^19.0.0" + "@commitlint/to-lines": "npm:^19.0.0" + "@commitlint/types": "npm:^19.0.3" + execa: "npm:^8.0.1" + checksum: 10c0/d2052d193dc04b6fc0588ea57eab8490c408bd725f8c4bdb8aa274dc3b5a6ba45d23b718675c6e69304c4fe6c8e92e45b6d6c9de9a5fef266a50e7a71cf3058a languageName: node linkType: hard -"@commitlint/to-lines@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/to-lines@npm:19.5.0" - checksum: 10c0/7674b4b6887c09e84728b9fa9c986ab77db400bf53ec83aaae84e03e0f3ed33088d450d1f67135f0f7a4cbc1121181775199779e1ca162fe604c902987e3008f +"@commitlint/to-lines@npm:^19.0.0": + version: 19.0.0 + resolution: "@commitlint/to-lines@npm:19.0.0" + checksum: 10c0/9e8836668d176f4ddfa30bd6619cba9764223c5e0a76473c470b373069785ae2eb7af17db67e0e11ff30d8db997d0dd06a148bd8053c71fea1d03fc2278f0e8b languageName: node linkType: hard -"@commitlint/top-level@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/top-level@npm:19.5.0" +"@commitlint/top-level@npm:^19.0.0": + version: 19.0.0 + resolution: "@commitlint/top-level@npm:19.0.0" dependencies: find-up: "npm:^7.0.0" - checksum: 10c0/8c1edc513c8d6655606e52d160d31ccd4b13234400ca67d21782798ab66701780b1ec21a7bb411fe8270db7735f10d39d3b0a3e52f3ddd1109b80741eb512bb4 + checksum: 10c0/27ee2797f8d3d75aec3e9bf151b48fdbe4c362effbc2e7a11e6326342af06a29983fea5ad8756587e285c035b5ec45d4c4bc28cd698b62db31ca326db46efb64 languageName: node linkType: hard -"@commitlint/types@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/types@npm:19.5.0" +"@commitlint/types@npm:^19.0.3": + version: 19.0.3 + resolution: "@commitlint/types@npm:19.0.3" dependencies: "@types/conventional-commits-parser": "npm:^5.0.0" chalk: "npm:^5.3.0" - checksum: 10c0/f4a93992f43b23cd5af200c69bb73227fdc0f78a6f7ebcda73dad10d558c1ac66ff164aa6dc3c2ddb322c9ed8b1a89b05f458e40d7c440a0358f435d2d71c2df + checksum: 10c0/279454409771097432cb3ecd4930b8f10e99e150b9306e931b69e4e80011a4251f326523bfaba59fcf9a9db7978c76073b7c7c07fbad6b90e045cb0fa2b70047 languageName: node linkType: hard @@ -1570,20 +1685,20 @@ __metadata: linkType: hard "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.4.1 - resolution: "@eslint-community/eslint-utils@npm:4.4.1" + version: 4.4.0 + resolution: "@eslint-community/eslint-utils@npm:4.4.0" dependencies: - eslint-visitor-keys: "npm:^3.4.3" + eslint-visitor-keys: "npm:^3.3.0" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10c0/2aa0ac2fc50ff3f234408b10900ed4f1a0b19352f21346ad4cc3d83a1271481bdda11097baa45d484dd564c895e0762a27a8240be7a256b3ad47129e96528252 + checksum: 10c0/7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e languageName: node linkType: hard "@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.4.0, @eslint-community/regexpp@npm:^4.6.1": - version: 4.12.1 - resolution: "@eslint-community/regexpp@npm:4.12.1" - checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 + version: 4.11.0 + resolution: "@eslint-community/regexpp@npm:4.11.0" + checksum: 10c0/0f6328869b2741e2794da4ad80beac55cba7de2d3b44f796a60955b0586212ec75e6b0253291fd4aad2100ad471d1480d8895f2b54f1605439ba4c875e05e523 languageName: node linkType: hard @@ -1604,10 +1719,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:8.57.1": - version: 8.57.1 - resolution: "@eslint/js@npm:8.57.1" - checksum: 10c0/b489c474a3b5b54381c62e82b3f7f65f4b8a5eaaed126546520bf2fede5532a8ed53212919fed1e9048dcf7f37167c8561d58d0ba4492a4244004e7793805223 +"@eslint/js@npm:8.57.0": + version: 8.57.0 + resolution: "@eslint/js@npm:8.57.0" + checksum: 10c0/9a518bb8625ba3350613903a6d8c622352ab0c6557a59fe6ff6178bf882bf57123f9d92aa826ee8ac3ee74b9c6203fe630e9ee00efb03d753962dcf65ee4bd94 languageName: node linkType: hard @@ -1723,14 +1838,14 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.13.0": - version: 0.13.0 - resolution: "@humanwhocodes/config-array@npm:0.13.0" +"@humanwhocodes/config-array@npm:^0.11.14": + version: 0.11.14 + resolution: "@humanwhocodes/config-array@npm:0.11.14" dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.3" + "@humanwhocodes/object-schema": "npm:^2.0.2" debug: "npm:^4.3.1" minimatch: "npm:^3.0.5" - checksum: 10c0/205c99e756b759f92e1f44a3dc6292b37db199beacba8f26c2165d4051fe73a4ae52fdcfd08ffa93e7e5cb63da7c88648f0e84e197d154bbbbe137b2e0dd332e + checksum: 10c0/66f725b4ee5fdd8322c737cb5013e19fac72d4d69c8bf4b7feb192fcb83442b035b92186f8e9497c220e58b2d51a080f28a73f7899bc1ab288c3be172c467541 languageName: node linkType: hard @@ -1741,7 +1856,7 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.3": +"@humanwhocodes/object-schema@npm:^2.0.2": version: 2.0.3 resolution: "@humanwhocodes/object-schema@npm:2.0.3" checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c @@ -1769,15 +1884,6 @@ __metadata: languageName: node linkType: hard -"@isaacs/fs-minipass@npm:^4.0.0": - version: 4.0.1 - resolution: "@isaacs/fs-minipass@npm:4.0.1" - dependencies: - minipass: "npm:^7.0.4" - checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 - languageName: node - linkType: hard - "@istanbuljs/load-nyc-config@npm:^1.0.0": version: 1.1.0 resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" @@ -2000,13 +2106,13 @@ __metadata: linkType: hard "@jridgewell/gen-mapping@npm:^0.3.5": - version: 0.3.8 - resolution: "@jridgewell/gen-mapping@npm:0.3.8" + version: 0.3.5 + resolution: "@jridgewell/gen-mapping@npm:0.3.5" dependencies: "@jridgewell/set-array": "npm:^1.2.1" "@jridgewell/sourcemap-codec": "npm:^1.4.10" "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10c0/c668feaf86c501d7c804904a61c23c67447b2137b813b9ce03eca82cb9d65ac7006d766c218685d76e3d72828279b6ee26c347aa1119dab23fbaf36aed51585a + checksum: 10c0/1be4fd4a6b0f41337c4f5fdf4afc3bd19e39c3691924817108b82ffcb9c9e609c273f936932b9fba4b3a298ce2eb06d9bff4eb1cc3bd81c4f4ee1b4917e25feb languageName: node linkType: hard @@ -2051,7 +2157,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": +"@jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -2973,30 +3079,30 @@ __metadata: linkType: hard "@nestjs/cli@npm:^10.4.4": - version: 10.4.9 - resolution: "@nestjs/cli@npm:10.4.9" + version: 10.4.4 + resolution: "@nestjs/cli@npm:10.4.4" dependencies: - "@angular-devkit/core": "npm:17.3.11" - "@angular-devkit/schematics": "npm:17.3.11" - "@angular-devkit/schematics-cli": "npm:17.3.11" + "@angular-devkit/core": "npm:17.3.8" + "@angular-devkit/schematics": "npm:17.3.8" + "@angular-devkit/schematics-cli": "npm:17.3.8" "@nestjs/schematics": "npm:^10.0.1" chalk: "npm:4.1.2" chokidar: "npm:3.6.0" cli-table3: "npm:0.6.5" commander: "npm:4.1.1" fork-ts-checker-webpack-plugin: "npm:9.0.2" - glob: "npm:10.4.5" + glob: "npm:10.4.2" inquirer: "npm:8.2.6" node-emoji: "npm:1.11.0" ora: "npm:5.4.1" tree-kill: "npm:1.2.2" tsconfig-paths: "npm:4.2.0" - tsconfig-paths-webpack-plugin: "npm:4.2.0" - typescript: "npm:5.7.2" - webpack: "npm:5.97.1" + tsconfig-paths-webpack-plugin: "npm:4.1.0" + typescript: "npm:5.3.3" + webpack: "npm:5.93.0" webpack-node-externals: "npm:3.0.0" peerDependencies: - "@swc/cli": ^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 + "@swc/cli": ^0.1.62 || ^0.3.0 || ^0.4.0 "@swc/core": ^1.3.62 peerDependenciesMeta: "@swc/cli": @@ -3005,16 +3111,16 @@ __metadata: optional: true bin: nest: bin/nest.js - checksum: 10c0/82f4ba6c6be2fa5f6a78fb561f1c32b392279a358a05ca052224f88e128c09b4994cfbf7a946cf0b0e39f56da707c9221542b933c1001fd012d0f4ae7bedd565 + checksum: 10c0/1b7ee9c5bd46c766d078bb3d7303c9fd83ae1e2304397a3ce3d416f9ad917866f0589fee6a11c1a5bce6783660f58df5755d24a390234f2e4cab06093b4e0faf languageName: node linkType: hard "@nestjs/common@npm:^10.4.1": - version: 10.4.15 - resolution: "@nestjs/common@npm:10.4.15" + version: 10.4.1 + resolution: "@nestjs/common@npm:10.4.1" dependencies: iterare: "npm:1.2.1" - tslib: "npm:2.8.1" + tslib: "npm:2.6.3" uid: "npm:2.0.2" peerDependencies: class-transformer: "*" @@ -3026,13 +3132,13 @@ __metadata: optional: true class-validator: optional: true - checksum: 10c0/9566993fd3f805df2be632f5a16ca90d81b0deeb50e1e7cde4a49d4948c0d8d7db58b42ded70f35061e95e91a40d2adcd9e19cb2771090114eb737f62d2ea4c6 + checksum: 10c0/4b624893ad55f9fcf8638eca045d09dd091a8be2cd5061988e3a479178f95b9517aaa7c51ce136801d8b87bfe1494cd198dc0a68630bb8bcba100044915736e7 languageName: node linkType: hard "@nestjs/config@npm:^3.2.3": - version: 3.3.0 - resolution: "@nestjs/config@npm:3.3.0" + version: 3.2.3 + resolution: "@nestjs/config@npm:3.2.3" dependencies: dotenv: "npm:16.4.5" dotenv-expand: "npm:10.0.0" @@ -3040,19 +3146,19 @@ __metadata: peerDependencies: "@nestjs/common": ^8.0.0 || ^9.0.0 || ^10.0.0 rxjs: ^7.1.0 - checksum: 10c0/9eb1634b1a0cf4a6892e1b4449344df296d25e886fcc534853b3e3d7cf462eddb8c6cb7dd1339e29b1a6f7451d08a27a98fcbeecc95d906035bbdb81dbc623f9 + checksum: 10c0/9372dbfb0c5d8b4c764e9709f30df278a8d138afd4dd1ebc671a589edcd41d833fc1f898e2ff8202646d441df9131ece14611ae688b7aeb5ff9da40686c813c0 languageName: node linkType: hard "@nestjs/core@npm:^10.4.1": - version: 10.4.15 - resolution: "@nestjs/core@npm:10.4.15" + version: 10.4.1 + resolution: "@nestjs/core@npm:10.4.1" dependencies: "@nuxtjs/opencollective": "npm:0.3.2" fast-safe-stringify: "npm:2.1.1" iterare: "npm:1.2.1" - path-to-regexp: "npm:3.3.0" - tslib: "npm:2.8.1" + path-to-regexp: "npm:3.2.0" + tslib: "npm:2.6.3" uid: "npm:2.0.2" peerDependencies: "@nestjs/common": ^10.0.0 @@ -3068,7 +3174,7 @@ __metadata: optional: true "@nestjs/websockets": optional: true - checksum: 10c0/68958efca25b28ea38bcfc810751c626a913a848d9ec86aab0a6021e708632b95585f0da5d5c2b0513bb64cacfc97d391b45ec002b718a8e90fdda1b4354bed1 + checksum: 10c0/57be2fc7617041558e90a92ec7c6f1011ed2bab8bfe5c5c02db5f5a03115e5e7347c06be0117767ce7d6c748fbe81ff075fc50190c998d30bbf25fd20e6f4ab8 languageName: node linkType: hard @@ -3112,45 +3218,45 @@ __metadata: linkType: hard "@nestjs/platform-express@npm:^10.4.1": - version: 10.4.15 - resolution: "@nestjs/platform-express@npm:10.4.15" + version: 10.4.1 + resolution: "@nestjs/platform-express@npm:10.4.1" dependencies: - body-parser: "npm:1.20.3" + body-parser: "npm:1.20.2" cors: "npm:2.8.5" - express: "npm:4.21.2" + express: "npm:4.19.2" multer: "npm:1.4.4-lts.1" - tslib: "npm:2.8.1" + tslib: "npm:2.6.3" peerDependencies: "@nestjs/common": ^10.0.0 "@nestjs/core": ^10.0.0 - checksum: 10c0/95df4c0580718dc78571827cbe074f8db24ecceb8d0305e9984b645ff806514dd8ddaacc8786f0bf7b78091032c77d8a244ba780007e58463ccdf6255ca7f039 + checksum: 10c0/7ca0b011eff3e3a3efbc0e0df9e874943f5acced3966350202d01e0e3bb65ea37de7cfb6d60bd3150f679a733ee33273fcbdc65146d18964b7e58116ed0d873a languageName: node linkType: hard "@nestjs/schematics@npm:^10.0.1, @nestjs/schematics@npm:^10.1.3": - version: 10.2.3 - resolution: "@nestjs/schematics@npm:10.2.3" + version: 10.1.4 + resolution: "@nestjs/schematics@npm:10.1.4" dependencies: - "@angular-devkit/core": "npm:17.3.11" - "@angular-devkit/schematics": "npm:17.3.11" - comment-json: "npm:4.2.5" + "@angular-devkit/core": "npm:17.3.8" + "@angular-devkit/schematics": "npm:17.3.8" + comment-json: "npm:4.2.3" jsonc-parser: "npm:3.3.1" pluralize: "npm:8.0.0" peerDependencies: typescript: ">=4.8.2" - checksum: 10c0/c883c10605c20f6a774f7439d2a296a13e2dd0d33b8628cf33a31fe8779e29ec27138509501b08f6b5c42fa4701ea970155d84cc85b99aae25c3039c7cce1b2d + checksum: 10c0/4dc7e8d035f4baa38d736f9cbbb28398fe66699aa0cd3711f22aa193e2d582ef4f104a9ab3a4b3ccd8431a05f056fe15672a012da5d9256a521abf1f21703317 languageName: node linkType: hard "@nestjs/swagger@npm:^7.4.0": - version: 7.4.2 - resolution: "@nestjs/swagger@npm:7.4.2" + version: 7.4.0 + resolution: "@nestjs/swagger@npm:7.4.0" dependencies: "@microsoft/tsdoc": "npm:^0.15.0" "@nestjs/mapped-types": "npm:2.0.5" js-yaml: "npm:4.1.0" lodash: "npm:4.17.21" - path-to-regexp: "npm:3.3.0" + path-to-regexp: "npm:3.2.0" swagger-ui-dist: "npm:5.17.14" peerDependencies: "@fastify/static": ^6.0.0 || ^7.0.0 @@ -3166,15 +3272,15 @@ __metadata: optional: true class-validator: optional: true - checksum: 10c0/fda99b154933bb23d3b818fddf0338f74389a2bea42089de419c03203f18450faaa3840f1601b1994b312879903395ed34a98772e2decb0aab20c09910c2910c + checksum: 10c0/6dca99984bea2303353cd890b622b037e8cb4129c38047883936c619073e0a94ccb13ca98ab68d3ad5d0bc96564f94b9e83809a7489f36e2cae4c553c385d779 languageName: node linkType: hard "@nestjs/testing@npm:^10.4.1": - version: 10.4.15 - resolution: "@nestjs/testing@npm:10.4.15" + version: 10.4.1 + resolution: "@nestjs/testing@npm:10.4.1" dependencies: - tslib: "npm:2.8.1" + tslib: "npm:2.6.3" peerDependencies: "@nestjs/common": ^10.0.0 "@nestjs/core": ^10.0.0 @@ -3185,7 +3291,7 @@ __metadata: optional: true "@nestjs/platform-express": optional: true - checksum: 10c0/6d6b76791677bf6b0ae6c82f2a4b43fda489169fde7858037dd3483cc17b8885d353e9b7c51f5736cad86526afc2c2ebd0b6a1e88f5daa0be87a1546f4a6e511 + checksum: 10c0/3cbd36d578975435fab92e865f7bf19759d60dd065ace7493f38a16369e04fbf164b5f961f47dc1fdd1fe2ab753acd82c5c4b7671adc9e73caf2ae0ea58c7bc6 languageName: node linkType: hard @@ -3279,16 +3385,16 @@ __metadata: languageName: node linkType: hard -"@npmcli/agent@npm:^3.0.0": - version: 3.0.0 - resolution: "@npmcli/agent@npm:3.0.0" +"@npmcli/agent@npm:^2.0.0": + version: 2.2.2 + resolution: "@npmcli/agent@npm:2.2.2" dependencies: agent-base: "npm:^7.1.0" http-proxy-agent: "npm:^7.0.0" https-proxy-agent: "npm:^7.0.1" lru-cache: "npm:^10.0.1" socks-proxy-agent: "npm:^8.0.3" - checksum: 10c0/efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271 + checksum: 10c0/325e0db7b287d4154ecd164c0815c08007abfb07653cc57bceded17bb7fd240998a3cbdbe87d700e30bef494885eccc725ab73b668020811d56623d145b524ae languageName: node linkType: hard @@ -3302,12 +3408,12 @@ __metadata: languageName: node linkType: hard -"@npmcli/fs@npm:^4.0.0": - version: 4.0.0 - resolution: "@npmcli/fs@npm:4.0.0" +"@npmcli/fs@npm:^3.1.0": + version: 3.1.1 + resolution: "@npmcli/fs@npm:3.1.1" dependencies: semver: "npm:^7.3.5" - checksum: 10c0/c90935d5ce670c87b6b14fab04a965a3b8137e585f8b2a6257263bd7f97756dd736cb165bb470e5156a9e718ecd99413dccc54b1138c1a46d6ec7cf325982fe5 + checksum: 10c0/c37a5b4842bfdece3d14dfdb054f73fe15ed2d3da61b34ff76629fb5b1731647c49166fd2a8bf8b56fcfa51200382385ea8909a3cbecdad612310c114d3f6c99 languageName: node linkType: hard @@ -3481,395 +3587,300 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/api-logs@npm:0.53.0": - version: 0.53.0 - resolution: "@opentelemetry/api-logs@npm:0.53.0" +"@opentelemetry/api-logs@npm:0.52.1": + version: 0.52.1 + resolution: "@opentelemetry/api-logs@npm:0.52.1" dependencies: "@opentelemetry/api": "npm:^1.0.0" - checksum: 10c0/969ad3bbb74e3de6fdfe8eb9b3ab86d3dc284ca7bffd0ca67eef64efd08c97a4305696afe0b7b03e5d356f15d0a1a67ac517e5fa7d1ddee6fdc249eef2209fcb - languageName: node - linkType: hard - -"@opentelemetry/api-logs@npm:0.56.0": - version: 0.56.0 - resolution: "@opentelemetry/api-logs@npm:0.56.0" - dependencies: - "@opentelemetry/api": "npm:^1.3.0" - checksum: 10c0/af78b5534fd8f93edc23811349c88acf9e7cc2c7d94f58a2b58f70016f97aaa80878096c46283fdb53fb7375df83f1a048ac8d5f52b3dc1c98a2184c3a5d50ff + checksum: 10c0/fddecb2211f987bf1a7f104594e58227655c887a6a22b41e9ead5ed925a4594b56186b38fca8e24db33058a924d8b54ddd6b315eca915c469f9653ce7813c31a languageName: node linkType: hard -"@opentelemetry/api@npm:^1.0.0, @opentelemetry/api@npm:^1.3.0, @opentelemetry/api@npm:^1.8, @opentelemetry/api@npm:^1.9.0": +"@opentelemetry/api@npm:^1.0.0, @opentelemetry/api@npm:^1.8, @opentelemetry/api@npm:^1.9.0": version: 1.9.0 resolution: "@opentelemetry/api@npm:1.9.0" checksum: 10c0/9aae2fe6e8a3a3eeb6c1fdef78e1939cf05a0f37f8a4fae4d6bf2e09eb1e06f966ece85805626e01ba5fab48072b94f19b835449e58b6d26720ee19a58298add languageName: node linkType: hard -"@opentelemetry/context-async-hooks@npm:^1.29.0": - version: 1.30.0 - resolution: "@opentelemetry/context-async-hooks@npm:1.30.0" +"@opentelemetry/context-async-hooks@npm:^1.25.1": + version: 1.26.0 + resolution: "@opentelemetry/context-async-hooks@npm:1.26.0" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10c0/46fef8f3af37227c16cf4e3d9264bfc7cfbe7357cb4266fa10ef32aa3256da6782110bea997d7a6b6815afb540da0a937fb5ecbaaed248c0234f8872bf25e8df + checksum: 10c0/76ed53be50a472cbfe26a62620cb2a34f031474d08d302d31eb95d71cac2ed1567c6fa302c7ac5498e9d467d7d8e64f8d0e58c5c8b7bd987a352baafe5d9b213 languageName: node linkType: hard -"@opentelemetry/core@npm:1.29.0": - version: 1.29.0 - resolution: "@opentelemetry/core@npm:1.29.0" +"@opentelemetry/core@npm:1.25.1": + version: 1.25.1 + resolution: "@opentelemetry/core@npm:1.25.1" dependencies: - "@opentelemetry/semantic-conventions": "npm:1.28.0" + "@opentelemetry/semantic-conventions": "npm:1.25.1" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10c0/393fa276262ecc0e7bd7db5f507a2118df0725afab0cea1cb071b8d0ec879c08d9d163a83bb13f77a6bd0ad0cb66094856eb19caf225da32d3b1767156105d26 + checksum: 10c0/37270396fe3546e454f5a6e8cab0e5777e49a8e4e56ef05644c4e458b3ba7c662f57ad1ba2dd936ddaef54cbe985abd7cee0d3e9188dfdc0e3b3d446c3484337 languageName: node linkType: hard -"@opentelemetry/core@npm:1.30.0, @opentelemetry/core@npm:^1.1.0, @opentelemetry/core@npm:^1.26.0, @opentelemetry/core@npm:^1.29.0, @opentelemetry/core@npm:^1.8.0": - version: 1.30.0 - resolution: "@opentelemetry/core@npm:1.30.0" +"@opentelemetry/core@npm:1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/core@npm:1.26.0" dependencies: - "@opentelemetry/semantic-conventions": "npm:1.28.0" + "@opentelemetry/semantic-conventions": "npm:1.27.0" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10c0/52d17b5ddb06ab4241b977ff89b81f69f140edb5c2a78b2188d95fa7bdfdd1aa2dcafb1e2830ab77d557876682ab8f08727ba8f165ea3c39fbb6bf3b86ef33c8 + checksum: 10c0/8038a3b9124a0b3b48dceb3949f88726c6853eac33b79fc049856f78dcf4b7ee453db1e6f4d5205a79b315caba809cb7d2f853946cf14773e50ce6a87fd5260e languageName: node linkType: hard -"@opentelemetry/instrumentation-amqplib@npm:^0.45.0": - version: 0.45.0 - resolution: "@opentelemetry/instrumentation-amqplib@npm:0.45.0" +"@opentelemetry/core@npm:1.29.0, @opentelemetry/core@npm:^1.1.0, @opentelemetry/core@npm:^1.25.1, @opentelemetry/core@npm:^1.8.0": + version: 1.29.0 + resolution: "@opentelemetry/core@npm:1.29.0" dependencies: - "@opentelemetry/core": "npm:^1.8.0" - "@opentelemetry/instrumentation": "npm:^0.56.0" - "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@opentelemetry/semantic-conventions": "npm:1.28.0" peerDependencies: - "@opentelemetry/api": ^1.3.0 - checksum: 10c0/8fc07b56a374c921f951cbe4cbbbeef1128e6e0d56ad18f170be34fb17a6ce712d5603899352511107df151cf54718b6300e2e2c5a69bbfcf5f667dda8c57ae3 + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10c0/393fa276262ecc0e7bd7db5f507a2118df0725afab0cea1cb071b8d0ec879c08d9d163a83bb13f77a6bd0ad0cb66094856eb19caf225da32d3b1767156105d26 languageName: node linkType: hard -"@opentelemetry/instrumentation-connect@npm:0.42.0": - version: 0.42.0 - resolution: "@opentelemetry/instrumentation-connect@npm:0.42.0" +"@opentelemetry/instrumentation-connect@npm:0.38.0": + version: 0.38.0 + resolution: "@opentelemetry/instrumentation-connect@npm:0.38.0" dependencies: "@opentelemetry/core": "npm:^1.8.0" - "@opentelemetry/instrumentation": "npm:^0.56.0" - "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@opentelemetry/instrumentation": "npm:^0.52.0" + "@opentelemetry/semantic-conventions": "npm:^1.22.0" "@types/connect": "npm:3.4.36" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/11e9b8132fd90035bc66096df1515b90e122a2a37d92727b2e78e45ee33835a7bc35e5557bc6a632e9909f522b95b2f385e6c2120363cef7f9223a65f293c9f0 + checksum: 10c0/90f24b838ea7530d9919d6ab2685f3a5ec4629f364efbbe57932c7abb5276560f3bc11bb0549e93385f419630151871677598421237b54e395c59ce2333a0ed6 languageName: node linkType: hard -"@opentelemetry/instrumentation-dataloader@npm:0.15.0": - version: 0.15.0 - resolution: "@opentelemetry/instrumentation-dataloader@npm:0.15.0" - dependencies: - "@opentelemetry/instrumentation": "npm:^0.56.0" - peerDependencies: - "@opentelemetry/api": ^1.3.0 - checksum: 10c0/98cf400a6eec02e238048b558430d346e19238ac0ba4d4d6299b287cd9f10a9efef8888e0b4f76e2e4fc31c2cbfca13db8e3df6d152ffd4d61d1c72fe497398b - languageName: node - linkType: hard - -"@opentelemetry/instrumentation-express@npm:0.46.0": - version: 0.46.0 - resolution: "@opentelemetry/instrumentation-express@npm:0.46.0" +"@opentelemetry/instrumentation-express@npm:0.41.1": + version: 0.41.1 + resolution: "@opentelemetry/instrumentation-express@npm:0.41.1" dependencies: "@opentelemetry/core": "npm:^1.8.0" - "@opentelemetry/instrumentation": "npm:^0.56.0" - "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@opentelemetry/instrumentation": "npm:^0.52.0" + "@opentelemetry/semantic-conventions": "npm:^1.22.0" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/a43820542a8bc6042e70e229f3658f85fdb2a9f9c207542b232380908065979b5eb6e67a3b7a32e962ac6b70a4a622f1d675d6fc3b88f59a66083ff995141c75 + checksum: 10c0/0f6c43c78c6e3f8102d80befcf4d658b1175b6b8d0036787c9cc7fd8f27ac0f118c0227402e819ad1d95f596d3cf18c5012a959c82686a5ad8c122d8c3c5913d languageName: node linkType: hard -"@opentelemetry/instrumentation-fastify@npm:0.43.0": - version: 0.43.0 - resolution: "@opentelemetry/instrumentation-fastify@npm:0.43.0" +"@opentelemetry/instrumentation-fastify@npm:0.38.0": + version: 0.38.0 + resolution: "@opentelemetry/instrumentation-fastify@npm:0.38.0" dependencies: "@opentelemetry/core": "npm:^1.8.0" - "@opentelemetry/instrumentation": "npm:^0.56.0" - "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@opentelemetry/instrumentation": "npm:^0.52.0" + "@opentelemetry/semantic-conventions": "npm:^1.22.0" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/cbe2dc023fe86cecb380145c4f2ac43baa7aa80b23da1601edc52ebbc1bf738268c2bed04b1e0dc1ead1464c9ae1b1f4fd05c9d303367d54c96e582ff9aa8ac0 + checksum: 10c0/e5fa6c14c5d17db55fb93de2aa181f6cc4c5f91bee7f985829d3622ed86793a6fd23e20b01555e16db06343dce32c858a67f12f9ff067ddc9b93bed446579b11 languageName: node linkType: hard -"@opentelemetry/instrumentation-fs@npm:0.18.0": - version: 0.18.0 - resolution: "@opentelemetry/instrumentation-fs@npm:0.18.0" +"@opentelemetry/instrumentation-fs@npm:0.14.0": + version: 0.14.0 + resolution: "@opentelemetry/instrumentation-fs@npm:0.14.0" dependencies: "@opentelemetry/core": "npm:^1.8.0" - "@opentelemetry/instrumentation": "npm:^0.56.0" + "@opentelemetry/instrumentation": "npm:^0.52.0" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/7ce75e3ddbc91086d0d1755962980096e7e5bdf31bd7350d9cc641494b1b5af04b9471873fbde6d426812267cd6d9a769f1d9af7615dc8a5b6b5ef2d1f05abeb + checksum: 10c0/440fd443855d1fd56daeda384d55f4136a7664fa4e09a9bf741eafaa205f6c76abf5fbfd2044552db456c1ecf8976be1fe094efc10d9e7299847671a5ea5ecb3 languageName: node linkType: hard -"@opentelemetry/instrumentation-generic-pool@npm:0.42.0": +"@opentelemetry/instrumentation-graphql@npm:0.42.0": version: 0.42.0 - resolution: "@opentelemetry/instrumentation-generic-pool@npm:0.42.0" - dependencies: - "@opentelemetry/instrumentation": "npm:^0.56.0" - peerDependencies: - "@opentelemetry/api": ^1.3.0 - checksum: 10c0/ff9ceba14acd80fb4a09269e10703e8a09109c2025d6eabf72d472fd72bbd17d2c5e96517c1afb2dd6caeb36451fb04d3b8622c9e5d1e9098462c31a1d2649cf - languageName: node - linkType: hard - -"@opentelemetry/instrumentation-graphql@npm:0.46.0": - version: 0.46.0 - resolution: "@opentelemetry/instrumentation-graphql@npm:0.46.0" + resolution: "@opentelemetry/instrumentation-graphql@npm:0.42.0" dependencies: - "@opentelemetry/instrumentation": "npm:^0.56.0" + "@opentelemetry/instrumentation": "npm:^0.52.0" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/d5b00b258a883bb0386905a298c8af6bfb3e67a24d53c1c994b396427e82cb075a86a25291477d08fca1a8ebc39d49bf85df3b4dbfc46b88c0fadf15d5de3794 + checksum: 10c0/b460a059725cab0c501b2e33057ef2ce1fcd40a0cb24d31efe368816c506c544fdc3bd5649a44b8ffa6747485005ec8855636b1d36a0f714f8be6f8fd6fcdc69 languageName: node linkType: hard -"@opentelemetry/instrumentation-hapi@npm:0.44.0": - version: 0.44.0 - resolution: "@opentelemetry/instrumentation-hapi@npm:0.44.0" +"@opentelemetry/instrumentation-hapi@npm:0.40.0": + version: 0.40.0 + resolution: "@opentelemetry/instrumentation-hapi@npm:0.40.0" dependencies: "@opentelemetry/core": "npm:^1.8.0" - "@opentelemetry/instrumentation": "npm:^0.56.0" - "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@opentelemetry/instrumentation": "npm:^0.52.0" + "@opentelemetry/semantic-conventions": "npm:^1.22.0" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/1832ce7c9a70e4a3119d476180d302e773f4e342ea54d14efd9ff8b5135d226b303ce219c8c58328b244cd4655e9ef7ffa26ca090ff947b93535605c11bf30b9 + checksum: 10c0/0f06c854900fda1872d6c9492f773543be6bc4ec9f55f42617a8a793c08d8cf46eb6e4f897df9070a7a344b0d660c583d4aca8df080c7ba60854cd5cbe32569b languageName: node linkType: hard -"@opentelemetry/instrumentation-http@npm:0.56.0": - version: 0.56.0 - resolution: "@opentelemetry/instrumentation-http@npm:0.56.0" +"@opentelemetry/instrumentation-http@npm:0.52.1": + version: 0.52.1 + resolution: "@opentelemetry/instrumentation-http@npm:0.52.1" dependencies: - "@opentelemetry/core": "npm:1.29.0" - "@opentelemetry/instrumentation": "npm:0.56.0" - "@opentelemetry/semantic-conventions": "npm:1.28.0" - forwarded-parse: "npm:2.1.2" + "@opentelemetry/core": "npm:1.25.1" + "@opentelemetry/instrumentation": "npm:0.52.1" + "@opentelemetry/semantic-conventions": "npm:1.25.1" semver: "npm:^7.5.2" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/b225252476ad049f888b45e03c4b2ce3ccb68e0b226049090eefa4e20b3859abfb84daede4562f75d2c3820a1351400ee996cf89e2665a91209e920d711f2e49 + checksum: 10c0/4309a99b0410e7ab1351efc26f93965e6df32a18fa529841442de016e32ba35b97f2621331b171e37e75cd4d386372edc7164ec2323fac9fd57fc0082aff55a7 languageName: node linkType: hard -"@opentelemetry/instrumentation-ioredis@npm:0.46.0": - version: 0.46.0 - resolution: "@opentelemetry/instrumentation-ioredis@npm:0.46.0" +"@opentelemetry/instrumentation-ioredis@npm:0.42.0": + version: 0.42.0 + resolution: "@opentelemetry/instrumentation-ioredis@npm:0.42.0" dependencies: - "@opentelemetry/instrumentation": "npm:^0.56.0" + "@opentelemetry/instrumentation": "npm:^0.52.0" "@opentelemetry/redis-common": "npm:^0.36.2" - "@opentelemetry/semantic-conventions": "npm:^1.27.0" - peerDependencies: - "@opentelemetry/api": ^1.3.0 - checksum: 10c0/fef7fa8cf3ea50306fbc2fcfa5fc8a3091889ee23c11c2e693bc84c27981c03bbc143e67ef30ac3b3458024a75720fa6814f71b96b72f1564300244670bf6ab1 - languageName: node - linkType: hard - -"@opentelemetry/instrumentation-kafkajs@npm:0.6.0": - version: 0.6.0 - resolution: "@opentelemetry/instrumentation-kafkajs@npm:0.6.0" - dependencies: - "@opentelemetry/instrumentation": "npm:^0.56.0" - "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@opentelemetry/semantic-conventions": "npm:^1.23.0" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/618fe24dbde123870872de6d6101ec4da946876eb0b9a821d9436aad6b7e3ef4c5f2c50ab17d30314da259653cedb58f3a42f354a9b9b53662d31695296d974e + checksum: 10c0/28fc079c87745f88e76a7427b7c82f1c621ee7b11863792b4767febffb853bdd0d8f7523cb190eded46f0bfec8e7434a3b179679ef994be9dd6580cd7ffa061b languageName: node linkType: hard -"@opentelemetry/instrumentation-knex@npm:0.43.0": - version: 0.43.0 - resolution: "@opentelemetry/instrumentation-knex@npm:0.43.0" - dependencies: - "@opentelemetry/instrumentation": "npm:^0.56.0" - "@opentelemetry/semantic-conventions": "npm:^1.27.0" - peerDependencies: - "@opentelemetry/api": ^1.3.0 - checksum: 10c0/a17170976827ca4c38150c36a5c2d668a143f67475527ea194dd38271867b0966f7f4a32f498e8266fc00396a6cf2a2fda91046d0c7f697a120cb43614c6177b - languageName: node - linkType: hard - -"@opentelemetry/instrumentation-koa@npm:0.46.0": - version: 0.46.0 - resolution: "@opentelemetry/instrumentation-koa@npm:0.46.0" +"@opentelemetry/instrumentation-koa@npm:0.42.0": + version: 0.42.0 + resolution: "@opentelemetry/instrumentation-koa@npm:0.42.0" dependencies: "@opentelemetry/core": "npm:^1.8.0" - "@opentelemetry/instrumentation": "npm:^0.56.0" - "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@opentelemetry/instrumentation": "npm:^0.52.0" + "@opentelemetry/semantic-conventions": "npm:^1.22.0" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/7024c737d89ca1c601c500b4d2848a63127428b065ca565886542f9e197f5737091464c4edb590dcb7e0f019c9763847bf2233259fcd99970e3da917dfedb913 + checksum: 10c0/f06fa6276c7aa990866c02ce6afb059cbfb0aca7d6340add397f361f1e5e892964d3d62a1a8e63d62d2732d64838d3ce14007343d061180e6879260a60e21643 languageName: node linkType: hard -"@opentelemetry/instrumentation-lru-memoizer@npm:0.43.0": - version: 0.43.0 - resolution: "@opentelemetry/instrumentation-lru-memoizer@npm:0.43.0" - dependencies: - "@opentelemetry/instrumentation": "npm:^0.56.0" - peerDependencies: - "@opentelemetry/api": ^1.3.0 - checksum: 10c0/296cefb85c6969189bfd72b046db416ea1aac552732ea37f3833611785d8bfd066319fd8a2dada16a34338bc69c9aa2375bc174d0924a0fbb2d6e0de67ab71bb - languageName: node - linkType: hard - -"@opentelemetry/instrumentation-mongodb@npm:0.50.0": - version: 0.50.0 - resolution: "@opentelemetry/instrumentation-mongodb@npm:0.50.0" +"@opentelemetry/instrumentation-mongodb@npm:0.46.0": + version: 0.46.0 + resolution: "@opentelemetry/instrumentation-mongodb@npm:0.46.0" dependencies: - "@opentelemetry/instrumentation": "npm:^0.56.0" - "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@opentelemetry/instrumentation": "npm:^0.52.0" + "@opentelemetry/sdk-metrics": "npm:^1.9.1" + "@opentelemetry/semantic-conventions": "npm:^1.22.0" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/68983bae9d428b5d34af46b4ed4e83d8864bae176ed528ab1a5d830bcb6267503dd6f00fd0ec88cd3e0d1023cb35b368cac3a3c51b36601fb1e9b419086b4918 + checksum: 10c0/7e2e86bda540f06e7360ff98fff63835b4389954d2dacc30a05794ee4f465ce870181241a57352c28bbbde195d2194b4898229a67026d9969b149162d06025a6 languageName: node linkType: hard -"@opentelemetry/instrumentation-mongoose@npm:0.45.0": - version: 0.45.0 - resolution: "@opentelemetry/instrumentation-mongoose@npm:0.45.0" +"@opentelemetry/instrumentation-mongoose@npm:0.40.0": + version: 0.40.0 + resolution: "@opentelemetry/instrumentation-mongoose@npm:0.40.0" dependencies: "@opentelemetry/core": "npm:^1.8.0" - "@opentelemetry/instrumentation": "npm:^0.56.0" - "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@opentelemetry/instrumentation": "npm:^0.52.0" + "@opentelemetry/semantic-conventions": "npm:^1.22.0" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/1f53b27c0a4cbecfd3d4f7e1d68e9e9bdfdbee4bddaca6a02766ce9aa558f13a4816f13dec01a49d46405fd513e0aaac105eb7d858248ebc76daace8ea5e5320 + checksum: 10c0/467357de25c0106fbbacbd6a27ef31ee402c00f70d1c5087f8396a908e5a95591b710da873e66f4fddd6c5614627f59143f61f8400fcd5c425724bd91d265810 languageName: node linkType: hard -"@opentelemetry/instrumentation-mysql2@npm:0.44.0": - version: 0.44.0 - resolution: "@opentelemetry/instrumentation-mysql2@npm:0.44.0" +"@opentelemetry/instrumentation-mysql2@npm:0.40.0": + version: 0.40.0 + resolution: "@opentelemetry/instrumentation-mysql2@npm:0.40.0" dependencies: - "@opentelemetry/instrumentation": "npm:^0.56.0" - "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@opentelemetry/instrumentation": "npm:^0.52.0" + "@opentelemetry/semantic-conventions": "npm:^1.22.0" "@opentelemetry/sql-common": "npm:^0.40.1" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/5a9685f0dc6143528d76e8e6aa8abf2be0bef334c098f9eed8c08df9a78e20c3a2faf97b274f4869f92932e96899c870e9aaf220eb1671a4ee19707f74d5ae0b + checksum: 10c0/dadc2bdbd40969385b77c8397a22bbd9c0fec8bf10942d393fc70bd6b2f17e6a85740103ef3a99a2c4892f151f172f547e98b777fcf6efa7b63e8cd7174cc6a6 languageName: node linkType: hard -"@opentelemetry/instrumentation-mysql@npm:0.44.0": - version: 0.44.0 - resolution: "@opentelemetry/instrumentation-mysql@npm:0.44.0" +"@opentelemetry/instrumentation-mysql@npm:0.40.0": + version: 0.40.0 + resolution: "@opentelemetry/instrumentation-mysql@npm:0.40.0" dependencies: - "@opentelemetry/instrumentation": "npm:^0.56.0" - "@opentelemetry/semantic-conventions": "npm:^1.27.0" - "@types/mysql": "npm:2.15.26" + "@opentelemetry/instrumentation": "npm:^0.52.0" + "@opentelemetry/semantic-conventions": "npm:^1.22.0" + "@types/mysql": "npm:2.15.22" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/2186a62b5e70e7d607024a72e1aa1235de9b2a53be9d85d7d1374a35f861a6eb3abc7c6be724763827045e3b38e302e1937e746df18e5e19e6bdb0c0ca392707 + checksum: 10c0/b73b2b4831a2a91570eea7791eeb17621d55387ff971d6950b7698e9e5b7e323ee1034bafc8e88d209cf5675c840a8547c17742742a702fc327eb5a8f7400feb languageName: node linkType: hard -"@opentelemetry/instrumentation-nestjs-core@npm:0.43.0": - version: 0.43.0 - resolution: "@opentelemetry/instrumentation-nestjs-core@npm:0.43.0" +"@opentelemetry/instrumentation-nestjs-core@npm:0.39.0": + version: 0.39.0 + resolution: "@opentelemetry/instrumentation-nestjs-core@npm:0.39.0" dependencies: - "@opentelemetry/instrumentation": "npm:^0.56.0" - "@opentelemetry/semantic-conventions": "npm:^1.27.0" + "@opentelemetry/instrumentation": "npm:^0.52.0" + "@opentelemetry/semantic-conventions": "npm:^1.23.0" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/b10c58ed76e43a1b115b18bec262e10638b1177b229fd0f8043533d1927b21ab3ffce5c1bafe59ec381ee8c4f8607c1199f835014e625423b9102231ea6580a1 + checksum: 10c0/1e4c8ba7c4cdd426f83499518c4950cf05c8837be01bcb129014a0e8ba1aa2a6bff12f13003058aaa64229e914b6d6e23bf50ff556f339f5e1fc5a6cf1726bd3 languageName: node linkType: hard -"@opentelemetry/instrumentation-pg@npm:0.49.0": - version: 0.49.0 - resolution: "@opentelemetry/instrumentation-pg@npm:0.49.0" +"@opentelemetry/instrumentation-pg@npm:0.43.0": + version: 0.43.0 + resolution: "@opentelemetry/instrumentation-pg@npm:0.43.0" dependencies: - "@opentelemetry/core": "npm:^1.26.0" - "@opentelemetry/instrumentation": "npm:^0.56.0" - "@opentelemetry/semantic-conventions": "npm:1.27.0" + "@opentelemetry/instrumentation": "npm:^0.52.0" + "@opentelemetry/semantic-conventions": "npm:^1.22.0" "@opentelemetry/sql-common": "npm:^0.40.1" "@types/pg": "npm:8.6.1" - "@types/pg-pool": "npm:2.0.6" + "@types/pg-pool": "npm:2.0.4" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/bc5c5ce44dc41f913cafef29e6d334182ef60a9ef8791fa2460f3c42c12dd269b3f2bf5ea0003f5153a4a87802751fcdda3e55f27ffb762a09f69af039206784 + checksum: 10c0/be69badfefced5878c77dfea2f165ebd1a2a2df28ec9a39e5cb35bfd38d1992f6c348f4f5976372b007b2884dd0730c4a5ba1477f8fc2ae2f0b21a041bc61678 languageName: node linkType: hard -"@opentelemetry/instrumentation-redis-4@npm:0.45.0": - version: 0.45.0 - resolution: "@opentelemetry/instrumentation-redis-4@npm:0.45.0" +"@opentelemetry/instrumentation-redis-4@npm:0.41.0": + version: 0.41.0 + resolution: "@opentelemetry/instrumentation-redis-4@npm:0.41.0" dependencies: - "@opentelemetry/instrumentation": "npm:^0.56.0" + "@opentelemetry/instrumentation": "npm:^0.52.0" "@opentelemetry/redis-common": "npm:^0.36.2" - "@opentelemetry/semantic-conventions": "npm:^1.27.0" - peerDependencies: - "@opentelemetry/api": ^1.3.0 - checksum: 10c0/7c16002b57c479526f5c4285a3d523f32e1085dbdbdc6af15acc04460f4bdf477536846f907291c55b65e1089e2d3a35b38b1ff71ce0644dbc89d12dc9b9aecd - languageName: node - linkType: hard - -"@opentelemetry/instrumentation-tedious@npm:0.17.0": - version: 0.17.0 - resolution: "@opentelemetry/instrumentation-tedious@npm:0.17.0" - dependencies: - "@opentelemetry/instrumentation": "npm:^0.56.0" - "@opentelemetry/semantic-conventions": "npm:^1.27.0" - "@types/tedious": "npm:^4.0.14" + "@opentelemetry/semantic-conventions": "npm:^1.22.0" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/8aedd18fbc28b4917239f84fb69bdec7548cd875f73fa269d255bfc31a2e7f546d5468953e0b47112843eb5ceff95503a6c158de2a6b060c7242a6f5765f91cf - languageName: node - linkType: hard - -"@opentelemetry/instrumentation-undici@npm:0.9.0": - version: 0.9.0 - resolution: "@opentelemetry/instrumentation-undici@npm:0.9.0" - dependencies: - "@opentelemetry/core": "npm:^1.8.0" - "@opentelemetry/instrumentation": "npm:^0.56.0" - peerDependencies: - "@opentelemetry/api": ^1.7.0 - checksum: 10c0/0c378e68e167b81ec34fa43dd5b10285a41c3c61cf6bb42102df483a09d386646eb2c3e5c6ea6b199a8bf2be6d16b1cb8b54854643e446c423afb795af1806cd + checksum: 10c0/fbf9a3d68c027746160cf3d8bcba61f1fae0e6aeb6ced56b53765bac9286a6f6a62be1bb14b92e7ed74fac5111bd78a8b66ae449dc386c6d3b01e7446ed118bc languageName: node linkType: hard -"@opentelemetry/instrumentation@npm:0.56.0, @opentelemetry/instrumentation@npm:^0.56.0": - version: 0.56.0 - resolution: "@opentelemetry/instrumentation@npm:0.56.0" +"@opentelemetry/instrumentation@npm:0.52.1, @opentelemetry/instrumentation@npm:^0.49 || ^0.50 || ^0.51 || ^0.52.0, @opentelemetry/instrumentation@npm:^0.52.0, @opentelemetry/instrumentation@npm:^0.52.1": + version: 0.52.1 + resolution: "@opentelemetry/instrumentation@npm:0.52.1" dependencies: - "@opentelemetry/api-logs": "npm:0.56.0" - "@types/shimmer": "npm:^1.2.0" + "@opentelemetry/api-logs": "npm:0.52.1" + "@types/shimmer": "npm:^1.0.2" import-in-the-middle: "npm:^1.8.1" require-in-the-middle: "npm:^7.1.1" semver: "npm:^7.5.2" shimmer: "npm:^1.2.1" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/31c79f2cfe832c42dd7892b248d474dc6fac134f3ff58faea746abf1b25a5127c4a8608296792bf8ed9c838a1eb0384bf2f51a5123f6569033e346733476e7c9 + checksum: 10c0/1d4946b470ac31358ba8d81a9f9653a1d705db96ffb8958fef873340c3d3c9699cfd8ff617c313ea8c6a8ece51aa7cf8af37d87a60813c31ed2207e5c14a33ba languageName: node linkType: hard -"@opentelemetry/instrumentation@npm:^0.49 || ^0.50 || ^0.51 || ^0.52.0 || ^0.53.0": - version: 0.53.0 - resolution: "@opentelemetry/instrumentation@npm:0.53.0" +"@opentelemetry/instrumentation@npm:^0.46.0": + version: 0.46.0 + resolution: "@opentelemetry/instrumentation@npm:0.46.0" dependencies: - "@opentelemetry/api-logs": "npm:0.53.0" - "@types/shimmer": "npm:^1.2.0" - import-in-the-middle: "npm:^1.8.1" + "@types/shimmer": "npm:^1.0.2" + import-in-the-middle: "npm:1.7.1" require-in-the-middle: "npm:^7.1.1" semver: "npm:^7.5.2" shimmer: "npm:^1.2.1" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10c0/943e289926812272cb77cda5e0a6b662bc6a92812b66420ceeca1c764f2e3a13364f6bbed7c9e84a17ad677474101ea3c598ef6a6cca982c35bfd24be6f6a25e + checksum: 10c0/6ab3dd88c248818f559d05bd4b79c011761555286bfd264c105c8aee169b8888dcfd754af1c33d8c982daab725819e29ebc3e8f54520f2f6599f92bb35635ee0 languageName: node linkType: hard @@ -3880,39 +3891,83 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/resources@npm:1.30.0, @opentelemetry/resources@npm:^1.29.0": - version: 1.30.0 - resolution: "@opentelemetry/resources@npm:1.30.0" +"@opentelemetry/resources@npm:1.26.0, @opentelemetry/resources@npm:^1.25.1": + version: 1.26.0 + resolution: "@opentelemetry/resources@npm:1.26.0" + dependencies: + "@opentelemetry/core": "npm:1.26.0" + "@opentelemetry/semantic-conventions": "npm:1.27.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10c0/62ffbf7edee8676055661cf608b32a52bfa46fedb1a88830b4d4d0faf6664edbcbf7922034d3690d11fe9ebef9d9f5ffcb05645e8c7b27c707bf57d5289617e9 + languageName: node + linkType: hard + +"@opentelemetry/resources@npm:1.29.0": + version: 1.29.0 + resolution: "@opentelemetry/resources@npm:1.29.0" dependencies: - "@opentelemetry/core": "npm:1.30.0" + "@opentelemetry/core": "npm:1.29.0" "@opentelemetry/semantic-conventions": "npm:1.28.0" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10c0/2b298193de85f8d7d05f9d71e5ea63189668f99248486246a4cfdc8667a5face205d650ef1ee6204a9f9c16d0b0e7704bb89a5d47537279c8e3378231ed35d1d + checksum: 10c0/10a91597b2ae92eeeeee9645c8147056b930739023bde4f18190317f7e8a05acd9e440b29d04be3580f7af4ffe5ff629d970264278f86574c429685f4804a006 languageName: node linkType: hard -"@opentelemetry/sdk-trace-base@npm:^1.22, @opentelemetry/sdk-trace-base@npm:^1.29.0": - version: 1.30.0 - resolution: "@opentelemetry/sdk-trace-base@npm:1.30.0" +"@opentelemetry/sdk-metrics@npm:^1.9.1": + version: 1.26.0 + resolution: "@opentelemetry/sdk-metrics@npm:1.26.0" dependencies: - "@opentelemetry/core": "npm:1.30.0" - "@opentelemetry/resources": "npm:1.30.0" + "@opentelemetry/core": "npm:1.26.0" + "@opentelemetry/resources": "npm:1.26.0" + peerDependencies: + "@opentelemetry/api": ">=1.3.0 <1.10.0" + checksum: 10c0/640a0dcfa4af73a029ef57b51f8ecc1d08dfb0c3a5242552876fab36c7f9ae7c410fa52dbc5202a2d8675fcfe61df3c49205079963f1c11acfe42981d1d01a76 + languageName: node + linkType: hard + +"@opentelemetry/sdk-trace-base@npm:^1.22": + version: 1.29.0 + resolution: "@opentelemetry/sdk-trace-base@npm:1.29.0" + dependencies: + "@opentelemetry/core": "npm:1.29.0" + "@opentelemetry/resources": "npm:1.29.0" "@opentelemetry/semantic-conventions": "npm:1.28.0" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10c0/3d8dcb0ec4e70405593421ea4df8b9a5e7faceea16cb900f30747eaeaa1f96059d40312ff2171208bb627deab6a6f32024681128cfba45af2671c6cfba528af1 + checksum: 10c0/870f29d3d72f4d6cbcaada328b544aa111527d72f0818f89bc5661b0427a37618db939cc65e834c8c73bad744665f9ac6dc0ec48276b113b5d4a0913c2b8fece + languageName: node + linkType: hard + +"@opentelemetry/sdk-trace-base@npm:^1.25.1": + version: 1.26.0 + resolution: "@opentelemetry/sdk-trace-base@npm:1.26.0" + dependencies: + "@opentelemetry/core": "npm:1.26.0" + "@opentelemetry/resources": "npm:1.26.0" + "@opentelemetry/semantic-conventions": "npm:1.27.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10c0/0d5fc19179375f1599edae91b7232f432faf8631746835a10d0cd0c4907d0ca3ed156cc8087d4e78efdfbd9ba5ba414cc9e1399172c2aa68d7e0cd5190394d87 + languageName: node + linkType: hard + +"@opentelemetry/semantic-conventions@npm:1.25.1": + version: 1.25.1 + resolution: "@opentelemetry/semantic-conventions@npm:1.25.1" + checksum: 10c0/fb1d6349e91f142c82931e89e0242215be8248e77919b6faa7e259757e499183546c9b4046de72b053b5222453bc74fff70280d2b4d1229484ba7b2c07f16a3a languageName: node linkType: hard -"@opentelemetry/semantic-conventions@npm:1.27.0": +"@opentelemetry/semantic-conventions@npm:1.27.0, @opentelemetry/semantic-conventions@npm:^1.17.0, @opentelemetry/semantic-conventions@npm:^1.22.0, @opentelemetry/semantic-conventions@npm:^1.23.0, @opentelemetry/semantic-conventions@npm:^1.25.1": version: 1.27.0 resolution: "@opentelemetry/semantic-conventions@npm:1.27.0" checksum: 10c0/b859773ba06b7e53dd9c6b45a171bf3000e405733adbf462ae91004ed011bc80edb5beecb817fb344a085adfd06045ab5b729c9bd0f1479650ad377134fb798c languageName: node linkType: hard -"@opentelemetry/semantic-conventions@npm:1.28.0, @opentelemetry/semantic-conventions@npm:^1.27.0, @opentelemetry/semantic-conventions@npm:^1.28.0": +"@opentelemetry/semantic-conventions@npm:1.28.0": version: 1.28.0 resolution: "@opentelemetry/semantic-conventions@npm:1.28.0" checksum: 10c0/deb8a0f744198071e70fea27143cf7c9f7ecb7e4d7b619488c917834ea09b31543c1c2bcea4ec5f3cf68797f0ef3549609c14e859013d9376400ac1499c2b9cb @@ -3944,21 +3999,14 @@ __metadata: languageName: node linkType: hard -"@prisma/instrumentation@npm:5.22.0": - version: 5.22.0 - resolution: "@prisma/instrumentation@npm:5.22.0" +"@prisma/instrumentation@npm:5.18.0": + version: 5.18.0 + resolution: "@prisma/instrumentation@npm:5.18.0" dependencies: "@opentelemetry/api": "npm:^1.8" - "@opentelemetry/instrumentation": "npm:^0.49 || ^0.50 || ^0.51 || ^0.52.0 || ^0.53.0" + "@opentelemetry/instrumentation": "npm:^0.49 || ^0.50 || ^0.51 || ^0.52.0" "@opentelemetry/sdk-trace-base": "npm:^1.22" - checksum: 10c0/2f8fafd996f6f774affd0f48c9112cba045bb7214b79e9108e355d854005a90587bdb5983bcdeea7f7886b29426a42ee1597012a5eb15fac8f7e437c5c430445 - languageName: node - linkType: hard - -"@rtsao/scc@npm:^1.1.0": - version: 1.1.0 - resolution: "@rtsao/scc@npm:1.1.0" - checksum: 10c0/b5bcfb0d87f7d1c1c7c0f7693f53b07866ed9fec4c34a97a8c948fb9a7c0082e416ce4d3b60beb4f5e167cbe04cdeefbf6771320f3ede059b9ce91188c409a5b + checksum: 10c0/84b294161b1d025e88cc5d15019113fd81832a4dfa785631a512f269c74d70819111fc23775357e551837e232ca1df1ae1be1025b2e0cf7d6fab2f492e6756de languageName: node linkType: hard @@ -3972,77 +4020,103 @@ __metadata: languageName: node linkType: hard -"@sentry/core@npm:8.47.0": - version: 8.47.0 - resolution: "@sentry/core@npm:8.47.0" - checksum: 10c0/64fc9c89e96f2989b63bd6e776afd09993ce59caca9d4003033a12ea2b938ba28b588a9d171462605467ebe18b75a465ca875faf10f69f00ef2cc5d7d05df43a +"@sentry/core@npm:8.27.0": + version: 8.27.0 + resolution: "@sentry/core@npm:8.27.0" + dependencies: + "@sentry/types": "npm:8.27.0" + "@sentry/utils": "npm:8.27.0" + checksum: 10c0/8f695b578d40db9f36e841fa072f310c1d28b3291a661ae1cd642c9d88feee72c5f7c023841b393dc341aa62ac6d8c6c04db432e53e6ebe6683ae184a0ff53a1 + languageName: node + linkType: hard + +"@sentry/core@npm:8.42.0": + version: 8.42.0 + resolution: "@sentry/core@npm:8.42.0" + checksum: 10c0/dae94cbb278f9e6db8b93ebe5d9f0b6285bb20f90da42a0a96f35d996132c0e66c92a00ca8a6d6920a9f54460780320b8d4b9afa670b147b12bd9ea64a435793 languageName: node linkType: hard "@sentry/node@npm:^8.26.0": - version: 8.47.0 - resolution: "@sentry/node@npm:8.47.0" + version: 8.27.0 + resolution: "@sentry/node@npm:8.27.0" dependencies: "@opentelemetry/api": "npm:^1.9.0" - "@opentelemetry/context-async-hooks": "npm:^1.29.0" - "@opentelemetry/core": "npm:^1.29.0" - "@opentelemetry/instrumentation": "npm:^0.56.0" - "@opentelemetry/instrumentation-amqplib": "npm:^0.45.0" - "@opentelemetry/instrumentation-connect": "npm:0.42.0" - "@opentelemetry/instrumentation-dataloader": "npm:0.15.0" - "@opentelemetry/instrumentation-express": "npm:0.46.0" - "@opentelemetry/instrumentation-fastify": "npm:0.43.0" - "@opentelemetry/instrumentation-fs": "npm:0.18.0" - "@opentelemetry/instrumentation-generic-pool": "npm:0.42.0" - "@opentelemetry/instrumentation-graphql": "npm:0.46.0" - "@opentelemetry/instrumentation-hapi": "npm:0.44.0" - "@opentelemetry/instrumentation-http": "npm:0.56.0" - "@opentelemetry/instrumentation-ioredis": "npm:0.46.0" - "@opentelemetry/instrumentation-kafkajs": "npm:0.6.0" - "@opentelemetry/instrumentation-knex": "npm:0.43.0" - "@opentelemetry/instrumentation-koa": "npm:0.46.0" - "@opentelemetry/instrumentation-lru-memoizer": "npm:0.43.0" - "@opentelemetry/instrumentation-mongodb": "npm:0.50.0" - "@opentelemetry/instrumentation-mongoose": "npm:0.45.0" - "@opentelemetry/instrumentation-mysql": "npm:0.44.0" - "@opentelemetry/instrumentation-mysql2": "npm:0.44.0" - "@opentelemetry/instrumentation-nestjs-core": "npm:0.43.0" - "@opentelemetry/instrumentation-pg": "npm:0.49.0" - "@opentelemetry/instrumentation-redis-4": "npm:0.45.0" - "@opentelemetry/instrumentation-tedious": "npm:0.17.0" - "@opentelemetry/instrumentation-undici": "npm:0.9.0" - "@opentelemetry/resources": "npm:^1.29.0" - "@opentelemetry/sdk-trace-base": "npm:^1.29.0" - "@opentelemetry/semantic-conventions": "npm:^1.28.0" - "@prisma/instrumentation": "npm:5.22.0" - "@sentry/core": "npm:8.47.0" - "@sentry/opentelemetry": "npm:8.47.0" - import-in-the-middle: "npm:^1.11.2" - checksum: 10c0/fdb73aed63fbadaf5c4c9778abc5e77a59888b0e1ff2b28c123a474fbbcc9c71756585f3deb148cee6f11a79eb39122622997c04c3f13b2a8ba266578f5baafa - languageName: node - linkType: hard - -"@sentry/opentelemetry@npm:8.47.0": - version: 8.47.0 - resolution: "@sentry/opentelemetry@npm:8.47.0" - dependencies: - "@sentry/core": "npm:8.47.0" + "@opentelemetry/context-async-hooks": "npm:^1.25.1" + "@opentelemetry/core": "npm:^1.25.1" + "@opentelemetry/instrumentation": "npm:^0.52.1" + "@opentelemetry/instrumentation-connect": "npm:0.38.0" + "@opentelemetry/instrumentation-express": "npm:0.41.1" + "@opentelemetry/instrumentation-fastify": "npm:0.38.0" + "@opentelemetry/instrumentation-fs": "npm:0.14.0" + "@opentelemetry/instrumentation-graphql": "npm:0.42.0" + "@opentelemetry/instrumentation-hapi": "npm:0.40.0" + "@opentelemetry/instrumentation-http": "npm:0.52.1" + "@opentelemetry/instrumentation-ioredis": "npm:0.42.0" + "@opentelemetry/instrumentation-koa": "npm:0.42.0" + "@opentelemetry/instrumentation-mongodb": "npm:0.46.0" + "@opentelemetry/instrumentation-mongoose": "npm:0.40.0" + "@opentelemetry/instrumentation-mysql": "npm:0.40.0" + "@opentelemetry/instrumentation-mysql2": "npm:0.40.0" + "@opentelemetry/instrumentation-nestjs-core": "npm:0.39.0" + "@opentelemetry/instrumentation-pg": "npm:0.43.0" + "@opentelemetry/instrumentation-redis-4": "npm:0.41.0" + "@opentelemetry/resources": "npm:^1.25.1" + "@opentelemetry/sdk-trace-base": "npm:^1.25.1" + "@opentelemetry/semantic-conventions": "npm:^1.25.1" + "@prisma/instrumentation": "npm:5.18.0" + "@sentry/core": "npm:8.27.0" + "@sentry/opentelemetry": "npm:8.27.0" + "@sentry/types": "npm:8.27.0" + "@sentry/utils": "npm:8.27.0" + import-in-the-middle: "npm:^1.11.0" + opentelemetry-instrumentation-fetch-node: "npm:1.2.3" + dependenciesMeta: + opentelemetry-instrumentation-fetch-node: + optional: true + checksum: 10c0/788e8090789ec2fc325fea25fc18245ae6998d01d80a435c769b273acc46342efd5047f32f2235e5c64a40bfb11d20860f49a72e937f141a4c513ecccdfa2c04 + languageName: node + linkType: hard + +"@sentry/opentelemetry@npm:8.27.0": + version: 8.27.0 + resolution: "@sentry/opentelemetry@npm:8.27.0" + dependencies: + "@sentry/core": "npm:8.27.0" + "@sentry/types": "npm:8.27.0" + "@sentry/utils": "npm:8.27.0" peerDependencies: "@opentelemetry/api": ^1.9.0 - "@opentelemetry/core": ^1.29.0 - "@opentelemetry/instrumentation": ^0.56.0 - "@opentelemetry/sdk-trace-base": ^1.29.0 - "@opentelemetry/semantic-conventions": ^1.28.0 - checksum: 10c0/7a3ab89a2c950c1d41d48a1801409512c8a4696b73d1d062f047e87f02a617c3cb19c75db1ec2524b54973eeaeaf4b68618821407a1981892301606d68c43b1c + "@opentelemetry/core": ^1.25.1 + "@opentelemetry/instrumentation": ^0.52.1 + "@opentelemetry/sdk-trace-base": ^1.25.1 + "@opentelemetry/semantic-conventions": ^1.25.1 + checksum: 10c0/06ebe2a15c981eedad6f4db26d94b5224ffac4b4fb49b7b539de10605bf4fa3623c63628ac71a45202442e0fea361e5b95b544c03e711838987504321baac058 + languageName: node + linkType: hard + +"@sentry/types@npm:8.27.0": + version: 8.27.0 + resolution: "@sentry/types@npm:8.27.0" + checksum: 10c0/f5cbd7772c4b1a52c645aa3b640c056841625789c71f3d0d935281a37000f02ce9520626f75945357a701d03bb1a4d9617306ea055239e37466b29e2b237b0bc languageName: node linkType: hard "@sentry/types@npm:^8.26.0": - version: 8.47.0 - resolution: "@sentry/types@npm:8.47.0" + version: 8.42.0 + resolution: "@sentry/types@npm:8.42.0" dependencies: - "@sentry/core": "npm:8.47.0" - checksum: 10c0/5287890cb5a038a5798f4ede132cefbf86598aa3b3e6ab3bbd3a4735e8e79fc13da6893057b88c96e4d396a4388356d672ad474d6047a575afe798cd1ebdbaad + "@sentry/core": "npm:8.42.0" + checksum: 10c0/41acdccfcebe88b137235142d77464708d9d3263f0187221926b7056ce51c883ab8a8b5b7da15f05d0aa5795022948b2fc470a07d010015428abe5b534bf086b + languageName: node + linkType: hard + +"@sentry/utils@npm:8.27.0": + version: 8.27.0 + resolution: "@sentry/utils@npm:8.27.0" + dependencies: + "@sentry/types": "npm:8.27.0" + checksum: 10c0/289daaa24fc1f086de5e1ecd9ba3c345daf41b0824892de86490ea9dcdd8df8bd3c8f5718d9613145cda4acb67a96a1d2f7c352d73d6972dcf5d8935f891f18f languageName: node linkType: hard @@ -4185,11 +4259,11 @@ __metadata: linkType: hard "@types/conventional-commits-parser@npm:^5.0.0": - version: 5.0.1 - resolution: "@types/conventional-commits-parser@npm:5.0.1" + version: 5.0.0 + resolution: "@types/conventional-commits-parser@npm:5.0.0" dependencies: "@types/node": "npm:*" - checksum: 10c0/4b7b561f195f779d07f973801a9f15d77cd58ceb67e817459688b11cc735288d30de050f445c91f4cd2c007fa86824e59a6e3cde602d150b828c4474f6e67be5 + checksum: 10c0/16c748ce01cb3b3ea5947950acd695569c0daa8da62cc7e0eb98b15c4d7f812f95c079fe2c853325509f8aa73cfd388390319ae4621c8dfb21eeacb63accdb25 languageName: node linkType: hard @@ -4207,7 +4281,7 @@ __metadata: languageName: node linkType: hard -"@types/eslint-scope@npm:^3.7.7": +"@types/eslint-scope@npm:^3.7.3": version: 3.7.7 resolution: "@types/eslint-scope@npm:3.7.7" dependencies: @@ -4227,50 +4301,33 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.6": +"@types/estree@npm:*": version: 1.0.6 resolution: "@types/estree@npm:1.0.6" checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a languageName: node linkType: hard -"@types/express-serve-static-core@npm:^4.17.33": - version: 4.19.6 - resolution: "@types/express-serve-static-core@npm:4.19.6" - dependencies: - "@types/node": "npm:*" - "@types/qs": "npm:*" - "@types/range-parser": "npm:*" - "@types/send": "npm:*" - checksum: 10c0/4281f4ead71723f376b3ddf64868ae26244d434d9906c101cf8d436d4b5c779d01bd046e4ea0ed1a394d3e402216fabfa22b1fa4dba501061cd7c81c54045983 +"@types/estree@npm:^1.0.5": + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d languageName: node linkType: hard -"@types/express-serve-static-core@npm:^5.0.0": - version: 5.0.2 - resolution: "@types/express-serve-static-core@npm:5.0.2" +"@types/express-serve-static-core@npm:^4.17.33": + version: 4.19.5 + resolution: "@types/express-serve-static-core@npm:4.19.5" dependencies: "@types/node": "npm:*" "@types/qs": "npm:*" "@types/range-parser": "npm:*" "@types/send": "npm:*" - checksum: 10c0/9f6ee50bd81f0aa6cc9df6ad2c2d221a3a63249da944db58ec8bb8681e77a5b3b3fdb1931bda73beb13cfaf9125731f835fe5256afb6a6da35b0eb08ccbdbfdf + checksum: 10c0/ba8d8d976ab797b2602c60e728802ff0c98a00f13d420d82770f3661b67fa36ea9d3be0b94f2ddd632afe1fbc6e41620008b01db7e4fabdd71a2beb5539b0725 languageName: node linkType: hard -"@types/express@npm:*": - version: 5.0.0 - resolution: "@types/express@npm:5.0.0" - dependencies: - "@types/body-parser": "npm:*" - "@types/express-serve-static-core": "npm:^5.0.0" - "@types/qs": "npm:*" - "@types/serve-static": "npm:*" - checksum: 10c0/0d74b53aefa69c3b3817ee9b5145fd50d7dbac52a8986afc2d7500085c446656d0b6dc13158c04e2d9f18f4324d4d93b0452337c5ff73dd086dca3e4ff11f47b - languageName: node - linkType: hard - -"@types/express@npm:^4.17.17, @types/express@npm:^4.17.21": +"@types/express@npm:*, @types/express@npm:^4.17.17, @types/express@npm:^4.17.21": version: 4.17.21 resolution: "@types/express@npm:4.17.21" dependencies: @@ -4419,39 +4476,39 @@ __metadata: languageName: node linkType: hard -"@types/mysql@npm:2.15.26": - version: 2.15.26 - resolution: "@types/mysql@npm:2.15.26" +"@types/mysql@npm:2.15.22": + version: 2.15.22 + resolution: "@types/mysql@npm:2.15.22" dependencies: "@types/node": "npm:*" - checksum: 10c0/3cf279e7db05d56c0544532a4380b9079f579092379a04c8138bd5cf88dda5b31208ac2d23ce7dbf4e3a3f43aaeed44e72f9f19f726518f308efe95a7435619a + checksum: 10c0/872e7389985c954e7bf507cbe8f62f33c779d28e456b711d18133eaf9636487d0521e7f2c32e22eae0aa71f2d1c6e10d6212fbace50f73ab0a803949cc71f2cc languageName: node linkType: hard "@types/node@npm:*, @types/node@npm:>= 8": - version: 22.10.2 - resolution: "@types/node@npm:22.10.2" + version: 22.5.1 + resolution: "@types/node@npm:22.5.1" dependencies: - undici-types: "npm:~6.20.0" - checksum: 10c0/2c7b71a040f1ef5320938eca8ebc946e6905caa9bbf3d5665d9b3774a8d15ea9fab1582b849a6d28c7fc80756a62c5666bc66b69f42f4d5dafd1ccb193cdb4ac + undici-types: "npm:~6.19.2" + checksum: 10c0/35373176d8a1d4e16004a1ed303e68d39e4c6341024dc056f2577982df98c1a045a6b677f12ed557796f09bbf7d621f428f6874cc37ed28f7b336fa604b5f6a6 languageName: node linkType: hard "@types/node@npm:^18.19.44": - version: 18.19.68 - resolution: "@types/node@npm:18.19.68" + version: 18.19.47 + resolution: "@types/node@npm:18.19.47" dependencies: undici-types: "npm:~5.26.4" - checksum: 10c0/8c7f01be218c6e3c1e643173662af27e9a2b568f36c0fe83e4295cf7674fe2a0abb4a1c5d7c7abd3345b9114581387dfd3f14b6d0338daebdce9273cd7ba59ab + checksum: 10c0/ad476b633f216db2138bfd37723ebd24622c687f9513c266d151619c64ccf38c7f397d1d4b2f1212259ec8de372123f8117fdc03f089e0d76c33c0c31f3a97f9 languageName: node linkType: hard "@types/nodemailer@npm:^6.4.15": - version: 6.4.17 - resolution: "@types/nodemailer@npm:6.4.17" + version: 6.4.15 + resolution: "@types/nodemailer@npm:6.4.15" dependencies: "@types/node": "npm:*" - checksum: 10c0/689abb3005cf36cf89c2abe56f0aa4469a37e0814633a73fbeb35732e856f4b0d7ab32b6d91585038b6941f5b70db58ec2bd147ebe9f73e528eb6c99604f4e82 + checksum: 10c0/553e613fe08fd663bff1fb3647a8ebbcc4ca297a6249296a43f3c92499158acad5955689be2096ff3fe72f145e80d749c1fc66d5549fe665d7ceb6d0946f2a26 languageName: node linkType: hard @@ -4463,11 +4520,11 @@ __metadata: linkType: hard "@types/oauth@npm:*": - version: 0.9.6 - resolution: "@types/oauth@npm:0.9.6" + version: 0.9.5 + resolution: "@types/oauth@npm:0.9.5" dependencies: "@types/node": "npm:*" - checksum: 10c0/2f3e4ee1059fd28fc2cb6dd9d0973365a0630ea1fa305ac5455ea9666220b73d8ac42e5bee42367a0f12a1041ef103a16c55bf7803d0a82898319c3e32095b4a + checksum: 10c0/af42f19125e46fc0e9063e5560095aca5445895399c5073a6a28335d4b658dbed4975b470673cb61edf1a5eb79ba245a1f1d53f70a3e51645cfbbd93900cfbdd languageName: node linkType: hard @@ -4547,31 +4604,31 @@ __metadata: linkType: hard "@types/passport@npm:*": - version: 1.0.17 - resolution: "@types/passport@npm:1.0.17" + version: 1.0.16 + resolution: "@types/passport@npm:1.0.16" dependencies: "@types/express": "npm:*" - checksum: 10c0/09039429a9178117a80880c4e7d437abc83216eac5e0c97bc6f14a03a59193386cff484931dc880693f8b13a512c366ef7a51ecd8cc1a63f17366be68161f633 + checksum: 10c0/7120c1186c8c67e3818683b5b6a4439d102f67da93cc1c7d8f32484f7bf10e8438dd5de0bf571910b23d06caa43dd1ad501933b48618bfaf54e63219500993fe languageName: node linkType: hard -"@types/pg-pool@npm:2.0.6": - version: 2.0.6 - resolution: "@types/pg-pool@npm:2.0.6" +"@types/pg-pool@npm:2.0.4": + version: 2.0.4 + resolution: "@types/pg-pool@npm:2.0.4" dependencies: "@types/pg": "npm:*" - checksum: 10c0/41965d4d0b677c54ce45d36add760e496d356b78019cb062d124af40287cf6b0fd4d86e3b0085f443856c185983a60c8b0795ff76d15683e2a93c62f5ac0125f + checksum: 10c0/1c6b83e1c33c66e6b1ee11332ecf74ad393ba2a3966d5ee7ffaa40ddfe1f3cb4df224263515967d39101fa13b10c1f70da45795ca6eaeeea7d8e9edeeb58093f languageName: node linkType: hard "@types/pg@npm:*": - version: 8.11.10 - resolution: "@types/pg@npm:8.11.10" + version: 8.11.8 + resolution: "@types/pg@npm:8.11.8" dependencies: "@types/node": "npm:*" pg-protocol: "npm:*" pg-types: "npm:^4.0.1" - checksum: 10c0/c8800d0ab2c6424308e6c6b40c73f19583ee1aed758462bd07694844b0a551b5841442205a4ee05207b80109ba502f33f20241b1bd9b4902e713611fb9e08f6c + checksum: 10c0/040eb04edda338a13dccee47585b4479549fd54561e1bc3768690545adb8708a089b178e04fab9241935d7bad361314fc57af3ad87b391cfb9dc0895dd049763 languageName: node linkType: hard @@ -4601,9 +4658,9 @@ __metadata: linkType: hard "@types/qs@npm:*": - version: 6.9.17 - resolution: "@types/qs@npm:6.9.17" - checksum: 10c0/a183fa0b3464267f8f421e2d66d960815080e8aab12b9aadab60479ba84183b1cdba8f4eff3c06f76675a8e42fe6a3b1313ea76c74f2885c3e25d32499c17d1b + version: 6.9.15 + resolution: "@types/qs@npm:6.9.15" + checksum: 10c0/49c5ff75ca3adb18a1939310042d273c9fc55920861bd8e5100c8a923b3cda90d759e1a95e18334092da1c8f7b820084687770c83a1ccef04fb2c6908117c823 languageName: node linkType: hard @@ -4642,7 +4699,7 @@ __metadata: languageName: node linkType: hard -"@types/shimmer@npm:^1.2.0": +"@types/shimmer@npm:^1.0.2": version: 1.2.0 resolution: "@types/shimmer@npm:1.2.0" checksum: 10c0/6f7bfe1b55601cfc3ae713fc74a03341f3834253b8b91cb2add926d5949e4a63f7e666f59c2a6e40a883a5f9e2f3e3af10f9d3aed9b60fced0bda87659e58d8d @@ -4677,19 +4734,10 @@ __metadata: languageName: node linkType: hard -"@types/tedious@npm:^4.0.14": - version: 4.0.14 - resolution: "@types/tedious@npm:4.0.14" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/d2914f8e9b5b998e4275ec5f0130cba1c2fb47e75616b5c125a65ef6c1db2f1dc3f978c7900693856a15d72bbb4f4e94f805537a4ecb6dc126c64415d31c0590 - languageName: node - linkType: hard - "@types/validator@npm:^13.11.8": - version: 13.12.2 - resolution: "@types/validator@npm:13.12.2" - checksum: 10c0/64f1326c768947d756ab5bcd73f3f11a6f07dc76292aea83890d0390a9b9acb374f8df6b24af2c783271f276d3d613b78fc79491fe87edee62108d54be2e3c31 + version: 13.12.1 + resolution: "@types/validator@npm:13.12.1" + checksum: 10c0/473b12e287f569e08741c24d4d91663e740ec6264032eeb311c21c8f00dfa274c6fe5af9190ffe1b4b527e95a1bb31c81598682d5dbd76e1604f898bc19adc2b languageName: node linkType: hard @@ -5002,13 +5050,23 @@ __metadata: linkType: hard "@ungap/structured-clone@npm:^1.2.0": - version: 1.2.1 - resolution: "@ungap/structured-clone@npm:1.2.1" - checksum: 10c0/127afbcc75ff1532f7b1eb85ee992f9faa70e8d5bb2558da05355d423b966fc279d0a485bf19da2883280e7c299ae4170809a72e78eab086da71c6bcdda5d1e2 + version: 1.2.0 + resolution: "@ungap/structured-clone@npm:1.2.0" + checksum: 10c0/8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.14.1": +"@webassemblyjs/ast@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/ast@npm:1.12.1" + dependencies: + "@webassemblyjs/helper-numbers": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + checksum: 10c0/ba7f2b96c6e67e249df6156d02c69eb5f1bd18d5005303cdc42accb053bebbbde673826e54db0437c9748e97abd218366a1d13fa46859b23cde611b6b409998c + languageName: node + linkType: hard + +"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.12.1": version: 1.14.1 resolution: "@webassemblyjs/ast@npm:1.14.1" dependencies: @@ -5018,6 +5076,13 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" + checksum: 10c0/37fe26f89e18e4ca0e7d89cfe3b9f17cfa327d7daf906ae01400416dbb2e33c8a125b4dc55ad7ff405e5fcfb6cf0d764074c9bc532b9a31a71e762be57d2ea0a + languageName: node + linkType: hard + "@webassemblyjs/floating-point-hex-parser@npm:1.13.2": version: 1.13.2 resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.13.2" @@ -5025,6 +5090,13 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/helper-api-error@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" + checksum: 10c0/a681ed51863e4ff18cf38d223429f414894e5f7496856854d9a886eeddcee32d7c9f66290f2919c9bb6d2fc2b2fae3f989b6a1e02a81e829359738ea0c4d371a + languageName: node + linkType: hard + "@webassemblyjs/helper-api-error@npm:1.13.2": version: 1.13.2 resolution: "@webassemblyjs/helper-api-error@npm:1.13.2" @@ -5032,10 +5104,21 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-buffer@npm:1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.14.1" - checksum: 10c0/0d54105dc373c0fe6287f1091e41e3a02e36cdc05e8cf8533cdc16c59ff05a646355415893449d3768cda588af451c274f13263300a251dc11a575bc4c9bd210 +"@webassemblyjs/helper-buffer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" + checksum: 10c0/0270724afb4601237410f7fd845ab58ccda1d5456a8783aadfb16eaaf3f2c9610c28e4a5bcb6ad880cde5183c82f7f116d5ccfc2310502439d33f14b6888b48a + languageName: node + linkType: hard + +"@webassemblyjs/helper-numbers@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" + dependencies: + "@webassemblyjs/floating-point-hex-parser": "npm:1.11.6" + "@webassemblyjs/helper-api-error": "npm:1.11.6" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/c7d5afc0ff3bd748339b466d8d2f27b908208bf3ff26b2e8e72c39814479d486e0dca6f3d4d776fd9027c1efe05b5c0716c57a23041eb34473892b2731c33af3 languageName: node linkType: hard @@ -5050,6 +5133,13 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" + checksum: 10c0/79d2bebdd11383d142745efa32781249745213af8e022651847382685ca76709f83e1d97adc5f0d3c2b8546bf02864f8b43a531fdf5ca0748cb9e4e0ef2acaa5 + languageName: node + linkType: hard + "@webassemblyjs/helper-wasm-bytecode@npm:1.13.2": version: 1.13.2 resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.13.2" @@ -5057,15 +5147,24 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.14.1" +"@webassemblyjs/helper-wasm-section@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.12.1" dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@webassemblyjs/helper-buffer": "npm:1.14.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" - "@webassemblyjs/wasm-gen": "npm:1.14.1" - checksum: 10c0/1f9b33731c3c6dbac3a9c483269562fa00d1b6a4e7133217f40e83e975e636fd0f8736e53abd9a47b06b66082ecc976c7384391ab0a68e12d509ea4e4b948d64 + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-buffer": "npm:1.12.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/wasm-gen": "npm:1.12.1" + checksum: 10c0/0546350724d285ae3c26e6fc444be4c3b5fb824f3be0ec8ceb474179dc3f4430336dd2e36a44b3e3a1a6815960e5eec98cd9b3a8ec66dc53d86daedd3296a6a2 + languageName: node + linkType: hard + +"@webassemblyjs/ieee754@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/ieee754@npm:1.11.6" + dependencies: + "@xtuc/ieee754": "npm:^1.2.0" + checksum: 10c0/59de0365da450322c958deadade5ec2d300c70f75e17ae55de3c9ce564deff5b429e757d107c7ec69bd0ba169c6b6cc2ff66293ab7264a7053c829b50ffa732f languageName: node linkType: hard @@ -5078,6 +5177,15 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/leb128@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/leb128@npm:1.11.6" + dependencies: + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/cb344fc04f1968209804de4da018679c5d4708a03b472a33e0fa75657bb024978f570d3ccf9263b7f341f77ecaa75d0e051b9cd4b7bb17a339032cfd1c37f96e + languageName: node + linkType: hard + "@webassemblyjs/leb128@npm:1.13.2": version: 1.13.2 resolution: "@webassemblyjs/leb128@npm:1.13.2" @@ -5087,6 +5195,13 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/utf8@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/utf8@npm:1.11.6" + checksum: 10c0/14d6c24751a89ad9d801180b0d770f30a853c39f035a15fbc96266d6ac46355227abd27a3fd2eeaa97b4294ced2440a6b012750ae17bafe1a7633029a87b6bee + languageName: node + linkType: hard + "@webassemblyjs/utf8@npm:1.13.2": version: 1.13.2 resolution: "@webassemblyjs/utf8@npm:1.13.2" @@ -5094,48 +5209,62 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-edit@npm:^1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/wasm-edit@npm:1.14.1" +"@webassemblyjs/wasm-edit@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@webassemblyjs/helper-buffer": "npm:1.14.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" - "@webassemblyjs/helper-wasm-section": "npm:1.14.1" - "@webassemblyjs/wasm-gen": "npm:1.14.1" - "@webassemblyjs/wasm-opt": "npm:1.14.1" - "@webassemblyjs/wasm-parser": "npm:1.14.1" - "@webassemblyjs/wast-printer": "npm:1.14.1" - checksum: 10c0/5ac4781086a2ca4b320bdbfd965a209655fe8a208ca38d89197148f8597e587c9a2c94fb6bd6f1a7dbd4527c49c6844fcdc2af981f8d793a97bf63a016aa86d2 + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-buffer": "npm:1.12.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/helper-wasm-section": "npm:1.12.1" + "@webassemblyjs/wasm-gen": "npm:1.12.1" + "@webassemblyjs/wasm-opt": "npm:1.12.1" + "@webassemblyjs/wasm-parser": "npm:1.12.1" + "@webassemblyjs/wast-printer": "npm:1.12.1" + checksum: 10c0/972f5e6c522890743999e0ed45260aae728098801c6128856b310dd21f1ee63435fc7b518e30e0ba1cdafd0d1e38275829c1e4451c3536a1d9e726e07a5bba0b languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/wasm-gen@npm:1.14.1" +"@webassemblyjs/wasm-gen@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.12.1" dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" - "@webassemblyjs/ieee754": "npm:1.13.2" - "@webassemblyjs/leb128": "npm:1.13.2" - "@webassemblyjs/utf8": "npm:1.13.2" - checksum: 10c0/d678810d7f3f8fecb2e2bdadfb9afad2ec1d2bc79f59e4711ab49c81cec578371e22732d4966f59067abe5fba8e9c54923b57060a729d28d408e608beef67b10 + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/ieee754": "npm:1.11.6" + "@webassemblyjs/leb128": "npm:1.11.6" + "@webassemblyjs/utf8": "npm:1.11.6" + checksum: 10c0/1e257288177af9fa34c69cab94f4d9036ebed611f77f3897c988874e75182eeeec759c79b89a7a49dd24624fc2d3d48d5580b62b67c4a1c9bfbdcd266b281c16 languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/wasm-opt@npm:1.14.1" +"@webassemblyjs/wasm-opt@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.12.1" dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@webassemblyjs/helper-buffer": "npm:1.14.1" - "@webassemblyjs/wasm-gen": "npm:1.14.1" - "@webassemblyjs/wasm-parser": "npm:1.14.1" - checksum: 10c0/515bfb15277ee99ba6b11d2232ddbf22aed32aad6d0956fe8a0a0a004a1b5a3a277a71d9a3a38365d0538ac40d1b7b7243b1a244ad6cd6dece1c1bb2eb5de7ee + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-buffer": "npm:1.12.1" + "@webassemblyjs/wasm-gen": "npm:1.12.1" + "@webassemblyjs/wasm-parser": "npm:1.12.1" + checksum: 10c0/992a45e1f1871033c36987459436ab4e6430642ca49328e6e32a13de9106fe69ae6c0ac27d7050efd76851e502d11cd1ac0e06b55655dfa889ad82f11a2712fb languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.14.1, @webassemblyjs/wasm-parser@npm:^1.14.1": +"@webassemblyjs/wasm-parser@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-api-error": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/ieee754": "npm:1.11.6" + "@webassemblyjs/leb128": "npm:1.11.6" + "@webassemblyjs/utf8": "npm:1.11.6" + checksum: 10c0/e85cec1acad07e5eb65b92d37c8e6ca09c6ca50d7ca58803a1532b452c7321050a0328c49810c337cc2dfd100c5326a54d5ebd1aa5c339ebe6ef10c250323a0e + languageName: node + linkType: hard + +"@webassemblyjs/wasm-parser@npm:^1.12.1": version: 1.14.1 resolution: "@webassemblyjs/wasm-parser@npm:1.14.1" dependencies: @@ -5149,13 +5278,13 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/wast-printer@npm:1.14.1" +"@webassemblyjs/wast-printer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wast-printer@npm:1.12.1" dependencies: - "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/ast": "npm:1.12.1" "@xtuc/long": "npm:4.2.2" - checksum: 10c0/8d7768608996a052545251e896eac079c98e0401842af8dd4de78fba8d90bd505efb6c537e909cd6dae96e09db3fa2e765a6f26492553a675da56e2db51f9d24 + checksum: 10c0/39bf746eb7a79aa69953f194943bbc43bebae98bd7cadd4d8bc8c0df470ca6bf9d2b789effaa180e900fab4e2691983c1f7d41571458bd2a26267f2f0c73705a languageName: node linkType: hard @@ -5260,6 +5389,15 @@ __metadata: languageName: node linkType: hard +"acorn-import-assertions@npm:^1.9.0": + version: 1.9.0 + resolution: "acorn-import-assertions@npm:1.9.0" + peerDependencies: + acorn: ^8 + checksum: 10c0/3b4a194e128efdc9b86c2b1544f623aba4c1aa70d638f8ab7dc3971a5b4aa4c57bd62f99af6e5325bb5973c55863b4112e708a6f408bad7a138647ca72283afe + languageName: node + linkType: hard + "acorn-import-attributes@npm:^1.9.5": version: 1.9.5 resolution: "acorn-import-attributes@npm:1.9.5" @@ -5286,11 +5424,11 @@ __metadata: linkType: hard "acorn-walk@npm:^8.1.1": - version: 8.3.4 - resolution: "acorn-walk@npm:8.3.4" + version: 8.3.3 + resolution: "acorn-walk@npm:8.3.3" dependencies: acorn: "npm:^8.11.0" - checksum: 10c0/76537ac5fb2c37a64560feaf3342023dadc086c46da57da363e64c6148dc21b57d49ace26f949e225063acb6fb441eabffd89f7a3066de5ad37ab3e328927c62 + checksum: 10c0/4a9e24313e6a0a7b389e712ba69b66b455b4cb25988903506a8d247e7b126f02060b05a8a5b738a9284214e4ca95f383dd93443a4ba84f1af9b528305c7f243b languageName: node linkType: hard @@ -5303,7 +5441,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.8.2, acorn@npm:^8.9.0": +"acorn@npm:^8.11.0, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.8.2, acorn@npm:^8.9.0": version: 8.14.0 resolution: "acorn@npm:8.14.0" bin: @@ -5312,6 +5450,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.12.0, acorn@npm:^8.7.1": + version: 8.12.1 + resolution: "acorn@npm:8.12.1" + bin: + acorn: bin/acorn + checksum: 10c0/51fb26cd678f914e13287e886da2d7021f8c2bc0ccc95e03d3e0447ee278dd3b40b9c57dc222acd5881adcf26f3edc40901a4953403232129e3876793cd17386 + languageName: node + linkType: hard + "add-stream@npm:^1.0.0": version: 1.0.0 resolution: "add-stream@npm:1.0.0" @@ -5337,10 +5484,12 @@ __metadata: languageName: node linkType: hard -"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": - version: 7.1.3 - resolution: "agent-base@npm:7.1.3" - checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11 +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": + version: 7.1.1 + resolution: "agent-base@npm:7.1.1" + dependencies: + debug: "npm:^4.3.4" + checksum: 10c0/e59ce7bed9c63bf071a30cc471f2933862044c97fd9958967bfe22521d7a0f601ce4ed5a8c011799d0c726ca70312142ae193bbebb60f576b52be19d4a363b50 languageName: node linkType: hard @@ -5381,7 +5530,7 @@ __metadata: languageName: node linkType: hard -"ajv-formats@npm:2.1.1, ajv-formats@npm:^2.1.1": +"ajv-formats@npm:2.1.1": version: 2.1.1 resolution: "ajv-formats@npm:2.1.1" dependencies: @@ -5404,17 +5553,6 @@ __metadata: languageName: node linkType: hard -"ajv-keywords@npm:^5.1.0": - version: 5.1.0 - resolution: "ajv-keywords@npm:5.1.0" - dependencies: - fast-deep-equal: "npm:^3.1.3" - peerDependencies: - ajv: ^8.8.2 - checksum: 10c0/18bec51f0171b83123ba1d8883c126e60c6f420cef885250898bf77a8d3e65e3bfb9e8564f497e30bdbe762a83e0d144a36931328616a973ee669dc74d4a9590 - languageName: node - linkType: hard - "ajv@npm:8.12.0, ajv@npm:~8.12.0": version: 8.12.0 resolution: "ajv@npm:8.12.0" @@ -5439,7 +5577,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.0.0, ajv@npm:^8.1.0, ajv@npm:^8.11.0, ajv@npm:^8.9.0": +"ajv@npm:^8.0.0, ajv@npm:^8.1.0, ajv@npm:^8.11.0": version: 8.17.1 resolution: "ajv@npm:8.17.1" dependencies: @@ -5513,9 +5651,9 @@ __metadata: linkType: hard "ansi-regex@npm:^6.0.1": - version: 6.1.0 - resolution: "ansi-regex@npm:6.1.0" - checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc + version: 6.0.1 + resolution: "ansi-regex@npm:6.0.1" + checksum: 10c0/cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 languageName: node linkType: hard @@ -5691,13 +5829,13 @@ __metadata: languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2": - version: 1.0.2 - resolution: "array-buffer-byte-length@npm:1.0.2" +"array-buffer-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "array-buffer-byte-length@npm:1.0.1" dependencies: - call-bound: "npm:^1.0.3" - is-array-buffer: "npm:^3.0.5" - checksum: 10c0/74e1d2d996941c7a1badda9cabb7caab8c449db9086407cad8a1b71d2604cc8abf105db8ca4e02c04579ec58b7be40279ddb09aea4784832984485499f48432d + call-bind: "npm:^1.0.5" + is-array-buffer: "npm:^3.0.4" + checksum: 10c0/f5cdf54527cd18a3d2852ddf73df79efec03829e7373a8322ef5df2b4ef546fb365c19c71d6b42d641cb6bfe0f1a2f19bc0ece5b533295f86d7c3d522f228917 languageName: node linkType: hard @@ -5729,7 +5867,7 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.8": +"array-includes@npm:^3.1.7": version: 3.1.8 resolution: "array-includes@npm:3.1.8" dependencies: @@ -5780,7 +5918,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.findlastindex@npm:^1.2.5": +"array.prototype.findlastindex@npm:^1.2.3": version: 1.2.5 resolution: "array.prototype.findlastindex@npm:1.2.5" dependencies: @@ -5795,26 +5933,26 @@ __metadata: linkType: hard "array.prototype.flat@npm:^1.3.2": - version: 1.3.3 - resolution: "array.prototype.flat@npm:1.3.3" + version: 1.3.2 + resolution: "array.prototype.flat@npm:1.3.2" dependencies: - call-bind: "npm:^1.0.8" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.5" - es-shim-unscopables: "npm:^1.0.2" - checksum: 10c0/d90e04dfbc43bb96b3d2248576753d1fb2298d2d972e29ca7ad5ec621f0d9e16ff8074dae647eac4f31f4fb7d3f561a7ac005fb01a71f51705a13b5af06a7d8a + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/a578ed836a786efbb6c2db0899ae80781b476200617f65a44846cb1ed8bd8b24c8821b83703375d8af639c689497b7b07277060024b9919db94ac3e10dc8a49b languageName: node linkType: hard "array.prototype.flatmap@npm:^1.3.2": - version: 1.3.3 - resolution: "array.prototype.flatmap@npm:1.3.3" + version: 1.3.2 + resolution: "array.prototype.flatmap@npm:1.3.2" dependencies: - call-bind: "npm:^1.0.8" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.5" - es-shim-unscopables: "npm:^1.0.2" - checksum: 10c0/ba899ea22b9dc9bf276e773e98ac84638ed5e0236de06f13d63a90b18ca9e0ec7c97d622d899796e3773930b946cd2413d098656c0c5d8cc58c6f25c21e6bd54 + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/67b3f1d602bb73713265145853128b1ad77cc0f9b833c7e1e056b323fbeac41a4ff1c9c99c7b9445903caea924d9ca2450578d9011913191aa88cc3c3a4b54f4 languageName: node linkType: hard @@ -5833,18 +5971,19 @@ __metadata: languageName: node linkType: hard -"arraybuffer.prototype.slice@npm:^1.0.4": - version: 1.0.4 - resolution: "arraybuffer.prototype.slice@npm:1.0.4" +"arraybuffer.prototype.slice@npm:^1.0.3": + version: 1.0.3 + resolution: "arraybuffer.prototype.slice@npm:1.0.3" dependencies: array-buffer-byte-length: "npm:^1.0.1" - call-bind: "npm:^1.0.8" + call-bind: "npm:^1.0.5" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.5" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.6" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.3" is-array-buffer: "npm:^3.0.4" - checksum: 10c0/2f2459caa06ae0f7f615003f9104b01f6435cc803e11bd2a655107d52a1781dc040532dc44d93026b694cc18793993246237423e13a5337e86b43ed604932c06 + is-shared-array-buffer: "npm:^1.0.2" + checksum: 10c0/d32754045bcb2294ade881d45140a5e52bda2321b9e98fa514797b7f0d252c4c5ab0d1edb34112652c62fa6a9398def568da63a4d7544672229afea283358c36 languageName: node linkType: hard @@ -5872,9 +6011,9 @@ __metadata: linkType: hard "assert-never@npm:^1.2.1": - version: 1.4.0 - resolution: "assert-never@npm:1.4.0" - checksum: 10c0/494db08b89fb43d6231c9b4c48da22824f1912d88992bf0268e43b3dad0f64bd56d380addbb997d2dea7d859421d5e2904e8bd01243794f2bb5bfbc8d32d1fc6 + version: 1.3.0 + resolution: "assert-never@npm:1.3.0" + checksum: 10c0/5dbd4fb93bca5c5639c04b5216feebe00e44005b2967e35490cb3154b0ffa48637f796fdb48141b40ffd5b32bd669eb675ba876e112f269fc4bf5a70e70374a8 languageName: node linkType: hard @@ -5965,13 +6104,13 @@ __metadata: linkType: hard "axios@npm:^1.6.3": - version: 1.7.9 - resolution: "axios@npm:1.7.9" + version: 1.7.5 + resolution: "axios@npm:1.7.5" dependencies: follow-redirects: "npm:^1.15.6" form-data: "npm:^4.0.0" proxy-from-env: "npm:^1.1.0" - checksum: 10c0/b7a41e24b59fee5f0f26c1fc844b45b17442832eb3a0fb42dd4f1430eb4abc571fe168e67913e8a1d91c993232bd1d1ab03e20e4d1fee8c6147649b576fc1b0b + checksum: 10c0/1d5daeb28b3d1bb2a7b9f0743433c4bfbeaddc15461e50ebde487eec6c009af2515749d5261096dd430c90cd891bd310bcba5ec3967bae2033c4a307f58a6ad3 languageName: node linkType: hard @@ -6160,9 +6299,9 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:1.20.3": - version: 1.20.3 - resolution: "body-parser@npm:1.20.3" +"body-parser@npm:1.20.2": + version: 1.20.2 + resolution: "body-parser@npm:1.20.2" dependencies: bytes: "npm:3.1.2" content-type: "npm:~1.0.5" @@ -6172,11 +6311,11 @@ __metadata: http-errors: "npm:2.0.0" iconv-lite: "npm:0.4.24" on-finished: "npm:2.4.1" - qs: "npm:6.13.0" + qs: "npm:6.11.0" raw-body: "npm:2.5.2" type-is: "npm:~1.6.18" unpipe: "npm:1.0.0" - checksum: 10c0/0a9a93b7518f222885498dcecaad528cf010dd109b071bf471c93def4bfe30958b83e03496eb9c1ad4896db543d999bb62be1a3087294162a88cfa1b42c16310 + checksum: 10c0/06f1438fff388a2e2354c96aa3ea8147b79bfcb1262dfcc2aae68ec13723d01d5781680657b74e9f83c808266d5baf52804032fbde2b7382b89bd8cdb273ace9 languageName: node linkType: hard @@ -6240,17 +6379,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.24.0": - version: 4.24.3 - resolution: "browserslist@npm:4.24.3" +"browserslist@npm:^4.21.10, browserslist@npm:^4.23.1": + version: 4.23.3 + resolution: "browserslist@npm:4.23.3" dependencies: - caniuse-lite: "npm:^1.0.30001688" - electron-to-chromium: "npm:^1.5.73" - node-releases: "npm:^2.0.19" - update-browserslist-db: "npm:^1.1.1" + caniuse-lite: "npm:^1.0.30001646" + electron-to-chromium: "npm:^1.5.4" + node-releases: "npm:^2.0.18" + update-browserslist-db: "npm:^1.1.0" bin: browserslist: cli.js - checksum: 10c0/bab261ef7b6e1656a719a9fa31240ae7ce4d5ba68e479f6b11e348d819346ab4c0ff6f4821f43adcc9c193a734b186775a83b37979e70a69d182965909fe569a + checksum: 10c0/3063bfdf812815346447f4796c8f04601bf5d62003374305fd323c2a463e42776475bcc5309264e39bcf9a8605851e53560695991a623be988138b3ff8c66642 languageName: node linkType: hard @@ -6399,11 +6538,11 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^19.0.1": - version: 19.0.1 - resolution: "cacache@npm:19.0.1" +"cacache@npm:^18.0.0": + version: 18.0.4 + resolution: "cacache@npm:18.0.4" dependencies: - "@npmcli/fs": "npm:^4.0.0" + "@npmcli/fs": "npm:^3.1.0" fs-minipass: "npm:^3.0.0" glob: "npm:^10.2.2" lru-cache: "npm:^10.0.1" @@ -6411,11 +6550,11 @@ __metadata: minipass-collect: "npm:^2.0.1" minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" - p-map: "npm:^7.0.2" - ssri: "npm:^12.0.0" - tar: "npm:^7.4.3" - unique-filename: "npm:^4.0.0" - checksum: 10c0/01f2134e1bd7d3ab68be851df96c8d63b492b1853b67f2eecb2c37bb682d37cb70bb858a16f2f0554d3c0071be6dfe21456a1ff6fa4b7eed996570d6a25ffe9c + p-map: "npm:^4.0.0" + ssri: "npm:^10.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^3.0.0" + checksum: 10c0/6c055bafed9de4f3dcc64ac3dc7dd24e863210902b7c470eb9ce55a806309b3efff78033e3d8b4f7dcc5d467f2db43c6a2857aaaf26f0094b8a351d44c42179f languageName: node linkType: hard @@ -6436,17 +6575,17 @@ __metadata: languageName: node linkType: hard -"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1": - version: 1.0.1 - resolution: "call-bind-apply-helpers@npm:1.0.1" +"call-bind-apply-helpers@npm:^1.0.0": + version: 1.0.0 + resolution: "call-bind-apply-helpers@npm:1.0.0" dependencies: es-errors: "npm:^1.3.0" function-bind: "npm:^1.1.2" - checksum: 10c0/acb2ab68bf2718e68a3e895f0d0b73ccc9e45b9b6f210f163512ba76f91dab409eb8792f6dae188356f9095747512a3101646b3dea9d37fb8c7c6bf37796d18c + checksum: 10c0/fb91dbfcb0b54b025e88dba660e2a9fe6ca69107dab2f6696e1f7cf8b9c35aafc4879ac3a47d0fa9da55eecf767f2191f5651648dce920ac9b49df0ceb65063f languageName: node linkType: hard -"call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": +"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": version: 1.0.8 resolution: "call-bind@npm:1.0.8" dependencies: @@ -6458,16 +6597,6 @@ __metadata: languageName: node linkType: hard -"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3": - version: 1.0.3 - resolution: "call-bound@npm:1.0.3" - dependencies: - call-bind-apply-helpers: "npm:^1.0.1" - get-intrinsic: "npm:^1.2.6" - checksum: 10c0/45257b8e7621067304b30dbd638e856cac913d31e8e00a80d6cf172911acd057846572d0b256b45e652d515db6601e2974a1b1a040e91b4fc36fb3dd86fa69cf - languageName: node - linkType: hard - "call-me-maybe@npm:^1.0.1": version: 1.0.2 resolution: "call-me-maybe@npm:1.0.2" @@ -6577,10 +6706,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001688": - version: 1.0.30001690 - resolution: "caniuse-lite@npm:1.0.30001690" - checksum: 10c0/646bd469032afa90400a84dec30a2b00a6eda62c03ead358117e3f884cda8aacec02ec058a6dbee5eaf9714f83e483b9b0eb4fb42febb8076569f5ca40f1d347 +"caniuse-lite@npm:^1.0.30001646": + version: 1.0.30001653 + resolution: "caniuse-lite@npm:1.0.30001653" + checksum: 10c0/7aedf037541c93744148f599daea93d46d1f93ab4347997189efa2d1f003af8eadd7e1e05347ef09261ac1dc635ce375b8c6c00796245fffb4120a124824a14f languageName: node linkType: hard @@ -6623,9 +6752,9 @@ __metadata: linkType: hard "chalk@npm:^5.3.0": - version: 5.4.1 - resolution: "chalk@npm:5.4.1" - checksum: 10c0/b23e88132c702f4855ca6d25cb5538b1114343e41472d5263ee8a37cccfccd9c4216d111e1097c6a27830407a1dc81fecdf2a56f2c63033d4dbbd88c10b0dcef + version: 5.3.0 + resolution: "chalk@npm:5.3.0" + checksum: 10c0/8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 languageName: node linkType: hard @@ -6714,13 +6843,6 @@ __metadata: languageName: node linkType: hard -"chownr@npm:^3.0.0": - version: 3.0.0 - resolution: "chownr@npm:3.0.0" - checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 - languageName: node - linkType: hard - "chrome-trace-event@npm:^1.0.2": version: 1.0.4 resolution: "chrome-trace-event@npm:1.0.4" @@ -6743,9 +6865,9 @@ __metadata: linkType: hard "cjs-module-lexer@npm:^1.0.0, cjs-module-lexer@npm:^1.2.2": - version: 1.4.1 - resolution: "cjs-module-lexer@npm:1.4.1" - checksum: 10c0/5a7d8279629c9ba8ccf38078c2fed75b7737973ced22b9b5a54180efa57fb2fe2bb7bec6aec55e3b8f3f5044f5d7b240347ad9bd285e7c3d0ee5b0a1d0504dfc + version: 1.4.0 + resolution: "cjs-module-lexer@npm:1.4.0" + checksum: 10c0/b5ef03e10297c24f0db56b13d7d2f92e377499c83d7bf9352ec73df544b5310e024dfb1779a6b810e7a06eb18caa6a0e2da5f11df8116af73306f362e67fb61a languageName: node linkType: hard @@ -7047,16 +7169,16 @@ __metadata: languageName: node linkType: hard -"comment-json@npm:4.2.5": - version: 4.2.5 - resolution: "comment-json@npm:4.2.5" +"comment-json@npm:4.2.3": + version: 4.2.3 + resolution: "comment-json@npm:4.2.3" dependencies: array-timsort: "npm:^1.0.3" core-util-is: "npm:^1.0.3" esprima: "npm:^4.0.1" has-own-prop: "npm:^2.0.0" repeat-string: "npm:^1.6.1" - checksum: 10c0/e22f13f18fcc484ac33c8bc02a3d69c3f9467ae5063fdfb3df7735f83a8d9a2cab6a32b7d4a0c53123413a9577de8e17c8cc88369c433326799558febb34ef9c + checksum: 10c0/e8a0d3a6d75d92551f9a7e6fefa31f3d831dc33117b0b9432f061f45a571c85c16143e4110693d450f6eca20841db43f5429ac0d801673bcf03e9973ab1c31af languageName: node linkType: hard @@ -7480,10 +7602,10 @@ __metadata: languageName: node linkType: hard -"cookie@npm:0.7.1": - version: 0.7.1 - resolution: "cookie@npm:0.7.1" - checksum: 10c0/5de60c67a410e7c8dc8a46a4b72eb0fe925871d057c9a5d2c0e8145c4270a4f81076de83410c4d397179744b478e33cd80ccbcc457abf40a9409ad27dcd21dde +"cookie@npm:0.6.0": + version: 0.6.0 + resolution: "cookie@npm:0.6.0" + checksum: 10c0/f2318b31af7a31b4ddb4a678d024514df5e705f9be5909a192d7f116cfb6d45cbacf96a473fa733faa95050e7cff26e7832bb3ef94751592f1387b71c8956686 languageName: node linkType: hard @@ -7560,16 +7682,16 @@ __metadata: languageName: node linkType: hard -"cosmiconfig-typescript-loader@npm:^6.1.0": - version: 6.1.0 - resolution: "cosmiconfig-typescript-loader@npm:6.1.0" +"cosmiconfig-typescript-loader@npm:^5.0.0": + version: 5.0.0 + resolution: "cosmiconfig-typescript-loader@npm:5.0.0" dependencies: - jiti: "npm:^2.4.1" + jiti: "npm:^1.19.1" peerDependencies: "@types/node": "*" - cosmiconfig: ">=9" - typescript: ">=5" - checksum: 10c0/5e3baf85a9da7dcdd7ef53a54d1293400eed76baf0abb3a41bf9fcc789f1a2653319443471f9a1dc32951f1de4467a6696ccd0f88640e7827f1af6ff94ceaf1a + cosmiconfig: ">=8.2" + typescript: ">=4" + checksum: 10c0/0eb1a767a589cf092e68729e184d5917ae0b167b6f5d908bc58cee221d66b937430fc58df64029795ef98bb8e85c575da6e3819c5f9679c721de7bdbb4bde719 languageName: node linkType: hard @@ -7627,26 +7749,26 @@ __metadata: linkType: hard "cross-spawn@npm:^6.0.0": - version: 6.0.6 - resolution: "cross-spawn@npm:6.0.6" + version: 6.0.5 + resolution: "cross-spawn@npm:6.0.5" dependencies: nice-try: "npm:^1.0.4" path-key: "npm:^2.0.1" semver: "npm:^5.5.0" shebang-command: "npm:^1.2.0" which: "npm:^1.2.9" - checksum: 10c0/bf61fb890e8635102ea9bce050515cf915ff6a50ccaa0b37a17dc82fded0fb3ed7af5478b9367b86baee19127ad86af4be51d209f64fd6638c0862dca185fe1d + checksum: 10c0/e05544722e9d7189b4292c66e42b7abeb21db0d07c91b785f4ae5fefceb1f89e626da2703744657b287e86dcd4af57b54567cef75159957ff7a8a761d9055012 languageName: node linkType: hard "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": - version: 7.0.6 - resolution: "cross-spawn@npm:7.0.6" + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" dependencies: path-key: "npm:^3.1.0" shebang-command: "npm:^2.0.0" which: "npm:^2.0.1" - checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 + checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 languageName: node linkType: hard @@ -7752,36 +7874,36 @@ __metadata: languageName: node linkType: hard -"data-view-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "data-view-buffer@npm:1.0.2" +"data-view-buffer@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-buffer@npm:1.0.1" dependencies: - call-bound: "npm:^1.0.3" + call-bind: "npm:^1.0.6" es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.2" - checksum: 10c0/7986d40fc7979e9e6241f85db8d17060dd9a71bd53c894fa29d126061715e322a4cd47a00b0b8c710394854183d4120462b980b8554012acc1c0fa49df7ad38c + is-data-view: "npm:^1.0.1" + checksum: 10c0/8984119e59dbed906a11fcfb417d7d861936f16697a0e7216fe2c6c810f6b5e8f4a5281e73f2c28e8e9259027190ac4a33e2a65fdd7fa86ac06b76e838918583 languageName: node linkType: hard -"data-view-byte-length@npm:^1.0.2": - version: 1.0.2 - resolution: "data-view-byte-length@npm:1.0.2" +"data-view-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-length@npm:1.0.1" dependencies: - call-bound: "npm:^1.0.3" + call-bind: "npm:^1.0.7" es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.2" - checksum: 10c0/f8a4534b5c69384d95ac18137d381f18a5cfae1f0fc1df0ef6feef51ef0d568606d970b69e02ea186c6c0f0eac77fe4e6ad96fec2569cc86c3afcc7475068c55 + is-data-view: "npm:^1.0.1" + checksum: 10c0/b7d9e48a0cf5aefed9ab7d123559917b2d7e0d65531f43b2fd95b9d3a6b46042dd3fca597c42bba384e66b70d7ad66ff23932f8367b241f53d93af42cfe04ec2 languageName: node linkType: hard -"data-view-byte-offset@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-byte-offset@npm:1.0.1" +"data-view-byte-offset@npm:^1.0.0": + version: 1.0.0 + resolution: "data-view-byte-offset@npm:1.0.0" dependencies: - call-bound: "npm:^1.0.2" + call-bind: "npm:^1.0.6" es-errors: "npm:^1.3.0" is-data-view: "npm:^1.0.1" - checksum: 10c0/fa7aa40078025b7810dcffc16df02c480573b7b53ef1205aa6a61533011005c1890e5ba17018c692ce7c900212b547262d33279fde801ad9843edc0863bf78c4 + checksum: 10c0/21b0d2e53fd6e20cc4257c873bf6d36d77bd6185624b84076c0a1ddaa757b49aaf076254006341d35568e89f52eecd1ccb1a502cfb620f2beca04f48a6a62a8f languageName: node linkType: hard @@ -7818,14 +7940,14 @@ __metadata: linkType: hard "debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5": - version: 4.4.0 - resolution: "debug@npm:4.4.0" + version: 4.3.6 + resolution: "debug@npm:4.3.6" dependencies: - ms: "npm:^2.1.3" + ms: "npm:2.1.2" peerDependenciesMeta: supports-color: optional: true - checksum: 10c0/db94f1a182bf886f57b4755f85b3a74c39b5114b9377b7ab375dc2cfa3454f09490cc6c30f829df3fc8042bc8b8995f6567ce5cd96f3bc3688bd24027197d9de + checksum: 10c0/3293416bff072389c101697d4611c402a6bacd1900ac20c0492f61a9cdd6b3b29750fc7f5e299f8058469ef60ff8fb79b86395a30374fbd2490113c1c7112285 languageName: node linkType: hard @@ -7940,7 +8062,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.2.1": +"define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" dependencies: @@ -8203,13 +8325,13 @@ __metadata: linkType: hard "domutils@npm:^3.0.1, domutils@npm:^3.1.0": - version: 3.2.1 - resolution: "domutils@npm:3.2.1" + version: 3.1.0 + resolution: "domutils@npm:3.1.0" dependencies: dom-serializer: "npm:^2.0.0" domelementtype: "npm:^2.3.0" domhandler: "npm:^5.0.3" - checksum: 10c0/af2a8e28fe51137307d2400c4b6483a3294ac8f784b14fc74b67f3aca3aa53a63144bd9e2bb96f23174c0c1aa680544bf2d77b4cc94e6f90f33314ed65c12a4f + checksum: 10c0/342d64cf4d07b8a0573fb51e0a6312a88fb520c7fefd751870bf72fa5fc0f2e0cb9a3958a573610b1d608c6e2a69b8e9b4b40f0bfb8f87a71bce4f180cca1887 languageName: node linkType: hard @@ -8262,14 +8384,14 @@ __metadata: languageName: node linkType: hard -"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "dunder-proto@npm:1.0.1" +"dunder-proto@npm:^1.0.0": + version: 1.0.0 + resolution: "dunder-proto@npm:1.0.0" dependencies: - call-bind-apply-helpers: "npm:^1.0.1" + call-bind-apply-helpers: "npm:^1.0.0" es-errors: "npm:^1.3.0" gopd: "npm:^1.2.0" - checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 + checksum: 10c0/b321e5cbf64f0a4c786b0b3dc187eb5197a83f6e05a1e11b86db25251b3ae6747c4b805d9e0a4fbf481d22a86a539dc75f82d883daeac7fc2ce4bd72ff5ef5a2 languageName: node linkType: hard @@ -8350,10 +8472,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.73": - version: 1.5.76 - resolution: "electron-to-chromium@npm:1.5.76" - checksum: 10c0/5a977be9fd5810769a7b4eae0e4b41b6beca65f2b3f3b7442819f6c93366d767d183cfbf408714f944a9bf3aa304f8c9ab9d0cdfd8e878ab8f2cbb61f8b22acd +"electron-to-chromium@npm:^1.5.4": + version: 1.5.13 + resolution: "electron-to-chromium@npm:1.5.13" + checksum: 10c0/1d88ac39447e1d718c4296f92fe89836df4688daf2d362d6c49108136795f05a56dd9c950f1c6715e0395fa037c3b5f5ea686c543fdc90e6d74a005877c45022 languageName: node linkType: hard @@ -8392,17 +8514,17 @@ __metadata: languageName: node linkType: hard -"encodeurl@npm:~2.0.0": +"encoding-japanese@npm:2.0.0": version: 2.0.0 - resolution: "encodeurl@npm:2.0.0" - checksum: 10c0/5d317306acb13e6590e28e27924c754163946a2480de11865c991a3a7eed4315cd3fba378b543ca145829569eefe9b899f3d84bb09870f675ae60bc924b01ceb + resolution: "encoding-japanese@npm:2.0.0" + checksum: 10c0/453bbca71d3666213a9bc873d5a69441b379f158a2992aa5cd1fc124c915b518e19fce7654f973d1334234f870e8053443a464c8f73ff9d7efe66bbc1ce1f4f6 languageName: node linkType: hard -"encoding-japanese@npm:2.2.0": - version: 2.2.0 - resolution: "encoding-japanese@npm:2.2.0" - checksum: 10c0/9d1f10dde16f59da8a8a1a04499dffa3e9926b0dbd7dfab8054570527b7e6de30c47e828851f42d2727af31586ec8049a84eeae593ad8b22eea10921fd269798 +"encoding-japanese@npm:2.1.0": + version: 2.1.0 + resolution: "encoding-japanese@npm:2.1.0" + checksum: 10c0/21aef8c2165545b58a156ab8168ff164bd2e922630e0dbece2e94fd9d326a1ce256a4c74cbf982cf187c42d8726b52e5d892bd4de9181cfa57240754d4ca6540 languageName: node linkType: hard @@ -8424,13 +8546,13 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.17.1, enhanced-resolve@npm:^5.7.0": - version: 5.18.0 - resolution: "enhanced-resolve@npm:5.18.0" +"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.17.0, enhanced-resolve@npm:^5.7.0": + version: 5.17.1 + resolution: "enhanced-resolve@npm:5.17.1" dependencies: graceful-fs: "npm:^4.2.4" tapable: "npm:^2.2.0" - checksum: 10c0/5fcc264a6040754ab5b349628cac2bb5f89cee475cbe340804e657a5b9565f70e6aafb338d5895554eb0ced9f66c50f38a255274a0591dcb64ee17c549c459ce + checksum: 10c0/81a0515675eca17efdba2cf5bad87abc91a528fc1191aad50e275e74f045b41506167d420099022da7181c8d787170ea41e4a11a0b10b7a16f6237daecb15370 languageName: node linkType: hard @@ -8456,11 +8578,11 @@ __metadata: linkType: hard "envinfo@npm:^7.3.1": - version: 7.14.0 - resolution: "envinfo@npm:7.14.0" + version: 7.13.0 + resolution: "envinfo@npm:7.13.0" bin: envinfo: dist/cli.js - checksum: 10c0/059a031eee101e056bd9cc5cbfe25c2fab433fe1780e86cf0a82d24a000c6931e327da6a8ffb3dce528a24f83f256e7efc0b36813113eff8fdc6839018efe327 + checksum: 10c0/9c279213cbbb353b3171e8e333fd2ed564054abade08ab3d735fe136e10a0e14e0588e1ce77e6f01285f2462eaca945d64f0778be5ae3d9e82804943e36a4411 languageName: node linkType: hard @@ -8487,58 +8609,57 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6": - version: 1.23.7 - resolution: "es-abstract@npm:1.23.7" +"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2": + version: 1.23.5 + resolution: "es-abstract@npm:1.23.5" dependencies: - array-buffer-byte-length: "npm:^1.0.2" - arraybuffer.prototype.slice: "npm:^1.0.4" + array-buffer-byte-length: "npm:^1.0.1" + arraybuffer.prototype.slice: "npm:^1.0.3" available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - data-view-buffer: "npm:^1.0.2" - data-view-byte-length: "npm:^1.0.2" - data-view-byte-offset: "npm:^1.0.1" - es-define-property: "npm:^1.0.1" + call-bind: "npm:^1.0.7" + data-view-buffer: "npm:^1.0.1" + data-view-byte-length: "npm:^1.0.1" + data-view-byte-offset: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" es-errors: "npm:^1.3.0" es-object-atoms: "npm:^1.0.0" es-set-tostringtag: "npm:^2.0.3" - es-to-primitive: "npm:^1.3.0" - function.prototype.name: "npm:^1.1.8" - get-intrinsic: "npm:^1.2.6" - get-symbol-description: "npm:^1.1.0" + es-to-primitive: "npm:^1.2.1" + function.prototype.name: "npm:^1.1.6" + get-intrinsic: "npm:^1.2.4" + get-symbol-description: "npm:^1.0.2" globalthis: "npm:^1.0.4" - gopd: "npm:^1.2.0" + gopd: "npm:^1.0.1" has-property-descriptors: "npm:^1.0.2" - has-proto: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" + has-proto: "npm:^1.0.3" + has-symbols: "npm:^1.0.3" hasown: "npm:^2.0.2" - internal-slot: "npm:^1.1.0" - is-array-buffer: "npm:^3.0.5" + internal-slot: "npm:^1.0.7" + is-array-buffer: "npm:^3.0.4" is-callable: "npm:^1.2.7" - is-data-view: "npm:^1.0.2" - is-regex: "npm:^1.2.1" - is-shared-array-buffer: "npm:^1.0.4" - is-string: "npm:^1.1.1" - is-typed-array: "npm:^1.1.15" - is-weakref: "npm:^1.1.0" - math-intrinsics: "npm:^1.1.0" + is-data-view: "npm:^1.0.1" + is-negative-zero: "npm:^2.0.3" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.3" + is-string: "npm:^1.0.7" + is-typed-array: "npm:^1.1.13" + is-weakref: "npm:^1.0.2" object-inspect: "npm:^1.13.3" object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.7" + object.assign: "npm:^4.1.5" regexp.prototype.flags: "npm:^1.5.3" - safe-array-concat: "npm:^1.1.3" - safe-regex-test: "npm:^1.1.0" - string.prototype.trim: "npm:^1.2.10" - string.prototype.trimend: "npm:^1.0.9" + safe-array-concat: "npm:^1.1.2" + safe-regex-test: "npm:^1.0.3" + string.prototype.trim: "npm:^1.2.9" + string.prototype.trimend: "npm:^1.0.8" string.prototype.trimstart: "npm:^1.0.8" - typed-array-buffer: "npm:^1.0.3" - typed-array-byte-length: "npm:^1.0.3" - typed-array-byte-offset: "npm:^1.0.4" - typed-array-length: "npm:^1.0.7" - unbox-primitive: "npm:^1.1.0" - which-typed-array: "npm:^1.1.18" - checksum: 10c0/68d24e56f47d773639d49c561366c8d9e775187e0d64f011209261fcb3a63caf764f60c0e66940bbd8815a862f9ca8114f6a5dfdeb776da87436d46bcd82ae48 + typed-array-buffer: "npm:^1.0.2" + typed-array-byte-length: "npm:^1.0.1" + typed-array-byte-offset: "npm:^1.0.2" + typed-array-length: "npm:^1.0.6" + unbox-primitive: "npm:^1.0.2" + which-typed-array: "npm:^1.1.15" + checksum: 10c0/1f6f91da9cf7ee2c81652d57d3046621d598654d1d1b05c1578bafe5c4c2d3d69513901679bdca2de589f620666ec21de337e4935cec108a4ed0871d5ef04a5d languageName: node linkType: hard @@ -8556,7 +8677,7 @@ __metadata: languageName: node linkType: hard -"es-errors@npm:^1.3.0": +"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": version: 1.3.0 resolution: "es-errors@npm:1.3.0" checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 @@ -8564,9 +8685,9 @@ __metadata: linkType: hard "es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.5.3": - version: 1.6.0 - resolution: "es-module-lexer@npm:1.6.0" - checksum: 10c0/667309454411c0b95c476025929881e71400d74a746ffa1ff4cb450bd87f8e33e8eef7854d68e401895039ac0bac64e7809acbebb6253e055dd49ea9e3ea9212 + version: 1.5.4 + resolution: "es-module-lexer@npm:1.5.4" + checksum: 10c0/300a469488c2f22081df1e4c8398c78db92358496e639b0df7f89ac6455462aaf5d8893939087c1a1cbcbf20eed4610c70e0bcb8f3e4b0d80a5d2611c539408c languageName: node linkType: hard @@ -8590,7 +8711,7 @@ __metadata: languageName: node linkType: hard -"es-shim-unscopables@npm:^1.0.2": +"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": version: 1.0.2 resolution: "es-shim-unscopables@npm:1.0.2" dependencies: @@ -8599,14 +8720,14 @@ __metadata: languageName: node linkType: hard -"es-to-primitive@npm:^1.3.0": - version: 1.3.0 - resolution: "es-to-primitive@npm:1.3.0" +"es-to-primitive@npm:^1.2.1": + version: 1.2.1 + resolution: "es-to-primitive@npm:1.2.1" dependencies: - is-callable: "npm:^1.2.7" - is-date-object: "npm:^1.0.5" - is-symbol: "npm:^1.0.4" - checksum: 10c0/c7e87467abb0b438639baa8139f701a06537d2b9bc758f23e8622c3b42fd0fdb5bde0f535686119e446dd9d5e4c0f238af4e14960f4771877cf818d023f6730b + is-callable: "npm:^1.1.4" + is-date-object: "npm:^1.0.1" + is-symbol: "npm:^1.0.2" + checksum: 10c0/0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1 languageName: node linkType: hard @@ -8626,13 +8747,20 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.1, escalade@npm:^3.2.0": +"escalade@npm:^3.1.1": version: 3.2.0 resolution: "escalade@npm:3.2.0" checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 languageName: node linkType: hard +"escalade@npm:^3.1.2": + version: 3.1.2 + resolution: "escalade@npm:3.1.2" + checksum: 10c0/6b4adafecd0682f3aa1cd1106b8fff30e492c7015b178bc81b2d2f75106dabea6c6d6e8508fc491bd58e597c74abb0e8e2368f943ecb9393d4162e3c2f3cf287 + languageName: node + linkType: hard + "escape-goat@npm:^3.0.0": version: 3.0.0 resolution: "escape-goat@npm:3.0.0" @@ -8727,15 +8855,15 @@ __metadata: languageName: node linkType: hard -"eslint-module-utils@npm:^2.12.0": - version: 2.12.0 - resolution: "eslint-module-utils@npm:2.12.0" +"eslint-module-utils@npm:^2.8.0": + version: 2.8.2 + resolution: "eslint-module-utils@npm:2.8.2" dependencies: debug: "npm:^3.2.7" peerDependenciesMeta: eslint: optional: true - checksum: 10c0/4d8b46dcd525d71276f9be9ffac1d2be61c9d54cc53c992e6333cf957840dee09381842b1acbbb15fc6b255ebab99cd481c5007ab438e5455a14abe1a0468558 + checksum: 10c0/98c5ca95db75507b148c05d157b287116c677bfc9ca6bef4d5455c8b199eb2c35b9204a15ca7a3497085daef8ca3a3f579bd9e753ad4ad4df6256e4ef1107c51 languageName: node linkType: hard @@ -8752,31 +8880,29 @@ __metadata: linkType: hard "eslint-plugin-import@npm:^2.29.1": - version: 2.31.0 - resolution: "eslint-plugin-import@npm:2.31.0" + version: 2.29.1 + resolution: "eslint-plugin-import@npm:2.29.1" dependencies: - "@rtsao/scc": "npm:^1.1.0" - array-includes: "npm:^3.1.8" - array.prototype.findlastindex: "npm:^1.2.5" + array-includes: "npm:^3.1.7" + array.prototype.findlastindex: "npm:^1.2.3" array.prototype.flat: "npm:^1.3.2" array.prototype.flatmap: "npm:^1.3.2" debug: "npm:^3.2.7" doctrine: "npm:^2.1.0" eslint-import-resolver-node: "npm:^0.3.9" - eslint-module-utils: "npm:^2.12.0" - hasown: "npm:^2.0.2" - is-core-module: "npm:^2.15.1" + eslint-module-utils: "npm:^2.8.0" + hasown: "npm:^2.0.0" + is-core-module: "npm:^2.13.1" is-glob: "npm:^4.0.3" minimatch: "npm:^3.1.2" - object.fromentries: "npm:^2.0.8" - object.groupby: "npm:^1.0.3" - object.values: "npm:^1.2.0" + object.fromentries: "npm:^2.0.7" + object.groupby: "npm:^1.0.1" + object.values: "npm:^1.1.7" semver: "npm:^6.3.1" - string.prototype.trimend: "npm:^1.0.8" tsconfig-paths: "npm:^3.15.0" peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - checksum: 10c0/e21d116ddd1900e091ad120b3eb68c5dd5437fe2c930f1211781cd38b246f090a6b74d5f3800b8255a0ed29782591521ad44eb21c5534960a8f1fb4040fd913a + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + checksum: 10c0/5f35dfbf4e8e67f741f396987de9504ad125c49f4144508a93282b4ea0127e052bde65ab6def1f31b6ace6d5d430be698333f75bdd7dca3bc14226c92a083196 languageName: node linkType: hard @@ -8885,22 +9011,22 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^4.2.0": - version: 4.2.0 - resolution: "eslint-visitor-keys@npm:4.2.0" - checksum: 10c0/2ed81c663b147ca6f578312919483eb040295bbab759e5a371953456c636c5b49a559883e2677112453728d66293c0a4c90ab11cab3428cf02a0236d2e738269 +"eslint-visitor-keys@npm:^4.0.0": + version: 4.0.0 + resolution: "eslint-visitor-keys@npm:4.0.0" + checksum: 10c0/76619f42cf162705a1515a6868e6fc7567e185c7063a05621a8ac4c3b850d022661262c21d9f1fc1d144ecf0d5d64d70a3f43c15c3fc969a61ace0fb25698cf5 languageName: node linkType: hard "eslint@npm:^8.57.0": - version: 8.57.1 - resolution: "eslint@npm:8.57.1" + version: 8.57.0 + resolution: "eslint@npm:8.57.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.6.1" "@eslint/eslintrc": "npm:^2.1.4" - "@eslint/js": "npm:8.57.1" - "@humanwhocodes/config-array": "npm:^0.13.0" + "@eslint/js": "npm:8.57.0" + "@humanwhocodes/config-array": "npm:^0.11.14" "@humanwhocodes/module-importer": "npm:^1.0.1" "@nodelib/fs.walk": "npm:^1.2.8" "@ungap/structured-clone": "npm:^1.2.0" @@ -8936,18 +9062,18 @@ __metadata: text-table: "npm:^0.2.0" bin: eslint: bin/eslint.js - checksum: 10c0/1fd31533086c1b72f86770a4d9d7058ee8b4643fd1cfd10c7aac1ecb8725698e88352a87805cf4b2ce890aa35947df4b4da9655fb7fdfa60dbb448a43f6ebcf1 + checksum: 10c0/00bb96fd2471039a312435a6776fe1fd557c056755eaa2b96093ef3a8508c92c8775d5f754768be6b1dddd09fdd3379ddb231eeb9b6c579ee17ea7d68000a529 languageName: node linkType: hard "espree@npm:^10.1.0": - version: 10.3.0 - resolution: "espree@npm:10.3.0" + version: 10.1.0 + resolution: "espree@npm:10.1.0" dependencies: - acorn: "npm:^8.14.0" + acorn: "npm:^8.12.0" acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^4.2.0" - checksum: 10c0/272beeaca70d0a1a047d61baff64db04664a33d7cfb5d144f84bc8a5c6194c6c8ebe9cc594093ca53add88baa23e59b01e69e8a0160ab32eac570482e165c462 + eslint-visitor-keys: "npm:^4.0.0" + checksum: 10c0/52e6feaa77a31a6038f0c0e3fce93010a4625701925b0715cd54a2ae190b3275053a0717db698697b32653788ac04845e489d6773b508d6c2e8752f3c57470a0 languageName: node linkType: hard @@ -9103,6 +9229,23 @@ __metadata: languageName: node linkType: hard +"execa@npm:^8.0.1": + version: 8.0.1 + resolution: "execa@npm:8.0.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^8.0.1" + human-signals: "npm:^5.0.0" + is-stream: "npm:^3.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^5.1.0" + onetime: "npm:^6.0.0" + signal-exit: "npm:^4.1.0" + strip-final-newline: "npm:^3.0.0" + checksum: 10c0/2c52d8775f5bf103ce8eec9c7ab3059909ba350a5164744e9947ed14a53f51687c040a250bda833f906d1283aa8803975b84e6c8f7a7c42f99dc8ef80250d1af + languageName: node + linkType: hard + "exit@npm:^0.1.2": version: 0.1.2 resolution: "exit@npm:0.1.2" @@ -9158,42 +9301,42 @@ __metadata: languageName: node linkType: hard -"express@npm:4.21.2": - version: 4.21.2 - resolution: "express@npm:4.21.2" +"express@npm:4.19.2": + version: 4.19.2 + resolution: "express@npm:4.19.2" dependencies: accepts: "npm:~1.3.8" array-flatten: "npm:1.1.1" - body-parser: "npm:1.20.3" + body-parser: "npm:1.20.2" content-disposition: "npm:0.5.4" content-type: "npm:~1.0.4" - cookie: "npm:0.7.1" + cookie: "npm:0.6.0" cookie-signature: "npm:1.0.6" debug: "npm:2.6.9" depd: "npm:2.0.0" - encodeurl: "npm:~2.0.0" + encodeurl: "npm:~1.0.2" escape-html: "npm:~1.0.3" etag: "npm:~1.8.1" - finalhandler: "npm:1.3.1" + finalhandler: "npm:1.2.0" fresh: "npm:0.5.2" http-errors: "npm:2.0.0" - merge-descriptors: "npm:1.0.3" + merge-descriptors: "npm:1.0.1" methods: "npm:~1.1.2" on-finished: "npm:2.4.1" parseurl: "npm:~1.3.3" - path-to-regexp: "npm:0.1.12" + path-to-regexp: "npm:0.1.7" proxy-addr: "npm:~2.0.7" - qs: "npm:6.13.0" + qs: "npm:6.11.0" range-parser: "npm:~1.2.1" safe-buffer: "npm:5.2.1" - send: "npm:0.19.0" - serve-static: "npm:1.16.2" + send: "npm:0.18.0" + serve-static: "npm:1.15.0" setprototypeof: "npm:1.2.0" statuses: "npm:2.0.1" type-is: "npm:~1.6.18" utils-merge: "npm:1.0.1" vary: "npm:~1.1.2" - checksum: 10c0/38168fd0a32756600b56e6214afecf4fc79ec28eca7f7a91c2ab8d50df4f47562ca3f9dee412da7f5cea6b1a1544b33b40f9f8586dbacfbdada0fe90dbb10a1f + checksum: 10c0/e82e2662ea9971c1407aea9fc3c16d6b963e55e3830cd0ef5e00b533feda8b770af4e3be630488ef8a752d7c75c4fcefb15892868eeaafe7353cb9e3e269fdcb languageName: node linkType: hard @@ -9367,9 +9510,9 @@ __metadata: linkType: hard "fast-uri@npm:^3.0.1": - version: 3.0.3 - resolution: "fast-uri@npm:3.0.3" - checksum: 10c0/4b2c5ce681a062425eae4f15cdc8fc151fd310b2f69b1f96680677820a8b49c3cd6e80661a406e19d50f0c40a3f8bffdd458791baf66f4a879d80be28e10a320 + version: 3.0.1 + resolution: "fast-uri@npm:3.0.1" + checksum: 10c0/3cd46d6006083b14ca61ffe9a05b8eef75ef87e9574b6f68f2e17ecf4daa7aaadeff44e3f0f7a0ef4e0f7e7c20fc07beec49ff14dc72d0b500f00386592f2d10 languageName: node linkType: hard @@ -9398,11 +9541,11 @@ __metadata: linkType: hard "fastq@npm:^1.6.0, fastq@npm:^1.6.1": - version: 1.18.0 - resolution: "fastq@npm:1.18.0" + version: 1.17.1 + resolution: "fastq@npm:1.17.1" dependencies: reusify: "npm:^1.0.4" - checksum: 10c0/7be87ecc41762adbddf558d24182f50a4b1a3ef3ee807d33b7623da7aee5faecdcc94fce5aa13fe91df93e269f383232bbcdb2dc5338cd1826503d6063221f36 + checksum: 10c0/1095f16cea45fb3beff558bb3afa74ca7a9250f5a670b65db7ed585f92b4b48381445cd328b3d87323da81e43232b5d5978a8201bde84e0cd514310f1ea6da34 languageName: node linkType: hard @@ -9493,18 +9636,18 @@ __metadata: languageName: node linkType: hard -"finalhandler@npm:1.3.1": - version: 1.3.1 - resolution: "finalhandler@npm:1.3.1" +"finalhandler@npm:1.2.0": + version: 1.2.0 + resolution: "finalhandler@npm:1.2.0" dependencies: debug: "npm:2.6.9" - encodeurl: "npm:~2.0.0" + encodeurl: "npm:~1.0.2" escape-html: "npm:~1.0.3" on-finished: "npm:2.4.1" parseurl: "npm:~1.3.3" statuses: "npm:2.0.1" unpipe: "npm:~1.0.0" - checksum: 10c0/d38035831865a49b5610206a3a9a9aae4e8523cbbcd01175d0480ffbf1278c47f11d89be3ca7f617ae6d94f29cf797546a4619cd84dd109009ef33f12f69019f + checksum: 10c0/64b7e5ff2ad1fcb14931cd012651631b721ce657da24aedb5650ddde9378bf8e95daa451da43398123f5de161a81e79ff5affe4f9f2a6d2df4a813d6d3e254b7 languageName: node linkType: hard @@ -9614,9 +9757,9 @@ __metadata: linkType: hard "flatted@npm:^3.2.9": - version: 3.3.2 - resolution: "flatted@npm:3.3.2" - checksum: 10c0/24cc735e74d593b6c767fe04f2ef369abe15b62f6906158079b9874bdb3ee5ae7110bb75042e70cd3f99d409d766f357caf78d5ecee9780206f5fdc5edbad334 + version: 3.3.1 + resolution: "flatted@npm:3.3.1" + checksum: 10c0/324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf languageName: node linkType: hard @@ -9631,12 +9774,12 @@ __metadata: linkType: hard "follow-redirects@npm:^1.15.6": - version: 1.15.9 - resolution: "follow-redirects@npm:1.15.9" + version: 1.15.6 + resolution: "follow-redirects@npm:1.15.6" peerDependenciesMeta: debug: optional: true - checksum: 10c0/5829165bd112c3c0e82be6c15b1a58fa9dcfaede3b3c54697a82fe4a62dd5ae5e8222956b448d2f98e331525f05d00404aba7d696de9e761ef6e42fdc780244f + checksum: 10c0/9ff767f0d7be6aa6870c82ac79cf0368cd73e01bbc00e9eb1c2a16fbb198ec105e3c9b6628bb98e9f3ac66fe29a957b9645bcb9a490bb7aa0d35f908b6b85071 languageName: node linkType: hard @@ -9697,36 +9840,35 @@ __metadata: linkType: hard "form-data@npm:^2.5.0": - version: 2.5.2 - resolution: "form-data@npm:2.5.2" + version: 2.5.1 + resolution: "form-data@npm:2.5.1" dependencies: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.6" mime-types: "npm:^2.1.12" - safe-buffer: "npm:^5.2.1" - checksum: 10c0/af7cb13fc8423ff95fd59c62d101c84b5458a73e1e426b0bc459afbf5b93b1e447dc6c225ac31c6df59f36b209904a3f1a10b4eb9e7a17e0fe394019749142cc + checksum: 10c0/7e8fb913b84a7ac04074781a18d0f94735bbe82815ff35348803331f6480956ff0035db5bcf15826edee09fe01e665cfac664678f1526646a6374ee13f960e56 languageName: node linkType: hard "form-data@npm:^3.0.0": - version: 3.0.2 - resolution: "form-data@npm:3.0.2" + version: 3.0.1 + resolution: "form-data@npm:3.0.1" dependencies: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" mime-types: "npm:^2.1.12" - checksum: 10c0/1157ba53ce3a381ea3321b5506ae843ead4027e1b4567b74afa7d84df7043b33c5e518bb267dac56036c3dd8f4d8268be3e7181691488fff766bfccdc98d3bf7 + checksum: 10c0/1ccc3ae064a080a799923f754d49fcebdd90515a8924f0f54de557540b50e7f1fe48ba5f2bd0435a5664aa2d49729107e6aaf2155a9abf52339474c5638b4485 languageName: node linkType: hard "form-data@npm:^4.0.0": - version: 4.0.1 - resolution: "form-data@npm:4.0.1" + version: 4.0.0 + resolution: "form-data@npm:4.0.0" dependencies: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" mime-types: "npm:^2.1.12" - checksum: 10c0/bb102d570be8592c23f4ea72d7df9daa50c7792eb0cf1c5d7e506c1706e7426a4e4ae48a35b109e91c85f1c0ec63774a21ae252b66f4eb981cb8efef7d0463c8 + checksum: 10c0/cb6f3ac49180be03ff07ba3ff125f9eba2ff0b277fb33c7fc47569fc5e616882c5b1c69b9904c4c4187e97dd0419dd03b134174756f296dec62041e6527e2c6e languageName: node linkType: hard @@ -9753,13 +9895,6 @@ __metadata: languageName: node linkType: hard -"forwarded-parse@npm:2.1.2": - version: 2.1.2 - resolution: "forwarded-parse@npm:2.1.2" - checksum: 10c0/0c6b4c631775f272b4475e935108635495e8a5b261d1b4a5caef31c47c5a0b04134adc564e655aadfef366a02647fa3ae90a1d3ac19929f3ade47f9bed53036a - languageName: node - linkType: hard - "forwarded@npm:0.2.0": version: 0.2.0 resolution: "forwarded@npm:0.2.0" @@ -9901,17 +10036,15 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": - version: 1.1.8 - resolution: "function.prototype.name@npm:1.1.8" +"function.prototype.name@npm:^1.1.6": + version: 1.1.6 + resolution: "function.prototype.name@npm:1.1.6" dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - define-properties: "npm:^1.2.1" + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" functions-have-names: "npm:^1.2.3" - hasown: "npm:^2.0.2" - is-callable: "npm:^1.2.7" - checksum: 10c0/e920a2ab52663005f3cbe7ee3373e3c71c1fb5558b0b0548648cdf3e51961085032458e26c71ff1a8c8c20e7ee7caeb03d43a5d1fa8610c459333323a2e71253 + checksum: 10c0/9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b languageName: node linkType: hard @@ -9992,21 +10125,19 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6": - version: 1.2.6 - resolution: "get-intrinsic@npm:1.2.6" +"get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": + version: 1.2.5 + resolution: "get-intrinsic@npm:1.2.5" dependencies: - call-bind-apply-helpers: "npm:^1.0.1" + call-bind-apply-helpers: "npm:^1.0.0" dunder-proto: "npm:^1.0.0" es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" function-bind: "npm:^1.1.2" gopd: "npm:^1.2.0" has-symbols: "npm:^1.1.0" hasown: "npm:^2.0.2" - math-intrinsics: "npm:^1.0.0" - checksum: 10c0/0f1ea6d807d97d074e8a31ac698213a12757fcfa9a8f4778263d2e4702c40fe83198aadd3dba2e99aabc2e4cf8a38345545dbb0518297d3df8b00b56a156c32a + checksum: 10c0/dcaace9fd4b4dd127b6668f580393e1a704bad308b7b88d694145e2599ee6c51b70cbfd49c6c96a5ffdb14a70824a0b3bd9b78bad84953932e5f0c5da4e508fd languageName: node linkType: hard @@ -10097,14 +10228,21 @@ __metadata: languageName: node linkType: hard -"get-symbol-description@npm:^1.1.0": - version: 1.1.0 - resolution: "get-symbol-description@npm:1.1.0" +"get-stream@npm:^8.0.1": + version: 8.0.1 + resolution: "get-stream@npm:8.0.1" + checksum: 10c0/5c2181e98202b9dae0bb4a849979291043e5892eb40312b47f0c22b9414fc9b28a3b6063d2375705eb24abc41ecf97894d9a51f64ff021511b504477b27b4290 + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.0.2": + version: 1.0.2 + resolution: "get-symbol-description@npm:1.0.2" dependencies: - call-bound: "npm:^1.0.3" + call-bind: "npm:^1.0.5" es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.6" - checksum: 10c0/d6a7d6afca375779a4b307738c9e80dbf7afc0bdbe5948768d54ab9653c865523d8920e670991a925936eb524b7cb6a6361d199a760b21d0ca7620194455aa4b + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/867be6d63f5e0eb026cb3b0ef695ec9ecf9310febb041072d2e142f260bd91ced9eeb426b3af98791d1064e324e653424afa6fd1af17dee373bea48ae03162bc languageName: node linkType: hard @@ -10293,7 +10431,23 @@ __metadata: languageName: node linkType: hard -"glob@npm:10.4.5, glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.3, glob@npm:^10.3.7, glob@npm:~10.4.1": +"glob@npm:10.4.2": + version: 10.4.2 + resolution: "glob@npm:10.4.2" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/2c7296695fa75a935f3ad17dc62e4e170a8bb8752cf64d328be8992dd6ad40777939003754e10e9741ff8fbe43aa52fba32d6930d0ffa0e3b74bc3fb5eebaa2f + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.3, glob@npm:~10.4.1": version: 10.4.5 resolution: "glob@npm:10.4.5" dependencies: @@ -10451,10 +10605,10 @@ __metadata: languageName: node linkType: hard -"has-bigints@npm:^1.0.2": - version: 1.1.0 - resolution: "has-bigints@npm:1.1.0" - checksum: 10c0/2de0cdc4a1ccf7a1e75ffede1876994525ac03cc6f5ae7392d3415dd475cd9eee5bceec63669ab61aa997ff6cceebb50ef75561c7002bed8988de2b9d1b40788 +"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": + version: 1.0.2 + resolution: "has-bigints@npm:1.0.2" + checksum: 10c0/724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b languageName: node linkType: hard @@ -10488,7 +10642,7 @@ __metadata: languageName: node linkType: hard -"has-proto@npm:^1.2.0": +"has-proto@npm:^1.0.3": version: 1.2.0 resolution: "has-proto@npm:1.2.0" dependencies: @@ -10497,6 +10651,13 @@ __metadata: languageName: node linkType: hard +"has-symbols@npm:^1.0.2": + version: 1.0.3 + resolution: "has-symbols@npm:1.0.3" + checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 + languageName: node + linkType: hard + "has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": version: 1.1.0 resolution: "has-symbols@npm:1.1.0" @@ -10779,12 +10940,12 @@ __metadata: linkType: hard "https-proxy-agent@npm:^7.0.1": - version: 7.0.6 - resolution: "https-proxy-agent@npm:7.0.6" + version: 7.0.5 + resolution: "https-proxy-agent@npm:7.0.5" dependencies: - agent-base: "npm:^7.1.2" + agent-base: "npm:^7.0.2" debug: "npm:4" - checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac + checksum: 10c0/2490e3acec397abeb88807db52cac59102d5ed758feee6df6112ab3ccd8325e8a1ce8bce6f4b66e5470eca102d31e425ace904242e4fa28dbe0c59c4bafa7b2c languageName: node linkType: hard @@ -10795,6 +10956,13 @@ __metadata: languageName: node linkType: hard +"human-signals@npm:^5.0.0": + version: 5.0.0 + resolution: "human-signals@npm:5.0.0" + checksum: 10c0/5a9359073fe17a8b58e5a085e9a39a950366d9f00217c4ff5878bd312e09d80f460536ea6a3f260b5943a01fe55c158d1cea3fc7bee3d0520aeef04f6d915c82 + languageName: node + linkType: hard + "humanize-ms@npm:^1.2.1": version: 1.2.1 resolution: "humanize-ms@npm:1.2.1" @@ -10888,15 +11056,39 @@ __metadata: languageName: node linkType: hard -"import-in-the-middle@npm:^1.11.2, import-in-the-middle@npm:^1.8.1": - version: 1.12.0 - resolution: "import-in-the-middle@npm:1.12.0" +"import-in-the-middle@npm:1.7.1": + version: 1.7.1 + resolution: "import-in-the-middle@npm:1.7.1" + dependencies: + acorn: "npm:^8.8.2" + acorn-import-assertions: "npm:^1.9.0" + cjs-module-lexer: "npm:^1.2.2" + module-details-from-path: "npm:^1.0.3" + checksum: 10c0/992619fba916a758a1ed06cd47b6ab47f25cbab61987a887e0971cdbadff8c619a2f27b06d630f6d12ac644b9171d15538299e36355c001c58ca1b85c87a8a5a + languageName: node + linkType: hard + +"import-in-the-middle@npm:^1.11.0": + version: 1.11.0 + resolution: "import-in-the-middle@npm:1.11.0" + dependencies: + acorn: "npm:^8.8.2" + acorn-import-attributes: "npm:^1.9.5" + cjs-module-lexer: "npm:^1.2.2" + module-details-from-path: "npm:^1.0.3" + checksum: 10c0/b5b52b635450f69640289b9b597fef796ef9aa6c231ae22583a1c2e97bd1b61aa0048d7fc143b4af3ec5bffb7d64131302ed0882f62e0e2d60f0a4f009daff3f + languageName: node + linkType: hard + +"import-in-the-middle@npm:^1.8.1": + version: 1.11.3 + resolution: "import-in-the-middle@npm:1.11.3" dependencies: acorn: "npm:^8.8.2" acorn-import-attributes: "npm:^1.9.5" cjs-module-lexer: "npm:^1.2.2" module-details-from-path: "npm:^1.0.3" - checksum: 10c0/e0f92bd27b9ef15099494ef0e8ba0b6fa6f0e643a3ff1d41b52530b6e4ff2a502099fff345f3ffb7c75f78cb189903b8d2d92fab5f8123badbc9e790cc19bbe7 + checksum: 10c0/1eac3b485dfa747224fd0542ade60197d2af5e76c1dc2e3628f41066c90ccd3f02cc0f0115a2741e2bd6f12456dcea270853954c54a04626b5bf5fb1cfd035d6 languageName: node linkType: hard @@ -11089,14 +11281,14 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.1.0": - version: 1.1.0 - resolution: "internal-slot@npm:1.1.0" +"internal-slot@npm:^1.0.7": + version: 1.0.7 + resolution: "internal-slot@npm:1.0.7" dependencies: es-errors: "npm:^1.3.0" - hasown: "npm:^2.0.2" - side-channel: "npm:^1.1.0" - checksum: 10c0/03966f5e259b009a9bf1a78d60da920df198af4318ec004f57b8aef1dd3fe377fbc8cce63a96e8c810010302654de89f9e19de1cd8ad0061d15be28a695465c7 + hasown: "npm:^2.0.0" + side-channel: "npm:^1.0.4" + checksum: 10c0/f8b294a4e6ea3855fc59551bbf35f2b832cf01fd5e6e2a97f5c201a071cc09b49048f856e484b67a6c721da5e55736c5b6ddafaf19e2dbeb4a3ff1821680de6c languageName: node linkType: hard @@ -11133,14 +11325,13 @@ __metadata: languageName: node linkType: hard -"is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": - version: 3.0.5 - resolution: "is-array-buffer@npm:3.0.5" +"is-array-buffer@npm:^3.0.4": + version: 3.0.4 + resolution: "is-array-buffer@npm:3.0.4" dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - get-intrinsic: "npm:^1.2.6" - checksum: 10c0/c5c9f25606e86dbb12e756694afbbff64bc8b348d1bc989324c037e1068695131930199d6ad381952715dad3a9569333817f0b1a72ce5af7f883ce802e49c83d + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.1" + checksum: 10c0/42a49d006cc6130bc5424eae113e948c146f31f9d24460fc0958f855d9d810e6fd2e4519bf19aab75179af9c298ea6092459d8cafdec523cd19e529b26eab860 languageName: node linkType: hard @@ -11151,21 +11342,12 @@ __metadata: languageName: node linkType: hard -"is-async-function@npm:^2.0.0": - version: 2.0.0 - resolution: "is-async-function@npm:2.0.0" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/787bc931576aad525d751fc5ce211960fe91e49ac84a5c22d6ae0bc9541945fbc3f686dc590c3175722ce4f6d7b798a93f6f8ff4847fdb2199aea6f4baf5d668 - languageName: node - linkType: hard - -"is-bigint@npm:^1.1.0": - version: 1.1.0 - resolution: "is-bigint@npm:1.1.0" +"is-bigint@npm:^1.0.1": + version: 1.0.4 + resolution: "is-bigint@npm:1.0.4" dependencies: - has-bigints: "npm:^1.0.2" - checksum: 10c0/f4f4b905ceb195be90a6ea7f34323bf1c18e3793f18922e3e9a73c684c29eeeeff5175605c3a3a74cc38185fe27758f07efba3dbae812e5c5afbc0d2316b40e4 + has-bigints: "npm:^1.0.1" + checksum: 10c0/eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696 languageName: node linkType: hard @@ -11178,13 +11360,13 @@ __metadata: languageName: node linkType: hard -"is-boolean-object@npm:^1.2.1": - version: 1.2.1 - resolution: "is-boolean-object@npm:1.2.1" +"is-boolean-object@npm:^1.1.0": + version: 1.1.2 + resolution: "is-boolean-object@npm:1.1.2" dependencies: - call-bound: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/2ef601d255a39fdbde79cfe6be80c27b47430ed6712407f29b17d002e20f64c1e3d6692f1d842ba16bf1e9d8ddf1c4f13cac3ed7d9a4a21290f44879ebb4e8f5 + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7 languageName: node linkType: hard @@ -11195,7 +11377,7 @@ __metadata: languageName: node linkType: hard -"is-callable@npm:^1.1.3, is-callable@npm:^1.2.7": +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f @@ -11213,12 +11395,12 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1, is-core-module@npm:^2.16.0, is-core-module@npm:^2.5.0": - version: 2.16.1 - resolution: "is-core-module@npm:2.16.1" +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1, is-core-module@npm:^2.5.0": + version: 2.15.1 + resolution: "is-core-module@npm:2.15.1" dependencies: hasown: "npm:^2.0.2" - checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd + checksum: 10c0/53432f10c69c40bfd2fa8914133a68709ff9498c86c3bf5fca3cdf3145a56fd2168cbf4a43b29843a6202a120a5f9c5ffba0a4322e1e3441739bc0b641682612 languageName: node linkType: hard @@ -11231,24 +11413,21 @@ __metadata: languageName: node linkType: hard -"is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2": - version: 1.0.2 - resolution: "is-data-view@npm:1.0.2" +"is-data-view@npm:^1.0.1": + version: 1.0.1 + resolution: "is-data-view@npm:1.0.1" dependencies: - call-bound: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.6" is-typed-array: "npm:^1.1.13" - checksum: 10c0/ef3548a99d7e7f1370ce21006baca6d40c73e9f15c941f89f0049c79714c873d03b02dae1c64b3f861f55163ecc16da06506c5b8a1d4f16650b3d9351c380153 + checksum: 10c0/a3e6ec84efe303da859107aed9b970e018e2bee7ffcb48e2f8096921a493608134240e672a2072577e5f23a729846241d9634806e8a0e51d9129c56d5f65442d languageName: node linkType: hard -"is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0": - version: 1.1.0 - resolution: "is-date-object@npm:1.1.0" +"is-date-object@npm:^1.0.1": + version: 1.0.5 + resolution: "is-date-object@npm:1.0.5" dependencies: - call-bound: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/1a4d199c8e9e9cac5128d32e6626fa7805175af9df015620ac0d5d45854ccf348ba494679d872d37301032e35a54fc7978fba1687e8721b2139aea7870cafa2f + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e languageName: node linkType: hard @@ -11321,15 +11500,6 @@ __metadata: languageName: node linkType: hard -"is-finalizationregistry@npm:^1.1.0": - version: 1.1.1 - resolution: "is-finalizationregistry@npm:1.1.1" - dependencies: - call-bound: "npm:^1.0.3" - checksum: 10c0/818dff679b64f19e228a8205a1e2d09989a98e98def3a817f889208cfcbf918d321b251aadf2c05918194803ebd2eb01b14fc9d0b2bea53d984f4137bfca5e97 - languageName: node - linkType: hard - "is-finite@npm:^1.0.0": version: 1.1.0 resolution: "is-finite@npm:1.1.0" @@ -11367,15 +11537,6 @@ __metadata: languageName: node linkType: hard -"is-generator-function@npm:^1.0.10": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/df03514df01a6098945b5a0cfa1abff715807c8e72f57c49a0686ad54b3b74d394e2d8714e6f709a71eb00c9630d48e73ca1796c1ccc84ac95092c1fecc0d98b - languageName: node - linkType: hard - "is-glob@npm:^3.1.0": version: 3.1.0 resolution: "is-glob@npm:3.1.0" @@ -11408,20 +11569,19 @@ __metadata: languageName: node linkType: hard -"is-map@npm:^2.0.3": +"is-negative-zero@npm:^2.0.3": version: 2.0.3 - resolution: "is-map@npm:2.0.3" - checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc + resolution: "is-negative-zero@npm:2.0.3" + checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e languageName: node linkType: hard -"is-number-object@npm:^1.1.1": - version: 1.1.1 - resolution: "is-number-object@npm:1.1.1" +"is-number-object@npm:^1.0.4": + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" dependencies: - call-bound: "npm:^1.0.3" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/97b451b41f25135ff021d85c436ff0100d84a039bb87ffd799cbcdbea81ef30c464ced38258cdd34f080be08fc3b076ca1f472086286d2aa43521d6ec6a79f53 + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b languageName: node linkType: hard @@ -11499,31 +11659,22 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.0.3, is-regex@npm:^1.2.1": - version: 1.2.1 - resolution: "is-regex@npm:1.2.1" +"is-regex@npm:^1.0.3, is-regex@npm:^1.1.4": + version: 1.1.4 + resolution: "is-regex@npm:1.1.4" dependencies: - call-bound: "npm:^1.0.2" - gopd: "npm:^1.2.0" - has-tostringtag: "npm:^1.0.2" - hasown: "npm:^2.0.2" - checksum: 10c0/1d3715d2b7889932349241680032e85d0b492cfcb045acb75ffc2c3085e8d561184f1f7e84b6f8321935b4aea39bc9c6ba74ed595b57ce4881a51dfdbc214e04 - languageName: node - linkType: hard - -"is-set@npm:^2.0.3": - version: 2.0.3 - resolution: "is-set@npm:2.0.3" - checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1 languageName: node linkType: hard -"is-shared-array-buffer@npm:^1.0.4": - version: 1.0.4 - resolution: "is-shared-array-buffer@npm:1.0.4" +"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "is-shared-array-buffer@npm:1.0.3" dependencies: - call-bound: "npm:^1.0.3" - checksum: 10c0/65158c2feb41ff1edd6bbd6fd8403a69861cf273ff36077982b5d4d68e1d59278c71691216a4a64632bd76d4792d4d1d2553901b6666d84ade13bba5ea7bc7db + call-bind: "npm:^1.0.7" + checksum: 10c0/adc11ab0acbc934a7b9e5e9d6c588d4ec6682f6fea8cda5180721704fa32927582ede5b123349e32517fdadd07958973d24716c80e7ab198970c47acc09e59c7 languageName: node linkType: hard @@ -11550,24 +11701,38 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.7, is-string@npm:^1.1.1": - version: 1.1.1 - resolution: "is-string@npm:1.1.1" +"is-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "is-stream@npm:3.0.0" + checksum: 10c0/eb2f7127af02ee9aa2a0237b730e47ac2de0d4e76a4a905a50a11557f2339df5765eaea4ceb8029f1efa978586abe776908720bfcb1900c20c6ec5145f6f29d8 + languageName: node + linkType: hard + +"is-string@npm:^1.0.5": + version: 1.0.7 + resolution: "is-string@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6 + languageName: node + linkType: hard + +"is-string@npm:^1.0.7": + version: 1.1.0 + resolution: "is-string@npm:1.1.0" dependencies: - call-bound: "npm:^1.0.3" + call-bind: "npm:^1.0.7" has-tostringtag: "npm:^1.0.2" - checksum: 10c0/2f518b4e47886bb81567faba6ffd0d8a8333cf84336e2e78bf160693972e32ad00fe84b0926491cc598dee576fdc55642c92e62d0cbe96bf36f643b6f956f94d + checksum: 10c0/2781bce7bfdb00276d000a7aafccad8038a7b5cb06abbfc638417a705dd41bca259977af78731dc8a87f170783c94c9f684bc086fc4856b623c1fd942c509b6b languageName: node linkType: hard -"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": - version: 1.1.1 - resolution: "is-symbol@npm:1.1.1" +"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": + version: 1.0.4 + resolution: "is-symbol@npm:1.0.4" dependencies: - call-bound: "npm:^1.0.2" - has-symbols: "npm:^1.1.0" - safe-regex-test: "npm:^1.1.0" - checksum: 10c0/f08f3e255c12442e833f75a9e2b84b2d4882fdfd920513cf2a4a2324f0a5b076c8fd913778e3ea5d258d5183e9d92c0cd20e04b03ab3df05316b049b2670af1e + has-symbols: "npm:^1.0.2" + checksum: 10c0/9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7 languageName: node linkType: hard @@ -11589,12 +11754,12 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15": - version: 1.1.15 - resolution: "is-typed-array@npm:1.1.15" +"is-typed-array@npm:^1.1.13": + version: 1.1.13 + resolution: "is-typed-array@npm:1.1.13" dependencies: - which-typed-array: "npm:^1.1.16" - checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4 + which-typed-array: "npm:^1.1.14" + checksum: 10c0/fa5cb97d4a80e52c2cc8ed3778e39f175a1a2ae4ddf3adae3187d69586a1fd57cfa0b095db31f66aa90331e9e3da79184cea9c6abdcd1abc722dc3c3edd51cca languageName: node linkType: hard @@ -11619,29 +11784,12 @@ __metadata: languageName: node linkType: hard -"is-weakmap@npm:^2.0.2": - version: 2.0.2 - resolution: "is-weakmap@npm:2.0.2" - checksum: 10c0/443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299 - languageName: node - linkType: hard - -"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.0": - version: 1.1.0 - resolution: "is-weakref@npm:1.1.0" - dependencies: - call-bound: "npm:^1.0.2" - checksum: 10c0/aa835f62e29cb60132ecb3ec7d11bd0f39ec7322325abe8412b805aef47153ec2daefdb21759b049711c674f49b13202a31d8d126bcdff7d8671c78babd4ae5b - languageName: node - linkType: hard - -"is-weakset@npm:^2.0.3": - version: 2.0.4 - resolution: "is-weakset@npm:2.0.4" +"is-weakref@npm:^1.0.2": + version: 1.0.2 + resolution: "is-weakref@npm:1.0.2" dependencies: - call-bound: "npm:^1.0.3" - get-intrinsic: "npm:^1.2.6" - checksum: 10c0/6491eba08acb8dc9532da23cb226b7d0192ede0b88f16199e592e4769db0a077119c1f5d2283d1e0d16d739115f70046e887e477eb0e66cd90e1bb29f28ba647 + call-bind: "npm:^1.0.2" + checksum: 10c0/1545c5d172cb690c392f2136c23eec07d8d78a7f57d0e41f10078aa4f5daf5d7f57b6513a67514ab4f073275ad00c9822fc8935e00229d0a2089e1c02685d4b1 languageName: node linkType: hard @@ -12324,12 +12472,12 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^2.4.1": - version: 2.4.2 - resolution: "jiti@npm:2.4.2" +"jiti@npm:^1.19.1": + version: 1.21.6 + resolution: "jiti@npm:1.21.6" bin: - jiti: lib/jiti-cli.mjs - checksum: 10c0/4ceac133a08c8faff7eac84aabb917e85e8257f5ad659e843004ce76e981c457c390a220881748ac67ba1b940b9b729b30fb85cbaf6e7989f04b6002c94da331 + jiti: bin/jiti.js + checksum: 10c0/05b9ed58cd30d0c3ccd3c98209339e74f50abd9a17e716f65db46b6a35812103f6bde6e134be7124d01745586bca8cc5dae1d0d952267c3ebe55171949c32e56 languageName: node linkType: hard @@ -12469,12 +12617,21 @@ __metadata: languageName: node linkType: hard +"jsesc@npm:^2.5.1": + version: 2.5.2 + resolution: "jsesc@npm:2.5.2" + bin: + jsesc: bin/jsesc + checksum: 10c0/dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 + languageName: node + linkType: hard + "jsesc@npm:^3.0.2": - version: 3.1.0 - resolution: "jsesc@npm:3.1.0" + version: 3.0.2 + resolution: "jsesc@npm:3.0.2" bin: jsesc: bin/jsesc - checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1 + checksum: 10c0/ef22148f9e793180b14d8a145ee6f9f60f301abf443288117b4b6c53d0ecd58354898dc506ccbb553a5f7827965cd38bc5fb726575aae93c5e8915e2de8290e1 languageName: node linkType: hard @@ -12802,6 +12959,13 @@ __metadata: languageName: node linkType: hard +"libbase64@npm:1.2.1": + version: 1.2.1 + resolution: "libbase64@npm:1.2.1" + checksum: 10c0/908db9dc88cbcd9e1b9355c78b9fefde5034d933a50e823bbbb6008a56908de1e5183e25bf648e9e7fe907f53e10e11676d5ac89fd624a300c46a705556182a5 + languageName: node + linkType: hard + "libbase64@npm:1.3.0": version: 1.3.0 resolution: "libbase64@npm:1.3.0" @@ -12809,29 +12973,48 @@ __metadata: languageName: node linkType: hard -"libmime@npm:5.3.6": - version: 5.3.6 - resolution: "libmime@npm:5.3.6" +"libmime@npm:5.2.0": + version: 5.2.0 + resolution: "libmime@npm:5.2.0" + dependencies: + encoding-japanese: "npm:2.0.0" + iconv-lite: "npm:0.6.3" + libbase64: "npm:1.2.1" + libqp: "npm:2.0.1" + checksum: 10c0/22a75d7aad8f01bed7d9b32270a40a32c4d4e44070edda1067ea5229df99a09f34aedf3481693394aa998fa8375b6c90d1c651b491655692cb313561c5a48762 + languageName: node + linkType: hard + +"libmime@npm:5.3.5": + version: 5.3.5 + resolution: "libmime@npm:5.3.5" dependencies: - encoding-japanese: "npm:2.2.0" + encoding-japanese: "npm:2.1.0" iconv-lite: "npm:0.6.3" libbase64: "npm:1.3.0" - libqp: "npm:2.1.1" - checksum: 10c0/54afa19f3500fe14b7562fd055518f1d82bf0f1076690a9b097d1a126322de7425d6d29aa9db9b51bc41b2ed16eacff65d7f30cd3622f7010f60993dfc79041e + libqp: "npm:2.1.0" + checksum: 10c0/4bf321cd22e9dd832493a0aa0de149d363bbf6bf54f8981e0219dd61c0a0eb28095c752c3b859aa574911017354bfcafe4cef76fdbc37bd0ef3f03136856a397 languageName: node linkType: hard "libphonenumber-js@npm:^1.10.53": - version: 1.11.17 - resolution: "libphonenumber-js@npm:1.11.17" - checksum: 10c0/102bc66f82b4fb86983f3c68d7b8eafd5e5f82be48bcd87c4c3a723b08e62d2deffa78a5d646698f2ba163f4e0d5722d99661ba9ec36f12b5a108fcdf8731059 + version: 1.11.7 + resolution: "libphonenumber-js@npm:1.11.7" + checksum: 10c0/c22a7d5b479393b71403b9be704669ca03de92adb051a1c5385d237293e2a89385732ad2406053bd72275e8d2e872dc1ee7c46ffc6de632a3b4d582023362635 + languageName: node + linkType: hard + +"libqp@npm:2.0.1": + version: 2.0.1 + resolution: "libqp@npm:2.0.1" + checksum: 10c0/c52e51c70180fbf0b000036de33ed976da1f8355fd63feffbbf5a9653a816e9169917b1ce28b289a5006b28e44b2d84d234fdedbdfefc0de4802867aa03537df languageName: node linkType: hard -"libqp@npm:2.1.1": - version: 2.1.1 - resolution: "libqp@npm:2.1.1" - checksum: 10c0/6e78f0676cd2424b3ddbf3273ab8539871299310dba433b7e2ec10a41830acecb4d074ea8b78b706dea349996f011ce519d92f81ede712c4824a2dd402aa376c +"libqp@npm:2.1.0": + version: 2.1.0 + resolution: "libqp@npm:2.1.0" + checksum: 10c0/98d371def6a47e4c7b29412f220870727415e4e90f2c875e3f5d8730972b39daee5e4c640dad34d9c3648cd91a350a98bd266d5c0bfcd75181ad4299935fc86c languageName: node linkType: hard @@ -13228,31 +13411,31 @@ __metadata: linkType: hard "mailparser@npm:^3.6.4": - version: 3.7.2 - resolution: "mailparser@npm:3.7.2" + version: 3.7.1 + resolution: "mailparser@npm:3.7.1" dependencies: - encoding-japanese: "npm:2.2.0" + encoding-japanese: "npm:2.1.0" he: "npm:1.2.0" html-to-text: "npm:9.0.5" iconv-lite: "npm:0.6.3" - libmime: "npm:5.3.6" + libmime: "npm:5.3.5" linkify-it: "npm:5.0.0" - mailsplit: "npm:5.4.2" - nodemailer: "npm:6.9.16" + mailsplit: "npm:5.4.0" + nodemailer: "npm:6.9.13" punycode.js: "npm:2.3.1" - tlds: "npm:1.255.0" - checksum: 10c0/dc37e0e2d6885f777cc4cf40d1fc60ca247632428a55986a6f665705a8fca762de5bf8b3b14fd4eac97d6d8a866827f4c99400d25c7eb9879d7906871a3381c0 + tlds: "npm:1.252.0" + checksum: 10c0/01dbc871486cff73a1745626f886a9854f827600aed01004f706fe1c88d3334f19984076cba26deae8ed5d6ed45bde4a16e4095ee4f9bfc1658cc221001e8bda languageName: node linkType: hard -"mailsplit@npm:5.4.2": - version: 5.4.2 - resolution: "mailsplit@npm:5.4.2" +"mailsplit@npm:5.4.0": + version: 5.4.0 + resolution: "mailsplit@npm:5.4.0" dependencies: - libbase64: "npm:1.3.0" - libmime: "npm:5.3.6" - libqp: "npm:2.1.1" - checksum: 10c0/14fb8722b7416193bc7af918d8529ad2c2edb471b78c7f26116c95a8a325c33355504ba83c95dbac4ce69a3a2557bb9e0a9b2a0c8585ab5df892b51159a99e52 + libbase64: "npm:1.2.1" + libmime: "npm:5.2.0" + libqp: "npm:2.0.1" + checksum: 10c0/b0e1ce1866ea44413ca0ee8b7291afb671cb3f7ced2a53c644e3097b64b74079a4cb1ec02c9aaaef6a9927a71187304ac1a809852503aba2f829b67ce2d41496 languageName: node linkType: hard @@ -13300,22 +13483,23 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^14.0.3": - version: 14.0.3 - resolution: "make-fetch-happen@npm:14.0.3" +"make-fetch-happen@npm:^13.0.0": + version: 13.0.1 + resolution: "make-fetch-happen@npm:13.0.1" dependencies: - "@npmcli/agent": "npm:^3.0.0" - cacache: "npm:^19.0.1" + "@npmcli/agent": "npm:^2.0.0" + cacache: "npm:^18.0.0" http-cache-semantics: "npm:^4.1.1" + is-lambda: "npm:^1.0.1" minipass: "npm:^7.0.2" - minipass-fetch: "npm:^4.0.0" + minipass-fetch: "npm:^3.0.0" minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^1.0.0" - proc-log: "npm:^5.0.0" + negotiator: "npm:^0.6.3" + proc-log: "npm:^4.2.0" promise-retry: "npm:^2.0.1" - ssri: "npm:^12.0.0" - checksum: 10c0/c40efb5e5296e7feb8e37155bde8eb70bc57d731b1f7d90e35a092fde403d7697c56fb49334d92d330d6f1ca29a98142036d6480a12681133a0a1453164cb2f0 + ssri: "npm:^10.0.0" + checksum: 10c0/df5f4dbb6d98153b751bccf4dc4cc500de85a96a9331db9805596c46aa9f99d9555983954e6c1266d9f981ae37a9e4647f42b9a4bb5466f867f4012e582c9e7e languageName: node linkType: hard @@ -13471,13 +13655,6 @@ __metadata: languageName: node linkType: hard -"math-intrinsics@npm:^1.0.0, math-intrinsics@npm:^1.1.0": - version: 1.1.0 - resolution: "math-intrinsics@npm:1.1.0" - checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f - languageName: node - linkType: hard - "mdurl@npm:^2.0.0": version: 2.0.0 resolution: "mdurl@npm:2.0.0" @@ -13569,10 +13746,10 @@ __metadata: languageName: node linkType: hard -"merge-descriptors@npm:1.0.3": - version: 1.0.3 - resolution: "merge-descriptors@npm:1.0.3" - checksum: 10c0/866b7094afd9293b5ea5dcd82d71f80e51514bed33b4c4e9f516795dc366612a4cbb4dc94356e943a8a6914889a914530badff27f397191b9b75cda20b6bae93 +"merge-descriptors@npm:1.0.1": + version: 1.0.1 + resolution: "merge-descriptors@npm:1.0.1" + checksum: 10c0/b67d07bd44cfc45cebdec349bb6e1f7b077ee2fd5beb15d1f7af073849208cb6f144fe403e29a36571baf3f4e86469ac39acf13c318381e958e186b2766f54ec languageName: node linkType: hard @@ -13676,6 +13853,13 @@ __metadata: languageName: node linkType: hard +"mimic-fn@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-fn@npm:4.0.0" + checksum: 10c0/de9cc32be9996fd941e512248338e43407f63f6d497abe8441fa33447d922e927de54d4cc3c1a3c6d652857acd770389d5a3823f311a744132760ce2be15ccbf + languageName: node + linkType: hard + "mimic-response@npm:^3.1.0": version: 3.1.0 resolution: "mimic-response@npm:3.1.0" @@ -13787,18 +13971,18 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^4.0.0": - version: 4.0.0 - resolution: "minipass-fetch@npm:4.0.0" +"minipass-fetch@npm:^3.0.0": + version: 3.0.5 + resolution: "minipass-fetch@npm:3.0.5" dependencies: encoding: "npm:^0.1.13" minipass: "npm:^7.0.3" minipass-sized: "npm:^1.0.3" - minizlib: "npm:^3.0.1" + minizlib: "npm:^2.1.2" dependenciesMeta: encoding: optional: true - checksum: 10c0/7fa30ce7c373fb6f94c086b374fff1589fd7e78451855d2d06c2e2d9df936d131e73e952163063016592ed3081444bd8d1ea608533313b0149156ce23311da4b + checksum: 10c0/9d702d57f556274286fdd97e406fc38a2f5c8d15e158b498d7393b1105974b21249289ec571fa2b51e038a4872bfc82710111cf75fae98c662f3d6f95e72152b languageName: node linkType: hard @@ -13855,7 +14039,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": version: 7.1.2 resolution: "minipass@npm:7.1.2" checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 @@ -13871,7 +14055,7 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1": +"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" dependencies: @@ -13881,16 +14065,6 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^3.0.1": - version: 3.0.1 - resolution: "minizlib@npm:3.0.1" - dependencies: - minipass: "npm:^7.0.4" - rimraf: "npm:^5.0.5" - checksum: 10c0/82f8bf70da8af656909a8ee299d7ed3b3372636749d29e105f97f20e88971be31f5ed7642f2e898f00283b68b701cc01307401cdc209b0efc5dd3818220e5093 - languageName: node - linkType: hard - "mississippi@npm:^3.0.0": version: 3.0.0 resolution: "mississippi@npm:3.0.0" @@ -14338,7 +14512,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:*, mkdirp@npm:^3.0.1": +"mkdirp@npm:*": version: 3.0.1 resolution: "mkdirp@npm:3.0.1" bin: @@ -14411,6 +14585,13 @@ __metadata: languageName: node linkType: hard +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc + languageName: node + linkType: hard + "ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" @@ -14517,7 +14698,7 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:0.6.3": +"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 @@ -14531,13 +14712,6 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:^1.0.0": - version: 1.0.0 - resolution: "negotiator@npm:1.0.0" - checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b - languageName: node - linkType: hard - "neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" @@ -14562,11 +14736,11 @@ __metadata: linkType: hard "node-abi@npm:^3.3.0": - version: 3.71.0 - resolution: "node-abi@npm:3.71.0" + version: 3.67.0 + resolution: "node-abi@npm:3.67.0" dependencies: semver: "npm:^7.3.5" - checksum: 10c0/dbd0792ea729329cd9d099f28a5681ff9e8a6db48cf64e1437bf6a7fd669009d1e758a784619a1c4cc8bfd1ed17162f042c787654edf19a1f64b5018457c9c1f + checksum: 10c0/72ce2edbdfb84745bc201a4e48aa7146fd88a0d2c80046b6b17f28439c9a7683eab846f40f1e819349c31f7d9331ed5c50d1e741208d938dd5f38b29cab2275e languageName: node linkType: hard @@ -14671,22 +14845,22 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 11.0.0 - resolution: "node-gyp@npm:11.0.0" + version: 10.2.0 + resolution: "node-gyp@npm:10.2.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" glob: "npm:^10.3.10" graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^14.0.3" - nopt: "npm:^8.0.0" - proc-log: "npm:^5.0.0" + make-fetch-happen: "npm:^13.0.0" + nopt: "npm:^7.0.0" + proc-log: "npm:^4.1.0" semver: "npm:^7.3.5" - tar: "npm:^7.4.3" - which: "npm:^5.0.0" + tar: "npm:^6.2.1" + which: "npm:^4.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10c0/a3b885bbee2d271f1def32ba2e30ffcf4562a3db33af06b8b365e053153e2dd2051b9945783c3c8e852d26a0f20f65b251c7e83361623383a99635c0280ee573 + checksum: 10c0/00630d67dbd09a45aee0a5d55c05e3916ca9e6d427ee4f7bc392d2d3dc5fad7449b21fc098dd38260a53d9dcc9c879b36704a1994235d4707e7271af7e9a835b languageName: node linkType: hard @@ -14697,17 +14871,24 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.19": - version: 2.0.19 - resolution: "node-releases@npm:2.0.19" - checksum: 10c0/52a0dbd25ccf545892670d1551690fe0facb6a471e15f2cfa1b20142a5b255b3aa254af5f59d6ecb69c2bec7390bc643c43aa63b13bf5e64b6075952e716b1aa +"node-releases@npm:^2.0.18": + version: 2.0.18 + resolution: "node-releases@npm:2.0.18" + checksum: 10c0/786ac9db9d7226339e1dc84bbb42007cb054a346bd9257e6aa154d294f01bc6a6cddb1348fa099f079be6580acbb470e3c048effd5f719325abd0179e566fd27 languageName: node linkType: hard -"nodemailer@npm:6.9.16, nodemailer@npm:^6.9.2": - version: 6.9.16 - resolution: "nodemailer@npm:6.9.16" - checksum: 10c0/9fd73ab4ab5b81544c3c9820afbe386369aba442f997b2f58d171222a898a7aed580fc100bfe6eebc194f18ba6e169d67ee40ca64d32d69022d89e575cef97a4 +"nodemailer@npm:6.9.13": + version: 6.9.13 + resolution: "nodemailer@npm:6.9.13" + checksum: 10c0/4d6899f45abb7760a7d3b4d1046de7e08e80a471b84d1f09065a25941ded482e7f9877be248550e681e0270383cb9299f6caded507cbc0e917341bb137cc94a4 + languageName: node + linkType: hard + +"nodemailer@npm:^6.9.2": + version: 6.9.14 + resolution: "nodemailer@npm:6.9.14" + checksum: 10c0/2542986849bc6ec2bf12fb7b72226da0ce9c6a0946216dea020d9eedee3ac1a4eb2413f59772a3ddd4bb9188d5ce859167a030c065719473f71319e052a319dc languageName: node linkType: hard @@ -14734,7 +14915,7 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^7.2.0": +"nopt@npm:^7.0.0, nopt@npm:^7.2.0": version: 7.2.1 resolution: "nopt@npm:7.2.1" dependencies: @@ -14745,17 +14926,6 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^8.0.0": - version: 8.0.0 - resolution: "nopt@npm:8.0.0" - dependencies: - abbrev: "npm:^2.0.0" - bin: - nopt: bin/nopt.js - checksum: 10c0/19cb986f79abaca2d0f0b560021da7b32ee6fcc3de48f3eaeb0c324d36755c17754f886a754c091f01f740c17caf7d6aea8237b7fbaf39f476ae5e30a249f18f - languageName: node - linkType: hard - "normalize-package-data@npm:^2.0.0, normalize-package-data@npm:^2.3.0, normalize-package-data@npm:^2.3.2, normalize-package-data@npm:^2.3.4, normalize-package-data@npm:^2.3.5, normalize-package-data@npm:^2.4.0, normalize-package-data@npm:^2.5.0": version: 2.5.0 resolution: "normalize-package-data@npm:2.5.0" @@ -14885,6 +15055,15 @@ __metadata: languageName: node linkType: hard +"npm-run-path@npm:^5.1.0": + version: 5.3.0 + resolution: "npm-run-path@npm:5.3.0" + dependencies: + path-key: "npm:^4.0.0" + checksum: 10c0/124df74820c40c2eb9a8612a254ea1d557ddfab1581c3e751f825e3e366d9f00b0d76a3c94ecd8398e7f3eee193018622677e95816e8491f0797b21e30b2deba + languageName: node + linkType: hard + "npmlog@npm:^4.1.2": version: 4.1.2 resolution: "npmlog@npm:4.1.2" @@ -14938,9 +15117,9 @@ __metadata: linkType: hard "nwsapi@npm:^2.2.0": - version: 2.2.16 - resolution: "nwsapi@npm:2.2.16" - checksum: 10c0/0aa0637f4d51043d0183d994e08336bae996b03b42984381bf09ebdf3ff4909c018eda6b2a8aba0a08f3ea8303db8a0dad0608b38dc0bff15fd87017286ae21a + version: 2.2.12 + resolution: "nwsapi@npm:2.2.12" + checksum: 10c0/95e9623d63df111405503df8c5d800e26f71675d319e2c9c70cddfa31e5ace1d3f8b6d98d354544fc156a1506d920ec291e303fab761e4f99296868e199a466e languageName: node linkType: hard @@ -14976,7 +15155,7 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.13.3": +"object-inspect@npm:^1.13.1, object-inspect@npm:^1.13.3": version: 1.13.3 resolution: "object-inspect@npm:1.13.3" checksum: 10c0/cc3f15213406be89ffdc54b525e115156086796a515410a8d390215915db9f23c8eab485a06f1297402f440a33715fe8f71a528c1dcbad6e1a3bcaf5a46921d4 @@ -15006,21 +15185,19 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.7": - version: 4.1.7 - resolution: "object.assign@npm:4.1.7" +"object.assign@npm:^4.1.5": + version: 4.1.5 + resolution: "object.assign@npm:4.1.5" dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" + call-bind: "npm:^1.0.5" define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - has-symbols: "npm:^1.1.0" + has-symbols: "npm:^1.0.3" object-keys: "npm:^1.1.1" - checksum: 10c0/3b2732bd860567ea2579d1567525168de925a8d852638612846bd8082b3a1602b7b89b67b09913cbb5b9bd6e95923b2ae73580baa9d99cb4e990564e8cbf5ddc + checksum: 10c0/60108e1fa2706f22554a4648299b0955236c62b3685c52abf4988d14fffb0e7731e00aa8c6448397e3eb63d087dcc124a9f21e1980f36d0b2667f3c18bacd469 languageName: node linkType: hard -"object.fromentries@npm:^2.0.8": +"object.fromentries@npm:^2.0.7": version: 2.0.8 resolution: "object.fromentries@npm:2.0.8" dependencies: @@ -15047,7 +15224,7 @@ __metadata: languageName: node linkType: hard -"object.groupby@npm:^1.0.3": +"object.groupby@npm:^1.0.1": version: 1.0.3 resolution: "object.groupby@npm:1.0.3" dependencies: @@ -15067,15 +15244,14 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.2.0": - version: 1.2.1 - resolution: "object.values@npm:1.2.1" +"object.values@npm:^1.1.7": + version: 1.2.0 + resolution: "object.values@npm:1.2.0" dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" + call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" es-object-atoms: "npm:^1.0.0" - checksum: 10c0/3c47814fdc64842ae3d5a74bc9d06bdd8d21563c04d9939bf6716a9c00596a4ebc342552f8934013d1ec991c74e3671b26710a0c51815f0b603795605ab6b2c9 + checksum: 10c0/15809dc40fd6c5529501324fec5ff08570b7d70fb5ebbe8e2b3901afec35cf2b3dc484d1210c6c642cd3e7e0a5e18dd1d6850115337fef46bdae14ab0cb18ac3 languageName: node linkType: hard @@ -15129,6 +15305,15 @@ __metadata: languageName: node linkType: hard +"onetime@npm:^6.0.0": + version: 6.0.0 + resolution: "onetime@npm:6.0.0" + dependencies: + mimic-fn: "npm:^4.0.0" + checksum: 10c0/4eef7c6abfef697dd4479345a4100c382d73c149d2d56170a54a07418c50816937ad09500e1ed1e79d235989d073a9bade8557122aee24f0576ecde0f392bb6c + languageName: node + linkType: hard + "open@npm:7": version: 7.4.2 resolution: "open@npm:7.4.2" @@ -15139,6 +15324,18 @@ __metadata: languageName: node linkType: hard +"opentelemetry-instrumentation-fetch-node@npm:1.2.3": + version: 1.2.3 + resolution: "opentelemetry-instrumentation-fetch-node@npm:1.2.3" + dependencies: + "@opentelemetry/instrumentation": "npm:^0.46.0" + "@opentelemetry/semantic-conventions": "npm:^1.17.0" + peerDependencies: + "@opentelemetry/api": ^1.6.0 + checksum: 10c0/18b077638a35896c2c642d4b8a88562a4cfb1936647e6c0b20f6f92b599703f8ea1f400782f00123f3b0a1aaf51367af8faf2ed3b94d288261ca6f99eef5ff44 + languageName: node + linkType: hard + "optionator@npm:^0.9.3": version: 0.9.4 resolution: "optionator@npm:0.9.4" @@ -15326,13 +15523,6 @@ __metadata: languageName: node linkType: hard -"p-map@npm:^7.0.2": - version: 7.0.3 - resolution: "p-map@npm:7.0.3" - checksum: 10c0/46091610da2b38ce47bcd1d8b4835a6fa4e832848a6682cf1652bc93915770f4617afc844c10a77d1b3e56d2472bb2d5622353fa3ead01a7f42b04fc8e744a5c - languageName: node - linkType: hard - "p-pipe@npm:^1.2.0": version: 1.2.0 resolution: "p-pipe@npm:1.2.0" @@ -15398,9 +15588,9 @@ __metadata: linkType: hard "package-json-from-dist@npm:^1.0.0": - version: 1.0.1 - resolution: "package-json-from-dist@npm:1.0.1" - checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b + version: 1.0.0 + resolution: "package-json-from-dist@npm:1.0.0" + checksum: 10c0/e3ffaf6ac1040ab6082a658230c041ad14e72fabe99076a2081bb1d5d41210f11872403fc09082daf4387fc0baa6577f96c9c0e94c90c394fd57794b66aa4033 languageName: node linkType: hard @@ -15441,12 +15631,12 @@ __metadata: linkType: hard "parse-imports@npm:^2.1.1": - version: 2.2.1 - resolution: "parse-imports@npm:2.2.1" + version: 2.1.1 + resolution: "parse-imports@npm:2.1.1" dependencies: es-module-lexer: "npm:^1.5.3" slashes: "npm:^3.0.12" - checksum: 10c0/bc541ce4ef2ff77d53247de39a956e0ee7a1a4b9b175c3e0f898222fe7994595f011491154db4ed408cbaf5049ede9d0b6624125565be208e973a54420cbe069 + checksum: 10c0/c9bb0b4e1823f84f034d2d7bd2b37415b1715a5c963fda14968c706186b48b02c10e97d04bce042b9dcd679b42f29c391ea120799ddf581c7f54786edd99e3a9 languageName: node linkType: hard @@ -15515,12 +15705,12 @@ __metadata: linkType: hard "parse5-htmlparser2-tree-adapter@npm:^7.0.0": - version: 7.1.0 - resolution: "parse5-htmlparser2-tree-adapter@npm:7.1.0" + version: 7.0.0 + resolution: "parse5-htmlparser2-tree-adapter@npm:7.0.0" dependencies: - domhandler: "npm:^5.0.3" + domhandler: "npm:^5.0.2" parse5: "npm:^7.0.0" - checksum: 10c0/e5a4e0b834c84c9e244b5749f8d007f4baaeafac7a1da2c54be3421ffd9ef8fdec4f198bf55cda22e88e6ba95e9943f6ed5aa3ae5900b39972ebf5dc8c3f4722 + checksum: 10c0/e820cacb8486e6f7ede403327d18480df086d70e32ede2f6654d8c3a8b4b8dc4a4d5c21c03c18a92ba2466c513b93ca63be4a138dd73cd0995f384eb3b9edf11 languageName: node linkType: hard @@ -15539,11 +15729,11 @@ __metadata: linkType: hard "parse5@npm:^7.0.0": - version: 7.2.1 - resolution: "parse5@npm:7.2.1" + version: 7.1.2 + resolution: "parse5@npm:7.1.2" dependencies: - entities: "npm:^4.5.0" - checksum: 10c0/829d37a0c709215a887e410a7118d754f8e1afd7edb529db95bc7bbf8045fb0266a7b67801331d8e8d9d073ea75793624ec27ce9ff3b96862c3b9008f4d68e80 + entities: "npm:^4.4.0" + checksum: 10c0/297d7af8224f4b5cb7f6617ecdae98eeaed7f8cbd78956c42785e230505d5a4f07cef352af10d3006fa5c1544b76b57784d3a22d861ae071bbc460c649482bf4 languageName: node linkType: hard @@ -15707,6 +15897,13 @@ __metadata: languageName: node linkType: hard +"path-key@npm:^4.0.0": + version: 4.0.0 + resolution: "path-key@npm:4.0.0" + checksum: 10c0/794efeef32863a65ac312f3c0b0a99f921f3e827ff63afa5cb09a377e202c262b671f7b3832a4e64731003fa94af0263713962d317b9887bd1e0c48a342efba3 + languageName: node + linkType: hard + "path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" @@ -15724,17 +15921,17 @@ __metadata: languageName: node linkType: hard -"path-to-regexp@npm:0.1.12": - version: 0.1.12 - resolution: "path-to-regexp@npm:0.1.12" - checksum: 10c0/1c6ff10ca169b773f3bba943bbc6a07182e332464704572962d277b900aeee81ac6aa5d060ff9e01149636c30b1f63af6e69dd7786ba6e0ddb39d4dee1f0645b +"path-to-regexp@npm:0.1.7": + version: 0.1.7 + resolution: "path-to-regexp@npm:0.1.7" + checksum: 10c0/50a1ddb1af41a9e68bd67ca8e331a705899d16fb720a1ea3a41e310480948387daf603abb14d7b0826c58f10146d49050a1291ba6a82b78a382d1c02c0b8f905 languageName: node linkType: hard -"path-to-regexp@npm:3.3.0": - version: 3.3.0 - resolution: "path-to-regexp@npm:3.3.0" - checksum: 10c0/ffa0ebe7088d38d435a8d08b0fe6e8c93ceb2a81a65d4dd1d9a538f52e09d5e3474ed5f553cb3b180d894b0caa10698a68737ab599fd1e56b4663d1a64c9f77b +"path-to-regexp@npm:3.2.0": + version: 3.2.0 + resolution: "path-to-regexp@npm:3.2.0" + checksum: 10c0/2eeb1c698293acf6f89fe5af33b4c20822b3cee3e4e910c43bbee098c8dde34232fc194d5c2bc02df72affada446a181784e24f7a46932af323706be029ed1ba languageName: node linkType: hard @@ -15801,9 +15998,9 @@ __metadata: linkType: hard "pg-protocol@npm:*": - version: 1.7.0 - resolution: "pg-protocol@npm:1.7.0" - checksum: 10c0/c4af854d9b843c808231c0040fed89f2b9101006157df8da2bb2f62a7dde702de748d852228dc22df41cc7ffddfb526af3bcb34b278b581e9f76a060789186c1 + version: 1.6.1 + resolution: "pg-protocol@npm:1.6.1" + checksum: 10c0/7eadef4010ac0a3925c460be7332ca4098a5c6d5181725a62193fcfa800000ae6632d98d814f3989b42cf5fdc3b45e34c714a1959d29174e81e30730e140ae5f languageName: node linkType: hard @@ -15835,13 +16032,20 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": +"picocolors@npm:^1.0.0": version: 1.1.1 resolution: "picocolors@npm:1.1.1" checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 languageName: node linkType: hard +"picocolors@npm:^1.0.1": + version: 1.0.1 + resolution: "picocolors@npm:1.0.1" + checksum: 10c0/c63cdad2bf812ef0d66c8db29583802355d4ca67b9285d846f390cc15c2f6ccb94e8cb7eb6a6e97fc5990a6d3ad4ae42d86c84d3146e667c739a4234ed50d400 + languageName: node + linkType: hard + "picomatch@npm:4.0.1": version: 4.0.1 resolution: "picomatch@npm:4.0.1" @@ -16107,10 +16311,10 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^5.0.0": - version: 5.0.0 - resolution: "proc-log@npm:5.0.0" - checksum: 10c0/bbe5edb944b0ad63387a1d5b1911ae93e05ce8d0f60de1035b218cdcceedfe39dbd2c697853355b70f1a090f8f58fe90da487c85216bf9671f9499d1a897e9e3 +"proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": + version: 4.2.0 + resolution: "proc-log@npm:4.2.0" + checksum: 10c0/17db4757c2a5c44c1e545170e6c70a26f7de58feb985091fb1763f5081cab3d01b181fb2dd240c9f4a4255a1d9227d163d5771b7e69c9e49a561692db865efb9 languageName: node linkType: hard @@ -16231,11 +16435,9 @@ __metadata: linkType: hard "psl@npm:^1.1.28, psl@npm:^1.1.33": - version: 1.15.0 - resolution: "psl@npm:1.15.0" - dependencies: - punycode: "npm:^2.3.1" - checksum: 10c0/d8d45a99e4ca62ca12ac3c373e63d80d2368d38892daa40cfddaa1eb908be98cd549ac059783ef3a56cfd96d57ae8e2fd9ae53d1378d90d42bc661ff924e102a + version: 1.9.0 + resolution: "psl@npm:1.9.0" + checksum: 10c0/6a3f805fdab9442f44de4ba23880c4eba26b20c8e8e0830eff1cb31007f6825dace61d17203c58bfe36946842140c97a1ba7f67bc63ca2d88a7ee052b65d97ab languageName: node linkType: hard @@ -16377,12 +16579,12 @@ __metadata: linkType: hard "pump@npm:^3.0.0": - version: 3.0.2 - resolution: "pump@npm:3.0.2" + version: 3.0.0 + resolution: "pump@npm:3.0.0" dependencies: end-of-stream: "npm:^1.1.0" once: "npm:^1.3.1" - checksum: 10c0/5ad655cb2a7738b4bcf6406b24ad0970d680649d996b55ad20d1be8e0c02394034e4c45ff7cd105d87f1e9b96a0e3d06fd28e11fae8875da26e7f7a8e2c9726f + checksum: 10c0/bbdeda4f747cdf47db97428f3a135728669e56a0ae5f354a9ac5b74556556f5446a46f720a8f14ca2ece5be9b4d5d23c346db02b555f46739934cc6c093a5478 languageName: node linkType: hard @@ -16404,7 +16606,7 @@ __metadata: languageName: node linkType: hard -"punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.1": +"punycode@npm:^2.1.0, punycode@npm:^2.1.1": version: 2.3.1 resolution: "punycode@npm:2.3.1" checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 @@ -16418,21 +16620,21 @@ __metadata: languageName: node linkType: hard -"qs@npm:6.13.0": - version: 6.13.0 - resolution: "qs@npm:6.13.0" +"qs@npm:6.11.0": + version: 6.11.0 + resolution: "qs@npm:6.11.0" dependencies: - side-channel: "npm:^1.0.6" - checksum: 10c0/62372cdeec24dc83a9fb240b7533c0fdcf0c5f7e0b83343edd7310f0ab4c8205a5e7c56406531f2e47e1b4878a3821d652be4192c841de5b032ca83619d8f860 + side-channel: "npm:^1.0.4" + checksum: 10c0/4e4875e4d7c7c31c233d07a448e7e4650f456178b9dd3766b7cfa13158fdb24ecb8c4f059fa91e820dc6ab9f2d243721d071c9c0378892dcdad86e9e9a27c68f languageName: node linkType: hard "qs@npm:^6.11.0, qs@npm:^6.8.0, qs@npm:^6.9.4": - version: 6.13.1 - resolution: "qs@npm:6.13.1" + version: 6.13.0 + resolution: "qs@npm:6.13.0" dependencies: side-channel: "npm:^1.0.6" - checksum: 10c0/5ef527c0d62ffca5501322f0832d800ddc78eeb00da3b906f1b260ca0492721f8cdc13ee4b8fd8ac314a6ec37b948798c7b603ccc167e954088df392092f160c + checksum: 10c0/62372cdeec24dc83a9fb240b7533c0fdcf0c5f7e0b83343edd7310f0ab4c8205a5e7c56406531f2e47e1b4878a3821d652be4192c841de5b032ca83619d8f860 languageName: node linkType: hard @@ -16743,22 +16945,6 @@ __metadata: languageName: node linkType: hard -"reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": - version: 1.0.9 - resolution: "reflect.getprototypeof@npm:1.0.9" - dependencies: - call-bind: "npm:^1.0.8" - define-properties: "npm:^1.2.1" - dunder-proto: "npm:^1.0.1" - es-abstract: "npm:^1.23.6" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.6" - gopd: "npm:^1.2.0" - which-builtin-type: "npm:^1.2.1" - checksum: 10c0/db42118a8699fa8b5856e6aa06eac32498a7bbc3c22832729049501733d060662bf16f204c546db87df8bb78b36491ecd6b3b0478c0a27be6c8302cc0770a42e - languageName: node - linkType: hard - "regenerator-runtime@npm:^0.14.0": version: 0.14.1 resolution: "regenerator-runtime@npm:0.14.1" @@ -16946,28 +17132,28 @@ __metadata: linkType: hard "resolve@npm:^1.10.0, resolve@npm:^1.10.1, resolve@npm:^1.15.1, resolve@npm:^1.20.0, resolve@npm:^1.22.4, resolve@npm:^1.22.8, resolve@npm:~1.22.2": - version: 1.22.10 - resolution: "resolve@npm:1.22.10" + version: 1.22.8 + resolution: "resolve@npm:1.22.8" dependencies: - is-core-module: "npm:^2.16.0" + is-core-module: "npm:^2.13.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10c0/8967e1f4e2cc40f79b7e080b4582b9a8c5ee36ffb46041dccb20e6461161adf69f843b43067b4a375de926a2cd669157e29a29578191def399dd5ef89a1b5203 + checksum: 10c0/07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a languageName: node linkType: hard "resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.10.1#optional!builtin, resolve@patch:resolve@npm%3A^1.15.1#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin, resolve@patch:resolve@npm%3A~1.22.2#optional!builtin": - version: 1.22.10 - resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" + version: 1.22.8 + resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: - is-core-module: "npm:^2.16.0" + is-core-module: "npm:^2.13.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10c0/52a4e505bbfc7925ac8f4cd91fd8c4e096b6a89728b9f46861d3b405ac9a1ccf4dcbf8befb4e89a2e11370dacd0160918163885cbc669369590f2f31f4c58939 + checksum: 10c0/0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729 languageName: node linkType: hard @@ -17055,17 +17241,6 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^5.0.5": - version: 5.0.10 - resolution: "rimraf@npm:5.0.10" - dependencies: - glob: "npm:^10.3.7" - bin: - rimraf: dist/esm/bin.mjs - checksum: 10c0/7da4fd0e15118ee05b918359462cfa1e7fe4b1228c7765195a45b55576e8c15b95db513b8466ec89129666f4af45ad978a3057a02139afba1a63512a2d9644cc - languageName: node - linkType: hard - "root@workspace:.": version: 0.0.0-use.local resolution: "root@workspace:." @@ -17191,16 +17366,15 @@ __metadata: languageName: node linkType: hard -"safe-array-concat@npm:^1.1.2, safe-array-concat@npm:^1.1.3": - version: 1.1.3 - resolution: "safe-array-concat@npm:1.1.3" +"safe-array-concat@npm:^1.1.2": + version: 1.1.2 + resolution: "safe-array-concat@npm:1.1.2" dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.6" - has-symbols: "npm:^1.1.0" + call-bind: "npm:^1.0.7" + get-intrinsic: "npm:^1.2.4" + has-symbols: "npm:^1.0.3" isarray: "npm:^2.0.5" - checksum: 10c0/43c86ffdddc461fb17ff8a17c5324f392f4868f3c7dd2c6a5d9f5971713bc5fd755667212c80eab9567595f9a7509cc2f83e590ddaebd1bd19b780f9c79f9a8d + checksum: 10c0/12f9fdb01c8585e199a347eacc3bae7b5164ae805cdc8c6707199dbad5b9e30001a50a43c4ee24dc9ea32dbb7279397850e9208a7e217f4d8b1cf5d90129dec9 languageName: node linkType: hard @@ -17218,14 +17392,14 @@ __metadata: languageName: node linkType: hard -"safe-regex-test@npm:^1.1.0": - version: 1.1.0 - resolution: "safe-regex-test@npm:1.1.0" +"safe-regex-test@npm:^1.0.3": + version: 1.0.3 + resolution: "safe-regex-test@npm:1.0.3" dependencies: - call-bound: "npm:^1.0.2" + call-bind: "npm:^1.0.6" es-errors: "npm:^1.3.0" - is-regex: "npm:^1.2.1" - checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665 + is-regex: "npm:^1.1.4" + checksum: 10c0/900bf7c98dc58f08d8523b7012b468e4eb757afa624f198902c0643d7008ba777b0bdc35810ba0b758671ce887617295fb742b3f3968991b178ceca54cb07603 languageName: node linkType: hard @@ -17274,18 +17448,6 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^4.3.0": - version: 4.3.0 - resolution: "schema-utils@npm:4.3.0" - dependencies: - "@types/json-schema": "npm:^7.0.9" - ajv: "npm:^8.9.0" - ajv-formats: "npm:^2.1.1" - ajv-keywords: "npm:^5.1.0" - checksum: 10c0/c23f0fa73ef71a01d4a2bb7af4c91e0d356ec640e071aa2d06ea5e67f042962bb7ac7c29a60a295bb0125878801bc3209197a2b8a833dd25bd38e37c3ed21427 - languageName: node - linkType: hard - "secure-json-parse@npm:^2.0.0": version: 2.7.0 resolution: "secure-json-parse@npm:2.7.0" @@ -17336,9 +17498,9 @@ __metadata: languageName: node linkType: hard -"send@npm:0.19.0": - version: 0.19.0 - resolution: "send@npm:0.19.0" +"send@npm:0.18.0": + version: 0.18.0 + resolution: "send@npm:0.18.0" dependencies: debug: "npm:2.6.9" depd: "npm:2.0.0" @@ -17353,11 +17515,11 @@ __metadata: on-finished: "npm:2.4.1" range-parser: "npm:~1.2.1" statuses: "npm:2.0.1" - checksum: 10c0/ea3f8a67a8f0be3d6bf9080f0baed6d2c51d11d4f7b4470de96a5029c598a7011c497511ccc28968b70ef05508675cebff27da9151dd2ceadd60be4e6cf845e3 + checksum: 10c0/0eb134d6a51fc13bbcb976a1f4214ea1e33f242fae046efc311e80aff66c7a43603e26a79d9d06670283a13000e51be6e0a2cb80ff0942eaf9f1cd30b7ae736a languageName: node linkType: hard -"serialize-javascript@npm:^6.0.2": +"serialize-javascript@npm:^6.0.1": version: 6.0.2 resolution: "serialize-javascript@npm:6.0.2" dependencies: @@ -17366,15 +17528,15 @@ __metadata: languageName: node linkType: hard -"serve-static@npm:1.16.2": - version: 1.16.2 - resolution: "serve-static@npm:1.16.2" +"serve-static@npm:1.15.0": + version: 1.15.0 + resolution: "serve-static@npm:1.15.0" dependencies: - encodeurl: "npm:~2.0.0" + encodeurl: "npm:~1.0.2" escape-html: "npm:~1.0.3" parseurl: "npm:~1.3.3" - send: "npm:0.19.0" - checksum: 10c0/528fff6f5e12d0c5a391229ad893910709bc51b5705962b09404a1d813857578149b8815f35d3ee5752f44cd378d0f31669d4b1d7e2d11f41e08283d5134bd1f + send: "npm:0.18.0" + checksum: 10c0/fa9f0e21a540a28f301258dfe1e57bb4f81cd460d28f0e973860477dd4acef946a1f41748b5bd41c73b621bea2029569c935faa38578fd34cd42a9b4947088ba languageName: node linkType: hard @@ -17386,9 +17548,9 @@ __metadata: linkType: hard "set-cookie-parser@npm:^2.4.1": - version: 2.7.1 - resolution: "set-cookie-parser@npm:2.7.1" - checksum: 10c0/060c198c4c92547ac15988256f445eae523f57f2ceefeccf52d30d75dedf6bff22b9c26f756bd44e8e560d44ff4ab2130b178bd2e52ef5571bf7be3bd7632d9a + version: 2.7.0 + resolution: "set-cookie-parser@npm:2.7.0" + checksum: 10c0/5ccb2d0389bda27631d57e44644319f0b77200e7c8bd1515824eb83dbd2d351864a29581f7e7f977a5aeb83c3ec9976e69b706a80ac654152fd26353011ffef4 languageName: node linkType: hard @@ -17509,51 +17671,15 @@ __metadata: languageName: node linkType: hard -"side-channel-list@npm:^1.0.0": - version: 1.0.0 - resolution: "side-channel-list@npm:1.0.0" - dependencies: - es-errors: "npm:^1.3.0" - object-inspect: "npm:^1.13.3" - checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d - languageName: node - linkType: hard - -"side-channel-map@npm:^1.0.1": - version: 1.0.1 - resolution: "side-channel-map@npm:1.0.1" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.5" - object-inspect: "npm:^1.13.3" - checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 - languageName: node - linkType: hard - -"side-channel-weakmap@npm:^1.0.2": - version: 1.0.2 - resolution: "side-channel-weakmap@npm:1.0.2" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.5" - object-inspect: "npm:^1.13.3" - side-channel-map: "npm:^1.0.1" - checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 - languageName: node - linkType: hard - -"side-channel@npm:^1.0.6, side-channel@npm:^1.1.0": - version: 1.1.0 - resolution: "side-channel@npm:1.1.0" +"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": + version: 1.0.6 + resolution: "side-channel@npm:1.0.6" dependencies: + call-bind: "npm:^1.0.7" es-errors: "npm:^1.3.0" - object-inspect: "npm:^1.13.3" - side-channel-list: "npm:^1.0.0" - side-channel-map: "npm:^1.0.1" - side-channel-weakmap: "npm:^1.0.2" - checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6 + get-intrinsic: "npm:^1.2.4" + object-inspect: "npm:^1.13.1" + checksum: 10c0/d2afd163dc733cc0a39aa6f7e39bf0c436293510dbccbff446733daeaf295857dbccf94297092ec8c53e2503acac30f0b78830876f0485991d62a90e9cad305f languageName: node linkType: hard @@ -17564,7 +17690,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^4.0.1": +"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": version: 4.1.0 resolution: "signal-exit@npm:4.1.0" checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 @@ -17703,13 +17829,13 @@ __metadata: linkType: hard "socks-proxy-agent@npm:^8.0.3": - version: 8.0.5 - resolution: "socks-proxy-agent@npm:8.0.5" + version: 8.0.4 + resolution: "socks-proxy-agent@npm:8.0.4" dependencies: - agent-base: "npm:^7.1.2" + agent-base: "npm:^7.1.1" debug: "npm:^4.3.4" socks: "npm:^2.8.3" - checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 + checksum: 10c0/345593bb21b95b0508e63e703c84da11549f0a2657d6b4e3ee3612c312cb3a907eac10e53b23ede3557c6601d63252103494caa306b66560f43af7b98f53957a languageName: node linkType: hard @@ -17953,12 +18079,12 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^12.0.0": - version: 12.0.0 - resolution: "ssri@npm:12.0.0" +"ssri@npm:^10.0.0": + version: 10.0.6 + resolution: "ssri@npm:10.0.6" dependencies: minipass: "npm:^7.0.3" - checksum: 10c0/caddd5f544b2006e88fa6b0124d8d7b28208b83c72d7672d5ade44d794525d23b540f3396108c4eb9280dcb7c01f0bef50682f5b4b2c34291f7c5e211fd1417d + checksum: 10c0/e5a1e23a4057a86a97971465418f22ea89bd439ac36ade88812dd920e4e61873e8abd6a9b72a03a67ef50faa00a2daf1ab745c5a15b46d03e0544a0296354227 languageName: node linkType: hard @@ -18132,30 +18258,26 @@ __metadata: languageName: node linkType: hard -"string.prototype.trim@npm:^1.2.10": - version: 1.2.10 - resolution: "string.prototype.trim@npm:1.2.10" +"string.prototype.trim@npm:^1.2.9": + version: 1.2.9 + resolution: "string.prototype.trim@npm:1.2.9" dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.2" - define-data-property: "npm:^1.1.4" + call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.5" + es-abstract: "npm:^1.23.0" es-object-atoms: "npm:^1.0.0" - has-property-descriptors: "npm:^1.0.2" - checksum: 10c0/8a8854241c4b54a948e992eb7dd6b8b3a97185112deb0037a134f5ba57541d8248dd610c966311887b6c2fd1181a3877bffb14d873ce937a344535dabcc648f8 + checksum: 10c0/dcef1a0fb61d255778155006b372dff8cc6c4394bc39869117e4241f41a2c52899c0d263ffc7738a1f9e61488c490b05c0427faa15151efad721e1a9fb2663c2 languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.8, string.prototype.trimend@npm:^1.0.9": - version: 1.0.9 - resolution: "string.prototype.trimend@npm:1.0.9" +"string.prototype.trimend@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimend@npm:1.0.8" dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.2" + call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" es-object-atoms: "npm:^1.0.0" - checksum: 10c0/59e1a70bf9414cb4c536a6e31bef5553c8ceb0cf44d8b4d0ed65c9653358d1c64dd0ec203b100df83d0413bbcde38b8c5d49e14bc4b86737d74adc593a0d35b6 + checksum: 10c0/0a0b54c17c070551b38e756ae271865ac6cc5f60dabf2e7e343cceae7d9b02e1a1120a824e090e79da1b041a74464e8477e2da43e2775c85392be30a6f60963c languageName: node linkType: hard @@ -18277,6 +18399,13 @@ __metadata: languageName: node linkType: hard +"strip-final-newline@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-final-newline@npm:3.0.0" + checksum: 10c0/a771a17901427bac6293fd416db7577e2bc1c34a19d38351e9d5478c3c415f523f391003b42ed475f27e33a78233035df183525395f731d3bfb8cdcbd4da08ce + languageName: node + linkType: hard + "strip-indent@npm:^1.0.1": version: 1.0.1 resolution: "strip-indent@npm:1.0.1" @@ -18425,12 +18554,12 @@ __metadata: linkType: hard "synckit@npm:^0.9.1": - version: 0.9.2 - resolution: "synckit@npm:0.9.2" + version: 0.9.1 + resolution: "synckit@npm:0.9.1" dependencies: "@pkgr/core": "npm:^0.1.0" tslib: "npm:^2.6.2" - checksum: 10c0/e0c262817444e5b872708adb6f5ad37951ba33f6b2d1d4477d45db1f57573a784618ceed5e6614e0225db330632b1f6b95bb74d21e4d013e45ad4bde03d0cb59 + checksum: 10c0/d8b89e1bf30ba3ffb469d8418c836ad9c0c062bf47028406b4d06548bc66af97155ea2303b96c93bf5c7c0f0d66153a6fbd6924c76521b434e6a9898982abc2e languageName: node linkType: hard @@ -18481,7 +18610,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.0.2, tar@npm:^6.1.11, tar@npm:^6.1.2": +"tar@npm:^6.0.2, tar@npm:^6.1.11, tar@npm:^6.1.2, tar@npm:^6.2.1": version: 6.2.1 resolution: "tar@npm:6.2.1" dependencies: @@ -18495,20 +18624,6 @@ __metadata: languageName: node linkType: hard -"tar@npm:^7.4.3": - version: 7.4.3 - resolution: "tar@npm:7.4.3" - dependencies: - "@isaacs/fs-minipass": "npm:^4.0.0" - chownr: "npm:^3.0.0" - minipass: "npm:^7.1.2" - minizlib: "npm:^3.0.1" - mkdirp: "npm:^3.0.1" - yallist: "npm:^5.0.0" - checksum: 10c0/d4679609bb2a9b48eeaf84632b6d844128d2412b95b6de07d53d8ee8baf4ca0857c9331dfa510390a0727b550fd543d4d1a10995ad86cdf078423fbb8d99831d - languageName: node - linkType: hard - "temp-dir@npm:^1.0.0": version: 1.0.0 resolution: "temp-dir@npm:1.0.0" @@ -18541,14 +18656,14 @@ __metadata: linkType: hard "terser-webpack-plugin@npm:^5.3.10": - version: 5.3.11 - resolution: "terser-webpack-plugin@npm:5.3.11" + version: 5.3.10 + resolution: "terser-webpack-plugin@npm:5.3.10" dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.25" + "@jridgewell/trace-mapping": "npm:^0.3.20" jest-worker: "npm:^27.4.5" - schema-utils: "npm:^4.3.0" - serialize-javascript: "npm:^6.0.2" - terser: "npm:^5.31.1" + schema-utils: "npm:^3.1.1" + serialize-javascript: "npm:^6.0.1" + terser: "npm:^5.26.0" peerDependencies: webpack: ^5.1.0 peerDependenciesMeta: @@ -18558,13 +18673,13 @@ __metadata: optional: true uglify-js: optional: true - checksum: 10c0/4794274f445dc589f4c113c75a55ce51364ccf09bfe8a545cdb462e3f752bf300ea91f072fa28bbed291bbae03274da06fe4eca180e784fb8a43646aa7dbcaef + checksum: 10c0/66d1ed3174542560911cf96f4716aeea8d60e7caab212291705d50072b6ba844c7391442541b13c848684044042bea9ec87512b8506528c12854943da05faf91 languageName: node linkType: hard -"terser@npm:^5.31.1": - version: 5.37.0 - resolution: "terser@npm:5.37.0" +"terser@npm:^5.26.0": + version: 5.31.6 + resolution: "terser@npm:5.31.6" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.8.2" @@ -18572,7 +18687,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10c0/ff0dc79b0a0da821e7f5bf7a047eab6d04e70e88b62339a0f1d71117db3310e255f5c00738fa3b391f56c3571f800a00047720261ba04ced0241c1f9922199f4 + checksum: 10c0/b17d02b65a52a5041430572b3c514475820f5e7590fa93773c0f5b4be601ccf3f6d745bf5a79f3ee58187cf85edf61c24ddf4345783839fccb44c9c8fa9b427e languageName: node linkType: hard @@ -18676,19 +18791,12 @@ __metadata: languageName: node linkType: hard -"tinyexec@npm:^0.3.0": - version: 0.3.1 - resolution: "tinyexec@npm:0.3.1" - checksum: 10c0/11e7a7c5d8b3bddf8b5cbe82a9290d70a6fad84d528421d5d18297f165723cb53d2e737d8f58dcce5ca56f2e4aa2d060f02510b1f8971784f97eb3e9aec28f09 - languageName: node - linkType: hard - -"tlds@npm:1.255.0": - version: 1.255.0 - resolution: "tlds@npm:1.255.0" +"tlds@npm:1.252.0": + version: 1.252.0 + resolution: "tlds@npm:1.252.0" bin: tlds: bin.js - checksum: 10c0/e7e0434142a2ee80e48c383db53cc94757a9fefd545230fad908a31c235f9f9b9cd1d8232d9bc2bd018050f0e8a912c141d0c79289dda852169199892ba847d0 + checksum: 10c0/b0377d3ef977e3efbce4dd8187d8030d0514f39715d70f5b80e260a3cc2891fcbe6239f33c25a65b77fe30115e593fbaa8b5e913bf9b7f7fd97e01b18fc02d8a languageName: node linkType: hard @@ -18708,6 +18816,13 @@ __metadata: languageName: node linkType: hard +"to-fast-properties@npm:^2.0.0": + version: 2.0.0 + resolution: "to-fast-properties@npm:2.0.0" + checksum: 10c0/b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 + languageName: node + linkType: hard + "to-object-path@npm:^0.3.0": version: 0.3.0 resolution: "to-object-path@npm:0.3.0" @@ -18840,11 +18955,11 @@ __metadata: linkType: hard "ts-api-utils@npm:^1.3.0": - version: 1.4.3 - resolution: "ts-api-utils@npm:1.4.3" + version: 1.3.0 + resolution: "ts-api-utils@npm:1.3.0" peerDependencies: typescript: ">=4.2.0" - checksum: 10c0/e65dc6e7e8141140c23e1dc94984bf995d4f6801919c71d6dc27cf0cd51b100a91ffcfe5217626193e5bea9d46831e8586febdc7e172df3f1091a7384299e23a + checksum: 10c0/f54a0ba9ed56ce66baea90a3fa087a484002e807f28a8ccb2d070c75e76bde64bd0f6dce98b3802834156306050871b67eec325cb4e918015a360a3f0868c77c languageName: node linkType: hard @@ -18944,15 +19059,14 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths-webpack-plugin@npm:4.2.0": - version: 4.2.0 - resolution: "tsconfig-paths-webpack-plugin@npm:4.2.0" +"tsconfig-paths-webpack-plugin@npm:4.1.0": + version: 4.1.0 + resolution: "tsconfig-paths-webpack-plugin@npm:4.1.0" dependencies: chalk: "npm:^4.1.0" enhanced-resolve: "npm:^5.7.0" - tapable: "npm:^2.2.1" tsconfig-paths: "npm:^4.1.2" - checksum: 10c0/495c5ab7c1cb079217d98fe25d61def01e4bab38047c7ab25ec11876cc8c697ff01f43ea6c9933181875e51e49835407fc71afd92ea6cca1ba1bebf513dfb510 + checksum: 10c0/c030e867e70a3f6d1799fdffa209c3a35e1435ad99aac01946b9ebb0fa8208b7b508c1dfe8c8e13d6a2ef70c75b4db062fbfd3c1f3362c69b6c65ffd4a50e226 languageName: node linkType: hard @@ -18979,10 +19093,10 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.8.1, tslib@npm:^2.1.0, tslib@npm:^2.5.0, tslib@npm:^2.6.2": - version: 2.8.1 - resolution: "tslib@npm:2.8.1" - checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 +"tslib@npm:2.6.3": + version: 2.6.3 + resolution: "tslib@npm:2.6.3" + checksum: 10c0/2598aef53d9dbe711af75522464b2104724d6467b26a60f2bdac8297d2b5f1f6b86a71f61717384aa8fd897240467aaa7bcc36a0700a0faf751293d1331db39a languageName: node linkType: hard @@ -18993,6 +19107,13 @@ __metadata: languageName: node linkType: hard +"tslib@npm:^2.1.0, tslib@npm:^2.5.0, tslib@npm:^2.6.2": + version: 2.7.0 + resolution: "tslib@npm:2.7.0" + checksum: 10c0/469e1d5bf1af585742128827000711efa61010b699cb040ab1800bcd3ccdd37f63ec30642c9e07c4439c1db6e46345582614275daca3e0f4abae29b0083f04a6 + languageName: node + linkType: hard + "tsutils@npm:^3.21.0": version: 3.21.0 resolution: "tsutils@npm:3.21.0" @@ -19088,56 +19209,55 @@ __metadata: languageName: node linkType: hard -"typed-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "typed-array-buffer@npm:1.0.3" +"typed-array-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-buffer@npm:1.0.2" dependencies: - call-bound: "npm:^1.0.3" + call-bind: "npm:^1.0.7" es-errors: "npm:^1.3.0" - is-typed-array: "npm:^1.1.14" - checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 + is-typed-array: "npm:^1.1.13" + checksum: 10c0/9e043eb38e1b4df4ddf9dde1aa64919ae8bb909571c1cc4490ba777d55d23a0c74c7d73afcdd29ec98616d91bb3ae0f705fad4421ea147e1daf9528200b562da languageName: node linkType: hard -"typed-array-byte-length@npm:^1.0.3": - version: 1.0.3 - resolution: "typed-array-byte-length@npm:1.0.3" +"typed-array-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "typed-array-byte-length@npm:1.0.1" dependencies: - call-bind: "npm:^1.0.8" + call-bind: "npm:^1.0.7" for-each: "npm:^0.3.3" - gopd: "npm:^1.2.0" - has-proto: "npm:^1.2.0" - is-typed-array: "npm:^1.1.14" - checksum: 10c0/6ae083c6f0354f1fce18b90b243343b9982affd8d839c57bbd2c174a5d5dc71be9eb7019ffd12628a96a4815e7afa85d718d6f1e758615151d5f35df841ffb3e + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/fcebeffb2436c9f355e91bd19e2368273b88c11d1acc0948a2a306792f1ab672bce4cfe524ab9f51a0505c9d7cd1c98eff4235c4f6bfef6a198f6cfc4ff3d4f3 languageName: node linkType: hard -"typed-array-byte-offset@npm:^1.0.4": - version: 1.0.4 - resolution: "typed-array-byte-offset@npm:1.0.4" +"typed-array-byte-offset@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-byte-offset@npm:1.0.2" dependencies: available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" + call-bind: "npm:^1.0.7" for-each: "npm:^0.3.3" - gopd: "npm:^1.2.0" - has-proto: "npm:^1.2.0" - is-typed-array: "npm:^1.1.15" - reflect.getprototypeof: "npm:^1.0.9" - checksum: 10c0/3d805b050c0c33b51719ee52de17c1cd8e6a571abdf0fffb110e45e8dd87a657e8b56eee94b776b13006d3d347a0c18a730b903cf05293ab6d92e99ff8f77e53 + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/d2628bc739732072e39269389a758025f75339de2ed40c4f91357023c5512d237f255b633e3106c461ced41907c1bf9a533c7e8578066b0163690ca8bc61b22f languageName: node linkType: hard -"typed-array-length@npm:^1.0.7": - version: 1.0.7 - resolution: "typed-array-length@npm:1.0.7" +"typed-array-length@npm:^1.0.6": + version: 1.0.6 + resolution: "typed-array-length@npm:1.0.6" dependencies: call-bind: "npm:^1.0.7" for-each: "npm:^0.3.3" gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" is-typed-array: "npm:^1.1.13" possible-typed-array-names: "npm:^1.0.0" - reflect.getprototypeof: "npm:^1.0.6" - checksum: 10c0/e38f2ae3779584c138a2d8adfa8ecf749f494af3cd3cdafe4e688ce51418c7d2c5c88df1bd6be2bbea099c3f7cea58c02ca02ed438119e91f162a9de23f61295 + checksum: 10c0/74253d7dc488eb28b6b2711cf31f5a9dcefc9c41b0681fd1c178ed0a1681b4468581a3626d39cd4df7aee3d3927ab62be06aa9ca74e5baf81827f61641445b77 languageName: node linkType: hard @@ -19158,11 +19278,11 @@ __metadata: linkType: hard "typedoc-plugin-coverage@npm:^3.3.0": - version: 3.4.0 - resolution: "typedoc-plugin-coverage@npm:3.4.0" + version: 3.3.0 + resolution: "typedoc-plugin-coverage@npm:3.3.0" peerDependencies: - typedoc: 0.25.x || 0.26.x || 0.27.x - checksum: 10c0/e7ff91ed90487589f6b2a5cdbd5fd414f7cea219f4ea515c77994db5129655c8967afb7e5757766241383b6583306d68e35bb67246c8b432938d54bae6a345c4 + typedoc: 0.25.x || 0.26.x + checksum: 10c0/be6b54eea3bd77f27ddb0cfb38bd89e4b16a2f32d1822e6f724fb44c6c9517f1eecbdcadb728a71159bd3bff5fa1b0042ae4d1682f8da69d48cfe62316438a65 languageName: node linkType: hard @@ -19262,13 +19382,13 @@ __metadata: languageName: node linkType: hard -"typescript@npm:5.7.2": - version: 5.7.2 - resolution: "typescript@npm:5.7.2" +"typescript@npm:5.3.3": + version: 5.3.3 + resolution: "typescript@npm:5.3.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/a873118b5201b2ef332127ef5c63fb9d9c155e6fdbe211cbd9d8e65877283797cca76546bad742eea36ed7efbe3424a30376818f79c7318512064e8625d61622 + checksum: 10c0/e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f languageName: node linkType: hard @@ -19282,13 +19402,13 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A5.7.2#optional!builtin": - version: 5.7.2 - resolution: "typescript@patch:typescript@npm%3A5.7.2#optional!builtin::version=5.7.2&hash=74658d" +"typescript@patch:typescript@npm%3A5.3.3#optional!builtin": + version: 5.3.3 + resolution: "typescript@patch:typescript@npm%3A5.3.3#optional!builtin::version=5.3.3&hash=e012d7" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/c891ccf04008bc1305ba34053db951f8a4584b4a1bf2f68fd972c4a354df3dc5e62c8bfed4f6ac2d12e5b3b1c49af312c83a651048f818cd5b4949d17baacd79 + checksum: 10c0/1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500 languageName: node linkType: hard @@ -19348,15 +19468,15 @@ __metadata: languageName: node linkType: hard -"unbox-primitive@npm:^1.1.0": - version: 1.1.0 - resolution: "unbox-primitive@npm:1.1.0" +"unbox-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "unbox-primitive@npm:1.0.2" dependencies: - call-bound: "npm:^1.0.3" + call-bind: "npm:^1.0.2" has-bigints: "npm:^1.0.2" - has-symbols: "npm:^1.1.0" - which-boxed-primitive: "npm:^1.1.1" - checksum: 10c0/7dbd35ab02b0e05fe07136c72cb9355091242455473ec15057c11430129bab38b7b3624019b8778d02a881c13de44d63cd02d122ee782fb519e1de7775b5b982 + has-symbols: "npm:^1.0.3" + which-boxed-primitive: "npm:^1.0.2" + checksum: 10c0/81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66 languageName: node linkType: hard @@ -19367,10 +19487,10 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~6.20.0": - version: 6.20.0 - resolution: "undici-types@npm:6.20.0" - checksum: 10c0/68e659a98898d6a836a9a59e6adf14a5d799707f5ea629433e025ac90d239f75e408e2e5ff086afc3cace26f8b26ee52155293564593fbb4a2f666af57fc59bf +"undici-types@npm:~6.19.2": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: 10c0/078afa5990fba110f6824823ace86073b4638f1d5112ee26e790155f481f2a868cc3e0615505b6f4282bdf74a3d8caad715fd809e870c2bb0704e3ea6082f344 languageName: node linkType: hard @@ -19402,12 +19522,12 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^4.0.0": - version: 4.0.0 - resolution: "unique-filename@npm:4.0.0" +"unique-filename@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-filename@npm:3.0.0" dependencies: - unique-slug: "npm:^5.0.0" - checksum: 10c0/38ae681cceb1408ea0587b6b01e29b00eee3c84baee1e41fd5c16b9ed443b80fba90c40e0ba69627e30855570a34ba8b06702d4a35035d4b5e198bf5a64c9ddc + unique-slug: "npm:^4.0.0" + checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f languageName: node linkType: hard @@ -19420,12 +19540,12 @@ __metadata: languageName: node linkType: hard -"unique-slug@npm:^5.0.0": - version: 5.0.0 - resolution: "unique-slug@npm:5.0.0" +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" dependencies: imurmurhash: "npm:^0.1.4" - checksum: 10c0/d324c5a44887bd7e105ce800fcf7533d43f29c48757ac410afd42975de82cc38ea2035c0483f4de82d186691bf3208ef35c644f73aa2b1b20b8e651be5afd293 + checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 languageName: node linkType: hard @@ -19490,17 +19610,17 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.1.1": - version: 1.1.1 - resolution: "update-browserslist-db@npm:1.1.1" +"update-browserslist-db@npm:^1.1.0": + version: 1.1.0 + resolution: "update-browserslist-db@npm:1.1.0" dependencies: - escalade: "npm:^3.2.0" - picocolors: "npm:^1.1.0" + escalade: "npm:^3.1.2" + picocolors: "npm:^1.0.1" peerDependencies: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10c0/536a2979adda2b4be81b07e311bd2f3ad5e978690987956bc5f514130ad50cac87cd22c710b686d79731e00fbee8ef43efe5fcd72baa241045209195d43dcc80 + checksum: 10c0/a7452de47785842736fb71547651c5bbe5b4dc1e3722ccf48a704b7b34e4dcf633991eaa8e4a6a517ffb738b3252eede3773bef673ef9021baa26b056d63a5b9 languageName: node linkType: hard @@ -19786,19 +19906,20 @@ __metadata: languageName: node linkType: hard -"webpack@npm:5.97.1": - version: 5.97.1 - resolution: "webpack@npm:5.97.1" +"webpack@npm:5.93.0": + version: 5.93.0 + resolution: "webpack@npm:5.93.0" dependencies: - "@types/eslint-scope": "npm:^3.7.7" - "@types/estree": "npm:^1.0.6" - "@webassemblyjs/ast": "npm:^1.14.1" - "@webassemblyjs/wasm-edit": "npm:^1.14.1" - "@webassemblyjs/wasm-parser": "npm:^1.14.1" - acorn: "npm:^8.14.0" - browserslist: "npm:^4.24.0" + "@types/eslint-scope": "npm:^3.7.3" + "@types/estree": "npm:^1.0.5" + "@webassemblyjs/ast": "npm:^1.12.1" + "@webassemblyjs/wasm-edit": "npm:^1.12.1" + "@webassemblyjs/wasm-parser": "npm:^1.12.1" + acorn: "npm:^8.7.1" + acorn-import-attributes: "npm:^1.9.5" + browserslist: "npm:^4.21.10" chrome-trace-event: "npm:^1.0.2" - enhanced-resolve: "npm:^5.17.1" + enhanced-resolve: "npm:^5.17.0" es-module-lexer: "npm:^1.2.1" eslint-scope: "npm:5.1.1" events: "npm:^3.2.0" @@ -19818,7 +19939,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 10c0/a12d3dc882ca582075f2c4bd88840be8307427245c90a8a0e0b372d73560df13fcf25a61625c9e7edc964981d16b5a8323640562eb48347cf9dd2f8bd1b39d35 + checksum: 10c0/f0c72f1325ff57a4cc461bb978e6e1296f2a7d45c9765965271aa686ccdd448512956f4d7fdcf8c164d073af046c5a0aba17ce85ea98e33e5e2bfbfe13aa5808 languageName: node linkType: hard @@ -19870,49 +19991,16 @@ __metadata: languageName: node linkType: hard -"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": - version: 1.1.1 - resolution: "which-boxed-primitive@npm:1.1.1" - dependencies: - is-bigint: "npm:^1.1.0" - is-boolean-object: "npm:^1.2.1" - is-number-object: "npm:^1.1.1" - is-string: "npm:^1.1.1" - is-symbol: "npm:^1.1.1" - checksum: 10c0/aceea8ede3b08dede7dce168f3883323f7c62272b49801716e8332ff750e7ae59a511ae088840bc6874f16c1b7fd296c05c949b0e5b357bfe3c431b98c417abe - languageName: node - linkType: hard - -"which-builtin-type@npm:^1.2.1": - version: 1.2.1 - resolution: "which-builtin-type@npm:1.2.1" - dependencies: - call-bound: "npm:^1.0.2" - function.prototype.name: "npm:^1.1.6" - has-tostringtag: "npm:^1.0.2" - is-async-function: "npm:^2.0.0" - is-date-object: "npm:^1.1.0" - is-finalizationregistry: "npm:^1.1.0" - is-generator-function: "npm:^1.0.10" - is-regex: "npm:^1.2.1" - is-weakref: "npm:^1.0.2" - isarray: "npm:^2.0.5" - which-boxed-primitive: "npm:^1.1.0" - which-collection: "npm:^1.0.2" - which-typed-array: "npm:^1.1.16" - checksum: 10c0/8dcf323c45e5c27887800df42fbe0431d0b66b1163849bb7d46b5a730ad6a96ee8bfe827d078303f825537844ebf20c02459de41239a0a9805e2fcb3cae0d471 - languageName: node - linkType: hard - -"which-collection@npm:^1.0.2": +"which-boxed-primitive@npm:^1.0.2": version: 1.0.2 - resolution: "which-collection@npm:1.0.2" + resolution: "which-boxed-primitive@npm:1.0.2" dependencies: - is-map: "npm:^2.0.3" - is-set: "npm:^2.0.3" - is-weakmap: "npm:^2.0.2" - is-weakset: "npm:^2.0.3" - checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 + is-bigint: "npm:^1.0.1" + is-boolean-object: "npm:^1.1.0" + is-number-object: "npm:^1.0.4" + is-string: "npm:^1.0.5" + is-symbol: "npm:^1.0.3" + checksum: 10c0/0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e languageName: node linkType: hard @@ -19923,17 +20011,16 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.18": - version: 1.1.18 - resolution: "which-typed-array@npm:1.1.18" +"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15": + version: 1.1.15 + resolution: "which-typed-array@npm:1.1.15" dependencies: available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" + call-bind: "npm:^1.0.7" for-each: "npm:^0.3.3" - gopd: "npm:^1.2.0" + gopd: "npm:^1.0.1" has-tostringtag: "npm:^1.0.2" - checksum: 10c0/0412f4a91880ca1a2a63056187c2e3de6b129b2b5b6c17bc3729f0f7041047ae48fb7424813e51506addb2c97320003ee18b8c57469d2cde37983ef62126143c + checksum: 10c0/4465d5348c044032032251be54d8988270e69c6b7154f8fcb2a47ff706fe36f7624b3a24246b8d9089435a8f4ec48c1c1025c5d6b499456b9e5eff4f48212983 languageName: node linkType: hard @@ -19959,14 +20046,14 @@ __metadata: languageName: node linkType: hard -"which@npm:^5.0.0": - version: 5.0.0 - resolution: "which@npm:5.0.0" +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" dependencies: isexe: "npm:^3.1.1" bin: node-which: bin/which.js - checksum: 10c0/e556e4cd8b7dbf5df52408c9a9dd5ac6518c8c5267c8953f5b0564073c66ed5bf9503b14d876d0e9c7844d4db9725fb0dcf45d6e911e17e26ab363dc3965ae7b + checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a languageName: node linkType: hard @@ -20197,13 +20284,6 @@ __metadata: languageName: node linkType: hard -"yallist@npm:^5.0.0": - version: 5.0.0 - resolution: "yallist@npm:5.0.0" - checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 - languageName: node - linkType: hard - "yargs-parser@npm:20.x, yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3": version: 20.2.9 resolution: "yargs-parser@npm:20.2.9" From 00143d0949c621656abf2405ff4164523854ace4 Mon Sep 17 00:00:00 2001 From: Thiago Ramalho Date: Wed, 8 Jan 2025 16:00:59 -0300 Subject: [PATCH 11/13] chore: update paremeters --- packages/nestjs-auth-verify/README.md | 7 ++- .../src/auth-verify.controller.spec.ts | 10 ++-- .../src/auth-verify.controller.ts | 4 +- .../auth-verify-confirm-params.interface.ts | 6 +++ .../auth-verify-revoke-params.interface.ts | 4 ++ .../auth-verify-send-params.interface.ts | 6 +++ .../auth-verify-settings.interface.ts | 1 + .../auth-verify-validate-params.interface.ts | 6 +++ .../auth-verify.service.interface.ts | 12 ++--- .../src/services/auth-verify.service.spec.ts | 22 ++++++--- .../src/services/auth-verify.service.ts | 46 ++++++++++--------- 11 files changed, 81 insertions(+), 43 deletions(-) create mode 100644 packages/nestjs-auth-verify/src/interfaces/auth-verify-confirm-params.interface.ts create mode 100644 packages/nestjs-auth-verify/src/interfaces/auth-verify-revoke-params.interface.ts create mode 100644 packages/nestjs-auth-verify/src/interfaces/auth-verify-send-params.interface.ts create mode 100644 packages/nestjs-auth-verify/src/interfaces/auth-verify-validate-params.interface.ts diff --git a/packages/nestjs-auth-verify/README.md b/packages/nestjs-auth-verify/README.md index bdf8f8006..00e5046ab 100644 --- a/packages/nestjs-auth-verify/README.md +++ b/packages/nestjs-auth-verify/README.md @@ -298,7 +298,8 @@ Here's an example of how to implement the OTP service: import { OtpCreatableInterface, OtpInterface, ReferenceAssigneeInterface, - ReferenceAssignment + ReferenceAssignment, + OtpCreateParamsInterface } from '@concepta/nestjs-common'; import { QueryOptionsInterface @@ -317,9 +318,7 @@ export class YourAuthVerifyOtpService implements AuthVerifyOtpServiceInterface { constructor() {} async create( - assignment: ReferenceAssignment, - otp: OtpCreatableInterface, - queryOptions?: QueryOptionsInterface, + params: OtpCreateParamsInterface ): Promise { // your custom logic to create OTP } diff --git a/packages/nestjs-auth-verify/src/auth-verify.controller.spec.ts b/packages/nestjs-auth-verify/src/auth-verify.controller.spec.ts index 218fcc8e2..235fc90de 100644 --- a/packages/nestjs-auth-verify/src/auth-verify.controller.spec.ts +++ b/packages/nestjs-auth-verify/src/auth-verify.controller.spec.ts @@ -25,7 +25,7 @@ describe(AuthVerifyController.name, () => { await controller.send(dto); - expect(verifyPasswordSpy).toHaveBeenCalledWith(dto.email); + expect(verifyPasswordSpy).toHaveBeenCalledWith({ email: dto.email }); }); }); @@ -38,7 +38,9 @@ describe(AuthVerifyController.name, () => { const t = () => controller.confirm(passwordDto); await expect(t).rejects.toThrow(AuthRecoveryOtpInvalidException); - expect(updatePasswordSpy).toHaveBeenCalledWith(passwordDto.passcode); + expect(updatePasswordSpy).toHaveBeenCalledWith({ + passcode: passwordDto.passcode, + }); }); it('should call updatePassword method of AuthVerifyService', async () => { @@ -50,7 +52,9 @@ describe(AuthVerifyController.name, () => { await controller.confirm(passwordDto); - expect(updatePasswordSpy).toHaveBeenCalledWith(passwordDto.passcode); + expect(updatePasswordSpy).toHaveBeenCalledWith({ + passcode: passwordDto.passcode, + }); }); }); }); diff --git a/packages/nestjs-auth-verify/src/auth-verify.controller.ts b/packages/nestjs-auth-verify/src/auth-verify.controller.ts index aaf723cb0..58edb4548 100644 --- a/packages/nestjs-auth-verify/src/auth-verify.controller.ts +++ b/packages/nestjs-auth-verify/src/auth-verify.controller.ts @@ -29,7 +29,7 @@ export class AuthVerifyController { @ApiOkResponse() @Post('/send') async send(@Body() verifyPasswordDto: AuthVerifyDto): Promise { - await this.authVerifyService.send(verifyPasswordDto.email); + await this.authVerifyService.send({ email: verifyPasswordDto.email }); } @ApiOperation({ @@ -45,7 +45,7 @@ export class AuthVerifyController { async confirm(@Body() updatePasswordDto: AuthVerifyUpdateDto): Promise { const { passcode } = updatePasswordDto; - const user = await this.authVerifyService.confirmUser(passcode); + const user = await this.authVerifyService.confirmUser({ passcode }); if (!user) { // the client should have checked using validate passcode first diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify-confirm-params.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify-confirm-params.interface.ts new file mode 100644 index 000000000..a1c5deab6 --- /dev/null +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify-confirm-params.interface.ts @@ -0,0 +1,6 @@ +import { QueryOptionsInterface } from '@concepta/typeorm-common'; + +export interface AuthVerifyConfirmParamsInterface { + passcode: string; + queryOptions?: QueryOptionsInterface; +} diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify-revoke-params.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify-revoke-params.interface.ts new file mode 100644 index 000000000..9278bd079 --- /dev/null +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify-revoke-params.interface.ts @@ -0,0 +1,4 @@ +import { AuthVerifySendParamsInterface } from './auth-verify-send-params.interface'; + +export interface AuthVerifyRevokeParamsInterface + extends AuthVerifySendParamsInterface {} diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify-send-params.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify-send-params.interface.ts new file mode 100644 index 000000000..64a7fda66 --- /dev/null +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify-send-params.interface.ts @@ -0,0 +1,6 @@ +import { QueryOptionsInterface } from '@concepta/typeorm-common'; + +export interface AuthVerifySendParamsInterface { + email: string; + queryOptions?: QueryOptionsInterface; +} diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify-settings.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify-settings.interface.ts index 16d9a1a43..c4a879867 100644 --- a/packages/nestjs-auth-verify/src/interfaces/auth-verify-settings.interface.ts +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify-settings.interface.ts @@ -4,6 +4,7 @@ import { OtpCreatableInterface } from '@concepta/nestjs-common'; export interface AuthVerifyOtpSettingsInterface extends Pick { assignment: ReferenceAssignment; + clearOtpOnCreate?: boolean; } export interface AuthVerifySettingsInterface { diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify-validate-params.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify-validate-params.interface.ts new file mode 100644 index 000000000..ca09f6d97 --- /dev/null +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify-validate-params.interface.ts @@ -0,0 +1,6 @@ +import { AuthVerifyConfirmParamsInterface } from './auth-verify-confirm-params.interface'; + +export interface AuthVerifyValidateParamsInterface + extends AuthVerifyConfirmParamsInterface { + deleteIfValid?: boolean; +} diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify.service.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify.service.interface.ts index dc30aa2d6..bf410d7dc 100644 --- a/packages/nestjs-auth-verify/src/interfaces/auth-verify.service.interface.ts +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify.service.interface.ts @@ -1,14 +1,14 @@ import { ReferenceIdInterface } from '@concepta/nestjs-common'; -import { QueryOptionsInterface } from '@concepta/typeorm-common'; +import { AuthVerifySendParamsInterface } from './auth-verify-send-params.interface'; +import { AuthVerifyConfirmParamsInterface } from './auth-verify-confirm-params.interface'; +import { AuthVerifyRevokeParamsInterface } from './auth-verify-revoke-params.interface'; export interface AuthVerifyServiceInterface { - send(email: string, queryOptions?: QueryOptionsInterface): Promise; + send(params: AuthVerifySendParamsInterface): Promise; confirmUser( - passcode: string, - queryOptions?: QueryOptionsInterface, + params: AuthVerifyConfirmParamsInterface, ): Promise; revokeAllUserVerifyToken( - email: string, - queryOptions?: QueryOptionsInterface, + params: AuthVerifyRevokeParamsInterface, ): Promise; } diff --git a/packages/nestjs-auth-verify/src/services/auth-verify.service.spec.ts b/packages/nestjs-auth-verify/src/services/auth-verify.service.spec.ts index dc758f6bc..11702dffb 100644 --- a/packages/nestjs-auth-verify/src/services/auth-verify.service.spec.ts +++ b/packages/nestjs-auth-verify/src/services/auth-verify.service.spec.ts @@ -80,7 +80,7 @@ describe(AuthVerifyService, () => { describe(AuthVerifyService.prototype.send, () => { it('should send password verify', async () => { - const result = await authVerifyService.send(UserFixture.email); + const result = await authVerifyService.send({ email: UserFixture.email }); expect(result).toBeUndefined(); expect(spyUserLookupServiceByEmail).toHaveBeenCalledTimes(1); @@ -100,7 +100,7 @@ describe(AuthVerifyService, () => { describe(AuthVerifyService.prototype.validatePasscode, () => { it('should call otp validator', async () => { - await authVerifyService.validatePasscode('GOOD_PASSCODE'); + await authVerifyService.validatePasscode({ passcode: 'GOOD_PASSCODE' }); expect(spyOtpServiceValidate).toHaveBeenCalledWith( settings.otp.assignment, @@ -111,19 +111,23 @@ describe(AuthVerifyService, () => { }); it('should validate good passcode', async () => { - const otp = await authVerifyService.validatePasscode('GOOD_PASSCODE'); + const otp = await authVerifyService.validatePasscode({ + passcode: 'GOOD_PASSCODE', + }); expect(otp).toEqual({ assignee: UserFixture }); }); it('should not validate bad passcode', async () => { - const otp = await authVerifyService.validatePasscode('BAD_PASSCODE'); + const otp = await authVerifyService.validatePasscode({ + passcode: 'BAD_PASSCODE', + }); expect(otp).toBeNull(); }); }); describe(AuthVerifyService.prototype.confirmUser, () => { it('should call user mutate service', async () => { - await authVerifyService.confirmUser('GOOD_PASSCODE'); + await authVerifyService.confirmUser({ passcode: 'GOOD_PASSCODE' }); expect(spyUserMutateServiceUpdate).toHaveBeenCalledTimes(1); expect(spyUserMutateServiceUpdate).toHaveBeenCalledWith( @@ -136,13 +140,17 @@ describe(AuthVerifyService, () => { }); it('should update password', async () => { - const user = await authVerifyService.confirmUser('GOOD_PASSCODE'); + const user = await authVerifyService.confirmUser({ + passcode: 'GOOD_PASSCODE', + }); expect(user).toEqual(UserFixture); }); it('should fail to update password', async () => { - const user = await authVerifyService.confirmUser('FAKE_PASSCODE'); + const user = await authVerifyService.confirmUser({ + passcode: 'FAKE_PASSCODE', + }); expect(user).toBeNull(); }); diff --git a/packages/nestjs-auth-verify/src/services/auth-verify.service.ts b/packages/nestjs-auth-verify/src/services/auth-verify.service.ts index 91e1e529d..b1724f5f9 100644 --- a/packages/nestjs-auth-verify/src/services/auth-verify.service.ts +++ b/packages/nestjs-auth-verify/src/services/auth-verify.service.ts @@ -17,10 +17,11 @@ import { ReferenceAssigneeInterface, ReferenceIdInterface, } from '@concepta/nestjs-common'; -import { - EntityManagerProxy, - QueryOptionsInterface, -} from '@concepta/typeorm-common'; +import { EntityManagerProxy } from '@concepta/typeorm-common'; +import { AuthVerifySendParamsInterface } from '../interfaces/auth-verify-send-params.interface'; +import { AuthVerifyConfirmParamsInterface } from '../interfaces/auth-verify-confirm-params.interface'; +import { AuthVerifyRevokeParamsInterface } from '../interfaces/auth-verify-revoke-params.interface'; +import { AuthVerifyValidateParamsInterface } from '../interfaces/auth-verify-validate-params.interface'; @Injectable() export class AuthVerifyService implements AuthVerifyServiceInterface { @@ -43,17 +44,17 @@ export class AuthVerifyService implements AuthVerifyServiceInterface { * * @param email - user email */ - async send( - email: string, - queryOptions?: QueryOptionsInterface, - ): Promise { + async send(params: AuthVerifySendParamsInterface): Promise { + const { email, queryOptions } = params; + // verify the user by providing an email const user = await this.userLookupService.byEmail(email, queryOptions); // did we find a user? if (user) { // extract required otp properties - const { category, assignment, type, expiresIn } = this.config.otp; + const { category, assignment, type, expiresIn, clearOtpOnCreate } = + this.config.otp; // create an OTP save it in the database const otp = await this.otpService.create({ assignment, @@ -66,6 +67,7 @@ export class AuthVerifyService implements AuthVerifyServiceInterface { }, }, queryOptions, + clearOnCreate: clearOtpOnCreate, }); // send en email with a verify OTP @@ -87,10 +89,9 @@ export class AuthVerifyService implements AuthVerifyServiceInterface { * @param deleteIfValid - flag to delete if valid or not */ async validatePasscode( - passcode: string, - deleteIfValid = false, - queryOptions?: QueryOptionsInterface, + params: AuthVerifyValidateParamsInterface, ): Promise { + const { passcode, deleteIfValid = false, queryOptions } = params; // extract required properties const { category, assignment } = this.config.otp; @@ -110,9 +111,9 @@ export class AuthVerifyService implements AuthVerifyServiceInterface { * @param queryOptions - query options */ async confirmUser( - passcode: string, - queryOptions?: QueryOptionsInterface, + params: AuthVerifyConfirmParamsInterface, ): Promise { + const { passcode, queryOptions } = params; // run in transaction return this.entityManagerProxy .transaction(queryOptions) @@ -121,11 +122,11 @@ export class AuthVerifyService implements AuthVerifyServiceInterface { const nestedQueryOptions = { ...queryOptions, transaction }; // get otp by passcode, but no delete it until all workflow pass - const otp = await this.validatePasscode( + const otp = await this.validatePasscode({ passcode, - true, - nestedQueryOptions, - ); + deleteIfValid: true, + queryOptions: nestedQueryOptions, + }); // did we get an otp? if (otp) { @@ -139,7 +140,10 @@ export class AuthVerifyService implements AuthVerifyServiceInterface { ); if (user) { - await this.revokeAllUserVerifyToken(user.email, nestedQueryOptions); + await this.revokeAllUserVerifyToken({ + email: user.email, + queryOptions: nestedQueryOptions, + }); } return user; @@ -156,9 +160,9 @@ export class AuthVerifyService implements AuthVerifyServiceInterface { * @param email - user email */ async revokeAllUserVerifyToken( - email: string, - queryOptions?: QueryOptionsInterface, + params: AuthVerifyRevokeParamsInterface, ): Promise { + const { email, queryOptions } = params; // verify users password by providing an email const user = await this.userLookupService.byEmail(email, queryOptions); From 4008b0fabafa2c4fb49acfac80a9d25f034b4dbd Mon Sep 17 00:00:00 2001 From: Thiago Ramalho Date: Thu, 9 Jan 2025 12:04:05 -0300 Subject: [PATCH 12/13] chore: add parameters for verify notification --- .../auth-verify-email-params.interface.ts | 5 ++ ...h-verify-notification.service.interface.ts | 7 +-- .../auth-verify-notification.service.spec.ts | 20 ++++---- .../auth-verify-notification.service.ts | 8 ++-- .../src/services/auth-verify.service.spec.ts | 10 ++-- .../src/services/auth-verify.service.ts | 46 +++++++++++++------ 6 files changed, 57 insertions(+), 39 deletions(-) create mode 100644 packages/nestjs-auth-verify/src/interfaces/auth-verify-email-params.interface.ts diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify-email-params.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify-email-params.interface.ts new file mode 100644 index 000000000..10ae1bc50 --- /dev/null +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify-email-params.interface.ts @@ -0,0 +1,5 @@ +export interface AuthVerifyEmailParamsInterface { + email: string; + passcode: string; + resetTokenExp: Date; +} diff --git a/packages/nestjs-auth-verify/src/interfaces/auth-verify-notification.service.interface.ts b/packages/nestjs-auth-verify/src/interfaces/auth-verify-notification.service.interface.ts index 90b496b61..958daf0f3 100644 --- a/packages/nestjs-auth-verify/src/interfaces/auth-verify-notification.service.interface.ts +++ b/packages/nestjs-auth-verify/src/interfaces/auth-verify-notification.service.interface.ts @@ -1,10 +1,7 @@ import { EmailSendOptionsInterface } from '@concepta/nestjs-common'; +import { AuthVerifyEmailParamsInterface } from './auth-verify-email-params.interface'; export interface AuthVerifyNotificationServiceInterface { sendEmail(sendMailOptions: EmailSendOptionsInterface): Promise; - sendVerifyEmail( - email: string, - passcode: string, - resetTokenExp: Date, - ): Promise; + sendVerifyEmail(params: AuthVerifyEmailParamsInterface): Promise; } diff --git a/packages/nestjs-auth-verify/src/services/auth-verify-notification.service.spec.ts b/packages/nestjs-auth-verify/src/services/auth-verify-notification.service.spec.ts index 96e910d7f..a437dcc32 100644 --- a/packages/nestjs-auth-verify/src/services/auth-verify-notification.service.spec.ts +++ b/packages/nestjs-auth-verify/src/services/auth-verify-notification.service.spec.ts @@ -46,11 +46,11 @@ describe('AuthVerifyNotificationService', () => { }); it('Send verify email password', async () => { - await authVerifyNotificationService.sendVerifyEmail( - 'me@mail.com', - 'me', - new Date(), - ); + await authVerifyNotificationService.sendVerifyEmail({ + email: 'me@mail.com', + passcode: 'me', + resetTokenExp: new Date(), + }); expect(spyEmailService).toHaveBeenCalledTimes(1); }); @@ -58,11 +58,11 @@ describe('AuthVerifyNotificationService', () => { authVerifyNotificationService['settings'].email.tokenUrlFormatter = undefined; - await authVerifyNotificationService.sendVerifyEmail( - 'me@mail.com', - 'me', - new Date(), - ); + await authVerifyNotificationService.sendVerifyEmail({ + email: 'me@mail.com', + passcode: 'me', + resetTokenExp: new Date(), + }); expect(spyEmailService).toHaveBeenCalledTimes(1); }); }); diff --git a/packages/nestjs-auth-verify/src/services/auth-verify-notification.service.ts b/packages/nestjs-auth-verify/src/services/auth-verify-notification.service.ts index 2b540695e..8057ebc3f 100644 --- a/packages/nestjs-auth-verify/src/services/auth-verify-notification.service.ts +++ b/packages/nestjs-auth-verify/src/services/auth-verify-notification.service.ts @@ -8,6 +8,7 @@ import { import { AuthVerifyEmailServiceInterface } from '../interfaces/auth-verify-email.service.interface'; import { AuthVerifySettingsInterface } from '../interfaces/auth-verify-settings.interface'; import { formatTokenUrl } from '../auth-verify.utils'; +import { AuthVerifyEmailParamsInterface } from '../interfaces/auth-verify-email-params.interface'; @Injectable() export class AuthVerifyNotificationService @@ -24,11 +25,8 @@ export class AuthVerifyNotificationService await this.emailService.sendMail(sendMailOptions); } - async sendVerifyEmail( - email: string, - passcode: string, - resetTokenExp: Date, - ): Promise { + async sendVerifyEmail(params: AuthVerifyEmailParamsInterface): Promise { + const { email, passcode, resetTokenExp } = params; const { from, baseUrl, diff --git a/packages/nestjs-auth-verify/src/services/auth-verify.service.spec.ts b/packages/nestjs-auth-verify/src/services/auth-verify.service.spec.ts index 11702dffb..863df3209 100644 --- a/packages/nestjs-auth-verify/src/services/auth-verify.service.spec.ts +++ b/packages/nestjs-auth-verify/src/services/auth-verify.service.spec.ts @@ -90,11 +90,11 @@ describe(AuthVerifyService, () => { ); expect(sendVerifyEmail).toHaveBeenCalledTimes(1); - expect(sendVerifyEmail).toHaveBeenCalledWith( - UserFixture.email, - 'GOOD_PASSCODE', - expect.any(Date), - ); + expect(sendVerifyEmail).toHaveBeenCalledWith({ + email: UserFixture.email, + passcode: 'GOOD_PASSCODE', + resetTokenExp: expect.any(Date), + }); }); }); diff --git a/packages/nestjs-auth-verify/src/services/auth-verify.service.ts b/packages/nestjs-auth-verify/src/services/auth-verify.service.ts index b1724f5f9..4773b1255 100644 --- a/packages/nestjs-auth-verify/src/services/auth-verify.service.ts +++ b/packages/nestjs-auth-verify/src/services/auth-verify.service.ts @@ -40,9 +40,15 @@ export class AuthVerifyService implements AuthVerifyServiceInterface { ) {} /** - * Send email to verify email. + * Send an email to verify a user's email address. * - * @param email - user email + * This method: + * 1. Looks up the user by email + * 2. If found, creates a one-time passcode (OTP) + * 3. Sends verification email with the OTP + * 4. Returns void regardless of whether user exists (for security) + * + * @param params - Parameters for sending verification email */ async send(params: AuthVerifySendParamsInterface): Promise { const { email, queryOptions } = params; @@ -55,6 +61,7 @@ export class AuthVerifyService implements AuthVerifyServiceInterface { // extract required otp properties const { category, assignment, type, expiresIn, clearOtpOnCreate } = this.config.otp; + // create an OTP save it in the database const otp = await this.otpService.create({ assignment, @@ -71,11 +78,11 @@ export class AuthVerifyService implements AuthVerifyServiceInterface { }); // send en email with a verify OTP - await this.notificationService.sendVerifyEmail( + await this.notificationService.sendVerifyEmail({ email, - otp.passcode, - otp.expirationDate, - ); + passcode: otp.passcode, + resetTokenExp: otp.expirationDate, + }); } // !!! Falling through to void is intentional !!!! @@ -83,10 +90,15 @@ export class AuthVerifyService implements AuthVerifyServiceInterface { } /** - * Validate passcode and return it's user. + * Send an email to verify a user's email address. + * + * This method: + * 1. Looks up the user by email + * 2. If found, creates a one-time passcode (OTP) + * 3. Sends verification email with the OTP + * 4. Returns void regardless of whether user exists (for security) * - * @param passcode - user's passcode - * @param deleteIfValid - flag to delete if valid or not + * @param params - Parameters for sending verification email */ async validatePasscode( params: AuthVerifyValidateParamsInterface, @@ -105,10 +117,15 @@ export class AuthVerifyService implements AuthVerifyServiceInterface { } /** - * Change user's password by providing it's OTP passcode and the new password. + * Confirms a user's account by validating their OTP passcode. + * + * This method: + * 1. Validates the provided OTP passcode + * 2. If valid, marks the user's account as active + * 3. Revokes all other verification tokens for this user + * 4. Returns the updated user if successful, null if invalid passcode * - * @param passcode - OTP user's passcode - * @param queryOptions - query options + * @param params - Parameters for confirming user */ async confirmUser( params: AuthVerifyConfirmParamsInterface, @@ -155,9 +172,10 @@ export class AuthVerifyService implements AuthVerifyServiceInterface { } /** - * Clear all other user verify tokens + * Revokes all verification tokens for a given user * - * @param email - user email + * @param params - Parameters for revoking tokens + * @returns Promise that resolves when tokens are revoked */ async revokeAllUserVerifyToken( params: AuthVerifyRevokeParamsInterface, From 29c7a082058c8d4308f09051bc0b1a400f7dbf6c Mon Sep 17 00:00:00 2001 From: Thiago Ramalho Date: Fri, 10 Jan 2025 11:51:49 -0300 Subject: [PATCH 13/13] chore: mr changes --- .../services/user-mutate.service.fixture.ts | 2 - .../src/auth-verify.module.spec.ts | 124 ++---------------- .../src/auth-verify.module.ts | 14 -- .../src/services/auth-verify.service.ts | 4 +- 4 files changed, 12 insertions(+), 132 deletions(-) diff --git a/packages/nestjs-auth-verify/src/__fixtures__/user/services/user-mutate.service.fixture.ts b/packages/nestjs-auth-verify/src/__fixtures__/user/services/user-mutate.service.fixture.ts index 58666e425..782429d14 100644 --- a/packages/nestjs-auth-verify/src/__fixtures__/user/services/user-mutate.service.fixture.ts +++ b/packages/nestjs-auth-verify/src/__fixtures__/user/services/user-mutate.service.fixture.ts @@ -12,8 +12,6 @@ import { UserFixture } from '../user.fixture'; export class UserMutateServiceFixture implements AuthVerifyUserMutateServiceInterface { - // ReferenceIdInterface & ReferenceActiveInterface, - // ReferenceIdInterface & ReferenceEmailInterface & ReferenceActiveInterface, async update( object: ReferenceIdInterface & ReferenceActiveInterface, ): ReturnType { diff --git a/packages/nestjs-auth-verify/src/auth-verify.module.spec.ts b/packages/nestjs-auth-verify/src/auth-verify.module.spec.ts index ac098545c..b9c987f85 100644 --- a/packages/nestjs-auth-verify/src/auth-verify.module.spec.ts +++ b/packages/nestjs-auth-verify/src/auth-verify.module.spec.ts @@ -1,40 +1,25 @@ -import { mock } from 'jest-mock-extended'; -import { - DynamicModule, - Inject, - Injectable, - Module, - ModuleMetadata, -} from '@nestjs/common'; +import { DynamicModule, ModuleMetadata } from '@nestjs/common'; import { Test, TestingModule } from '@nestjs/testing'; +import { mock } from 'jest-mock-extended'; import { EmailModule, EmailService } from '@concepta/nestjs-email'; -import { - AUTH_VERIFY_MODULE_EMAIL_SERVICE_TOKEN, - AUTH_VERIFY_MODULE_OTP_SERVICE_TOKEN, - AUTH_VERIFY_MODULE_SETTINGS_TOKEN, - AUTH_VERIFY_MODULE_USER_LOOKUP_SERVICE_TOKEN, - AUTH_VERIFY_MODULE_USER_MUTATE_SERVICE_TOKEN, -} from './auth-verify.constants'; - -import { AuthVerifySettingsInterface } from './interfaces/auth-verify-settings.interface'; -import { AuthVerifyOtpServiceInterface } from './interfaces/auth-verify-otp.service.interface'; +import { AuthVerifyController } from './auth-verify.controller'; +import { AuthVerifyModule } from './auth-verify.module'; import { AuthVerifyEmailServiceInterface } from './interfaces/auth-verify-email.service.interface'; +import { AuthVerifyOtpServiceInterface } from './interfaces/auth-verify-otp.service.interface'; import { AuthVerifyUserLookupServiceInterface } from './interfaces/auth-verify-user-lookup.service.interface'; import { AuthVerifyUserMutateServiceInterface } from './interfaces/auth-verify-user-mutate.service.interface'; import { AuthVerifyServiceInterface } from './interfaces/auth-verify.service.interface'; -import { AuthVerifyController } from './auth-verify.controller'; -import { AuthVerifyModule } from './auth-verify.module'; import { AuthVerifyService } from './services/auth-verify.service'; -import { UserLookupServiceFixture } from './__fixtures__/user/services/user-lookup.service.fixture'; -import { UserModuleFixture } from './__fixtures__/user/user.module.fixture'; +import { MailerServiceFixture } from './__fixtures__/email/mailer.service.fixture'; import { OtpModuleFixture } from './__fixtures__/otp/otp.module.fixture'; -import { UserMutateServiceFixture } from './__fixtures__/user/services/user-mutate.service.fixture'; import { OtpServiceFixture } from './__fixtures__/otp/otp.service.fixture'; -import { MailerServiceFixture } from './__fixtures__/email/mailer.service.fixture'; import { TypeOrmModuleFixture } from './__fixtures__/typeorm.module.fixture'; +import { UserLookupServiceFixture } from './__fixtures__/user/services/user-lookup.service.fixture'; +import { UserMutateServiceFixture } from './__fixtures__/user/services/user-mutate.service.fixture'; +import { UserModuleFixture } from './__fixtures__/user/user.module.fixture'; describe(AuthVerifyModule, () => { let testModule: TestingModule; @@ -154,97 +139,6 @@ describe(AuthVerifyModule, () => { }); }); - describe(AuthVerifyModule.forFeature, () => { - @Module({}) - class GlobalModule {} - - @Module({}) - class ForFeatureModule {} - - @Injectable() - class TestService { - constructor( - @Inject(AUTH_VERIFY_MODULE_SETTINGS_TOKEN) - public settings: AuthVerifySettingsInterface, - @Inject(AUTH_VERIFY_MODULE_EMAIL_SERVICE_TOKEN) - public emailService: AuthVerifyEmailServiceInterface, - @Inject(AUTH_VERIFY_MODULE_OTP_SERVICE_TOKEN) - public otpService: AuthVerifyOtpServiceInterface, - @Inject(AUTH_VERIFY_MODULE_USER_LOOKUP_SERVICE_TOKEN) - public userLookupService: AuthVerifyUserLookupServiceInterface, - @Inject(AUTH_VERIFY_MODULE_USER_MUTATE_SERVICE_TOKEN) - public userMutateService: AuthVerifyUserMutateServiceInterface, - ) {} - } - - let testService: TestService; - const ffEmailService = mock(); - const ffOtpService = new OtpServiceFixture(); - const ffUserLookupService = new UserLookupServiceFixture(); - const ffUserMutateService = new UserMutateServiceFixture(); - - beforeEach(async () => { - const globalModule = testModuleFactory([ - AuthVerifyModule.forRootAsync({ - inject: [ - UserLookupServiceFixture, - UserMutateServiceFixture, - OtpServiceFixture, - EmailService, - ], - useFactory: ( - userLookupService, - userMutateService, - otpService, - emailService, - ) => ({ - userLookupService, - userMutateService, - otpService, - emailService, - }), - }), - ]); - - testModule = await Test.createTestingModule({ - imports: [ - { module: GlobalModule, ...globalModule }, - { - module: ForFeatureModule, - imports: [ - AuthVerifyModule.forFeature({ - emailService: ffEmailService, - otpService: ffOtpService, - userLookupService: ffUserLookupService, - userMutateService: ffUserMutateService, - }), - ], - providers: [TestService], - }, - ], - }).compile(); - - testService = testModule.get(TestService); - }); - - it('module should be loaded', async () => { - commonVars(); - commonTests(); - }); - - it('should have custom providers', async () => { - commonVars(); - expect(testService.emailService).toBe(ffEmailService); - expect(testService.emailService).not.toBe(emailService); - expect(testService.otpService).toBe(ffOtpService); - expect(testService.otpService).not.toBe(otpService); - expect(testService.userLookupService).toBe(ffUserLookupService); - expect(testService.userLookupService).not.toBe(userLookupService); - expect(testService.userMutateService).toBe(ffUserMutateService); - expect(testService.userMutateService).not.toBe(userMutateService); - }); - }); - function commonVars() { authVerifyModule = testModule.get(AuthVerifyModule); otpService = diff --git a/packages/nestjs-auth-verify/src/auth-verify.module.ts b/packages/nestjs-auth-verify/src/auth-verify.module.ts index d62406988..cf0620805 100644 --- a/packages/nestjs-auth-verify/src/auth-verify.module.ts +++ b/packages/nestjs-auth-verify/src/auth-verify.module.ts @@ -4,10 +4,6 @@ import { AuthVerifyAsyncOptions, AuthVerifyModuleClass, AuthVerifyOptions, - createAuthVerifyControllers, - createAuthVerifyExports, - createAuthVerifyImports, - createAuthVerifyProviders, } from './auth-verify.module-definition'; @Module({}) @@ -27,14 +23,4 @@ export class AuthVerifyModule extends AuthVerifyModuleClass { static forRootAsync(options: AuthVerifyAsyncOptions): DynamicModule { return super.registerAsync({ ...options, global: true }); } - - static forFeature(options: AuthVerifyOptions): DynamicModule { - return { - module: AuthVerifyModule, - imports: createAuthVerifyImports(), - providers: createAuthVerifyProviders({ overrides: options }), - controllers: createAuthVerifyControllers(options), - exports: createAuthVerifyExports(), - }; - } } diff --git a/packages/nestjs-auth-verify/src/services/auth-verify.service.ts b/packages/nestjs-auth-verify/src/services/auth-verify.service.ts index 4773b1255..7efbd50d1 100644 --- a/packages/nestjs-auth-verify/src/services/auth-verify.service.ts +++ b/packages/nestjs-auth-verify/src/services/auth-verify.service.ts @@ -22,6 +22,7 @@ import { AuthVerifySendParamsInterface } from '../interfaces/auth-verify-send-pa import { AuthVerifyConfirmParamsInterface } from '../interfaces/auth-verify-confirm-params.interface'; import { AuthVerifyRevokeParamsInterface } from '../interfaces/auth-verify-revoke-params.interface'; import { AuthVerifyValidateParamsInterface } from '../interfaces/auth-verify-validate-params.interface'; +import { AuthVerifyNotificationServiceInterface } from '../interfaces/auth-verify-notification.service.interface'; @Injectable() export class AuthVerifyService implements AuthVerifyServiceInterface { @@ -34,7 +35,8 @@ export class AuthVerifyService implements AuthVerifyServiceInterface { private readonly userLookupService: AuthVerifyUserLookupServiceInterface, @Inject(AUTH_VERIFY_MODULE_USER_MUTATE_SERVICE_TOKEN) private readonly userMutateService: AuthVerifyUserMutateServiceInterface, - private readonly notificationService: AuthVerifyNotificationService, + @Inject(AuthVerifyNotificationService) + private readonly notificationService: AuthVerifyNotificationServiceInterface, @Inject(AUTH_VERIFY_MODULE_ENTITY_MANAGER_PROXY_TOKEN) private readonly entityManagerProxy: EntityManagerProxy, ) {}