From 4616685840f2f5f2ce5b668f3486bd8e800092f8 Mon Sep 17 00:00:00 2001 From: ack Date: Wed, 24 Jan 2024 19:11:36 +0700 Subject: [PATCH 1/6] aws s3 interface put item --- src/common/aws/interfaces/aws.interface.ts | 6 ++ .../interfaces/aws.s3-service.interface.ts | 10 +-- src/common/aws/services/aws.s3.service.ts | 6 +- test/aws/aws.s3.service.spec.ts | 71 ++++--------------- 4 files changed, 27 insertions(+), 66 deletions(-) diff --git a/src/common/aws/interfaces/aws.interface.ts b/src/common/aws/interfaces/aws.interface.ts index 4b2a60f85..9cadca69f 100644 --- a/src/common/aws/interfaces/aws.interface.ts +++ b/src/common/aws/interfaces/aws.interface.ts @@ -10,3 +10,9 @@ export interface IAwsS3RandomFilename { path: string; customFilename: string; } + +export interface IAwsS3PutItem { + buffer: string | Uint8Array | Buffer; + originalname: string; + size: number; +} diff --git a/src/common/aws/interfaces/aws.s3-service.interface.ts b/src/common/aws/interfaces/aws.s3-service.interface.ts index 848923b46..9242fce08 100644 --- a/src/common/aws/interfaces/aws.s3-service.interface.ts +++ b/src/common/aws/interfaces/aws.s3-service.interface.ts @@ -1,11 +1,13 @@ import { HeadBucketCommandOutput, UploadPartRequest } from '@aws-sdk/client-s3'; -import { IAwsS3PutItemOptions } from 'src/common/aws/interfaces/aws.interface'; +import { + IAwsS3PutItem, + IAwsS3PutItemOptions, +} from 'src/common/aws/interfaces/aws.interface'; import { AwsS3MultipartPartsSerialization, AwsS3MultipartSerialization, } from 'src/common/aws/serializations/aws.s3-multipart.serialization'; import { AwsS3Serialization } from 'src/common/aws/serializations/aws.s3.serialization'; -import { IFile } from 'src/common/file/interfaces/file.interface'; import { Readable } from 'stream'; export interface IAwsS3Service { @@ -16,14 +18,14 @@ export interface IAwsS3Service { pathWithFilename: string ): Promise | Blob>; putItemInBucket( - file: IFile, + file: IAwsS3PutItem, options?: IAwsS3PutItemOptions ): Promise; deleteItemInBucket(pathWithFilename: string): Promise; deleteItemsInBucket(pathWithFilename: string[]): Promise; deleteFolder(dir: string): Promise; createMultiPart( - file: IFile, + file: IAwsS3PutItem, maxPartNumber: number, options?: IAwsS3PutItemOptions ): Promise; diff --git a/src/common/aws/services/aws.s3.service.ts b/src/common/aws/services/aws.s3.service.ts index 4359839b1..24115b0a4 100644 --- a/src/common/aws/services/aws.s3.service.ts +++ b/src/common/aws/services/aws.s3.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { + IAwsS3PutItem, IAwsS3PutItemOptions, IAwsS3RandomFilename, } from 'src/common/aws/interfaces/aws.interface'; @@ -55,7 +56,6 @@ import { ObjectCannedACL, CompletedPart, } from '@aws-sdk/client-s3'; -import { IFile } from 'src/common/file/interfaces/file.interface'; import { HelperStringService } from 'src/common/helper/services/helper.string.service'; @Injectable() @@ -179,7 +179,7 @@ export class AwsS3Service implements IAwsS3Service { } async putItemInBucket( - file: IFile, + file: IAwsS3PutItem, options?: IAwsS3PutItemOptions ): Promise { let path: string = options?.path; @@ -309,7 +309,7 @@ export class AwsS3Service implements IAwsS3Service { } async createMultiPart( - file: IFile, + file: IAwsS3PutItem, maxPartNumber: number, options?: IAwsS3PutItemOptions ): Promise { diff --git a/test/aws/aws.s3.service.spec.ts b/test/aws/aws.s3.service.spec.ts index 3d49b2556..be92fabf8 100644 --- a/test/aws/aws.s3.service.spec.ts +++ b/test/aws/aws.s3.service.spec.ts @@ -13,13 +13,14 @@ import { } from '@aws-sdk/client-s3'; import { ConfigService } from '@nestjs/config'; import { Test, TestingModule } from '@nestjs/testing'; -import { IAwsS3PutItemOptions } from 'src/common/aws/interfaces/aws.interface'; +import { + IAwsS3PutItem, + IAwsS3PutItemOptions, +} from 'src/common/aws/interfaces/aws.interface'; import { AwsS3MultipartSerialization } from 'src/common/aws/serializations/aws.s3-multipart.serialization'; import { AwsS3Serialization } from 'src/common/aws/serializations/aws.s3.serialization'; import { AwsS3Service } from 'src/common/aws/services/aws.s3.service'; -import { IFile } from 'src/common/file/interfaces/file.interface'; import { HelperStringService } from 'src/common/helper/services/helper.string.service'; -import { Readable } from 'stream'; describe('AwsS3Service', () => { const bucket = 'test-bucket'; @@ -310,16 +311,10 @@ describe('AwsS3Service', () => { mime: 'png', size: 1, }; - const file: IFile = { + const file: IAwsS3PutItem = { buffer: Buffer.from('test-content'), - destination: '', - fieldname: '', - mimetype: 'mimetype', originalname: 'file.png', - path: '', size: 1, - encoding: 'true', - stream: new Readable(), }; const options: IAwsS3PutItemOptions = { acl: 'public-read', @@ -348,16 +343,10 @@ describe('AwsS3Service', () => { mime: 'png', size: 1, }; - const file: IFile = { + const file: IAwsS3PutItem = { buffer: Buffer.from('test-content'), - destination: '', - fieldname: '', - mimetype: 'mimetype', originalname: 'file.png', - path: '', size: 1, - encoding: 'true', - stream: new Readable(), }; const options: IAwsS3PutItemOptions = { acl: 'public-read', @@ -386,16 +375,10 @@ describe('AwsS3Service', () => { size: 1, path: 'test', }; - const file: IFile = { + const file: IAwsS3PutItem = { buffer: Buffer.from('test-content'), - destination: '', - fieldname: '', - mimetype: 'mimetype', originalname: 'file.png', - path: '', size: 1, - encoding: 'true', - stream: new Readable(), }; const options: IAwsS3PutItemOptions = { acl: 'public-read', @@ -415,16 +398,10 @@ describe('AwsS3Service', () => { error as never ); - const file: IFile = { + const file: IAwsS3PutItem = { buffer: Buffer.from('test-content'), - destination: '', - fieldname: '', - mimetype: 'mimetype', originalname: 'file.png', - path: '', size: 1, - encoding: 'true', - stream: new Readable(), }; const result = service.putItemInBucket(file); @@ -575,16 +552,10 @@ describe('AwsS3Service', () => { data as never ); - const file: IFile = { + const file: IAwsS3PutItem = { buffer: Buffer.from('test-content'), - destination: '', - fieldname: '', - mimetype: 'mimetype', originalname: 'file.png', - path: '', size: 1, - encoding: 'true', - stream: new Readable(), }; const result = await service.createMultiPart(file, 2, options); @@ -620,16 +591,10 @@ describe('AwsS3Service', () => { data as never ); - const file: IFile = { + const file: IAwsS3PutItem = { buffer: Buffer.from('test-content'), - destination: '', - fieldname: '', - mimetype: 'mimetype', originalname: 'file.png', - path: '', size: 1, - encoding: 'true', - stream: new Readable(), }; const result = await service.createMultiPart(file, 2, options); @@ -666,16 +631,10 @@ describe('AwsS3Service', () => { data as never ); - const file: IFile = { + const file: IAwsS3PutItem = { buffer: Buffer.from('test-content'), - destination: '', - fieldname: '', - mimetype: 'mimetype', originalname: 'file.png', - path: '', size: 1, - encoding: 'true', - stream: new Readable(), }; const result = await service.createMultiPart(file, 2, options); @@ -704,16 +663,10 @@ describe('AwsS3Service', () => { error as never ); - const file: IFile = { + const file: IAwsS3PutItem = { buffer: Buffer.from('test-content'), - destination: '', - fieldname: '', - mimetype: 'mimetype', originalname: 'file.png', - path: '', size: 1, - encoding: 'true', - stream: new Readable(), }; const result = service.createMultiPart(file, 2); From 3116d4bc33aad5b97471e6233aa52b8336d3d5c0 Mon Sep 17 00:00:00 2001 From: ack Date: Wed, 24 Jan 2024 19:36:45 +0700 Subject: [PATCH 2/6] database ubstract --- .../entities/database.mongo.object-id.entity.abstract.ts | 4 +++- .../mongo/entities/database.mongo.uuid.entity.abstract.ts | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/common/database/abstracts/mongo/entities/database.mongo.object-id.entity.abstract.ts b/src/common/database/abstracts/mongo/entities/database.mongo.object-id.entity.abstract.ts index 45efe65de..0380efd83 100644 --- a/src/common/database/abstracts/mongo/entities/database.mongo.object-id.entity.abstract.ts +++ b/src/common/database/abstracts/mongo/entities/database.mongo.object-id.entity.abstract.ts @@ -26,13 +26,15 @@ export abstract class DatabaseMongoObjectIdEntityAbstract extends DatabaseBaseEn required: false, index: 'asc', type: Date, + default: new Date(), }) [DATABASE_CREATED_AT_FIELD_NAME]?: Date; @Prop({ required: false, - index: 'desc', + index: 'asc', type: Date, + default: new Date(), }) [DATABASE_UPDATED_AT_FIELD_NAME]?: Date; } diff --git a/src/common/database/abstracts/mongo/entities/database.mongo.uuid.entity.abstract.ts b/src/common/database/abstracts/mongo/entities/database.mongo.uuid.entity.abstract.ts index ccbc3c5f9..5f21be086 100644 --- a/src/common/database/abstracts/mongo/entities/database.mongo.uuid.entity.abstract.ts +++ b/src/common/database/abstracts/mongo/entities/database.mongo.uuid.entity.abstract.ts @@ -25,13 +25,15 @@ export abstract class DatabaseMongoUUIDEntityAbstract extends DatabaseBaseEntity required: false, index: 'asc', type: Date, + default: new Date(), }) [DATABASE_CREATED_AT_FIELD_NAME]?: Date; @Prop({ required: false, - index: 'desc', + index: 'asc', type: Date, + default: new Date(), }) [DATABASE_UPDATED_AT_FIELD_NAME]?: Date; } From 85561524e20e6f6061cc2569affedf4cd6f875c8 Mon Sep 17 00:00:00 2001 From: ack Date: Fri, 26 Jan 2024 01:09:57 +0700 Subject: [PATCH 3/6] add date helper diff options --- src/common/api-key/docs/api-key.user.doc.ts | 138 ------------------ .../helper/constants/helper.enum.constant.ts | 8 +- .../helper/services/helper.date.service.ts | 5 +- 3 files changed, 6 insertions(+), 145 deletions(-) delete mode 100644 src/common/api-key/docs/api-key.user.doc.ts diff --git a/src/common/api-key/docs/api-key.user.doc.ts b/src/common/api-key/docs/api-key.user.doc.ts deleted file mode 100644 index 18c0191c2..000000000 --- a/src/common/api-key/docs/api-key.user.doc.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { applyDecorators, HttpStatus } from '@nestjs/common'; -import { - ApiKeyDocParamsId, - ApiKeyDocQueryIsActive, -} from 'src/common/api-key/constants/api-key.doc.constant'; -import { ApiKeyCreateSerialization } from 'src/common/api-key/serializations/api-key.create.serialization'; -import { ApiKeyGetSerialization } from 'src/common/api-key/serializations/api-key.get.serialization'; -import { ApiKeyListSerialization } from 'src/common/api-key/serializations/api-key.list.serialization'; -import { ApiKeyResetSerialization } from 'src/common/api-key/serializations/api-key.reset.serialization'; -import { - Doc, - DocAuth, - DocRequest, - DocGuard, - DocResponse, - DocResponsePaging, -} from 'src/common/doc/decorators/doc.decorator'; -import { ResponseIdSerialization } from 'src/common/response/serializations/response.id.serialization'; - -export function ApiKeyUserListDoc(): MethodDecorator { - return applyDecorators( - Doc({ summary: 'get list of api keys' }), - DocRequest({ - queries: ApiKeyDocQueryIsActive, - }), - DocAuth({ - jwtAccessToken: true, - }), - DocGuard({ role: true }), - DocResponsePaging('apiKey.list', { - serialization: ApiKeyListSerialization, - }) - ); -} - -export function ApiKeyUserGetDoc(): MethodDecorator { - return applyDecorators( - Doc({ summary: 'get detail an api key' }), - DocRequest({ - params: ApiKeyDocParamsId, - }), - DocAuth({ - jwtAccessToken: true, - }), - DocGuard({ role: true }), - DocResponse('apiKey.get', { - serialization: ApiKeyGetSerialization, - }) - ); -} - -export function ApiKeyUserCreateDoc(): MethodDecorator { - return applyDecorators( - Doc({ summary: 'create an api key' }), - DocAuth({ - jwtAccessToken: true, - }), - DocGuard({ role: true }), - DocResponse('apiKey.create', { - httpStatus: HttpStatus.CREATED, - serialization: ApiKeyCreateSerialization, - }) - ); -} - -export function ApiKeyUserActiveDoc(): MethodDecorator { - return applyDecorators( - Doc({ summary: 'make api key be active' }), - DocRequest({ - params: ApiKeyDocParamsId, - }), - DocAuth({ - jwtAccessToken: true, - }), - DocGuard({ role: true }), - DocResponse('apiKey.active') - ); -} - -export function ApiKeyUserInactiveDoc(): MethodDecorator { - return applyDecorators( - Doc({ summary: 'make api key be inactive' }), - DocRequest({ - params: ApiKeyDocParamsId, - }), - DocAuth({ - jwtAccessToken: true, - }), - DocGuard({ role: true }), - DocResponse('apiKey.inactive') - ); -} - -export function ApiKeyUserResetDoc(): MethodDecorator { - return applyDecorators( - Doc({ summary: 'reset secret an api key' }), - DocRequest({ - params: ApiKeyDocParamsId, - }), - DocAuth({ - jwtAccessToken: true, - }), - DocGuard({ role: true }), - DocResponse('apiKey.reset', { - serialization: ApiKeyResetSerialization, - }) - ); -} - -export function ApiKeyUserUpdateDoc(): MethodDecorator { - return applyDecorators( - Doc({ summary: 'update data an api key' }), - DocRequest({ - params: ApiKeyDocParamsId, - }), - DocAuth({ - jwtAccessToken: true, - }), - DocGuard({ role: true }), - DocResponse('apiKey.update', { - serialization: ResponseIdSerialization, - }) - ); -} - -export function ApiKeyUserDeleteDoc(): MethodDecorator { - return applyDecorators( - Doc({ summary: 'delete an api key' }), - DocRequest({ - params: ApiKeyDocParamsId, - }), - DocAuth({ - jwtAccessToken: true, - }), - DocGuard({ role: true }), - DocResponse('apiKey.delete') - ); -} diff --git a/src/common/helper/constants/helper.enum.constant.ts b/src/common/helper/constants/helper.enum.constant.ts index f3c04fe88..b61842f07 100644 --- a/src/common/helper/constants/helper.enum.constant.ts +++ b/src/common/helper/constants/helper.enum.constant.ts @@ -1,7 +1,9 @@ export enum ENUM_HELPER_DATE_FORMAT { DATE = 'YYYY-MM-DD', - FRIENDLY_DATE = 'MMM, DD YYYY', - FRIENDLY_DATE_TIME = 'MMM, DD YYYY HH:MM:SS', + FRIENDLY_DATE = 'DD MMM YYYY', + FRIENDLY_DATE_TIME = 'DD MMM YYYY HH:MM:SS', + FRIENDLY_DATE_WITH_DAY = 'dddd, DD MMM YYYY', + FRIENDLY_DATE_TIME_WITH_DAY = 'dddd, DD MMM YYYY HH:MM:SS', YEAR_MONTH = 'YYYY-MM', MONTH_DATE = 'MM-DD', ONLY_YEAR = 'YYYY', @@ -22,9 +24,9 @@ export enum ENUM_HELPER_DATE_FORMAT { export enum ENUM_HELPER_DATE_DIFF { MILIS = 'milis', SECONDS = 'seconds', + MINUTES = 'minutes', HOURS = 'hours', DAYS = 'days', - MINUTES = 'minutes', } export enum ENUM_HELPER_FILE_TYPE { diff --git a/src/common/helper/services/helper.date.service.ts b/src/common/helper/services/helper.date.service.ts index e4699967a..d93e683b7 100644 --- a/src/common/helper/services/helper.date.service.ts +++ b/src/common/helper/services/helper.date.service.ts @@ -178,10 +178,7 @@ export class HelperDateService implements IHelperDateService { } forwardInDays(days: number, options?: IHelperDateOptionsForward): Date { - return moment(options?.fromDate) - .tz(this.defTz) - .add(days, 'd') - .toDate(); + return moment(options?.fromDate).tz(this.defTz).add(days, 'd').toDate(); } backwardInDays(days: number, options?: IHelperDateOptionsBackward): Date { From b53cc7eb4555863340c01de95579c4c0362ae275 Mon Sep 17 00:00:00 2001 From: ack Date: Fri, 26 Jan 2024 15:43:58 +0700 Subject: [PATCH 4/6] ups --- package.json | 22 +- .../constants/policy.status-code.constant.ts | 2 +- yarn.lock | 188 +++++++++--------- 3 files changed, 106 insertions(+), 106 deletions(-) diff --git a/package.json b/package.json index 753ef50e8..f7e9ec498 100644 --- a/package.json +++ b/package.json @@ -47,10 +47,10 @@ "rollback": "yarn rollback:email && yarn rollback:apikey && yarn rollback:user && yarn rollback:role" }, "dependencies": { - "@aws-sdk/client-s3": "^3.498.0", - "@aws-sdk/client-ses": "^3.498.0", + "@aws-sdk/client-s3": "^3.499.0", + "@aws-sdk/client-ses": "^3.499.0", "@casl/ability": "^6.5.0", - "@faker-js/faker": "^8.3.1", + "@faker-js/faker": "^8.4.0", "@joi/date": "^2.1.0", "@nestjs/axios": "^3.0.1", "@nestjs/common": "^10.3.1", @@ -65,20 +65,20 @@ "@nestjs/terminus": "^10.2.0", "@nestjs/throttler": "^5.1.1", "@ntegral/nestjs-sentry": "^4.0.1", - "@sentry/node": "^7.95.0", + "@sentry/node": "^7.98.0", "@types/response-time": "^2.3.8", - "axios": "^1.6.5", + "axios": "^1.6.7", "bcryptjs": "^2.4.3", "case": "^1.6.3", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", "crypto-js": "^4.2.0", - "google-auth-library": "^9.4.2", + "google-auth-library": "^9.5.0", "helmet": "^7.1.0", "joi": "^17.12.0", "moment": "^2.30.1", "moment-timezone": "^0.5.44", - "mongoose": "^8.1.0", + "mongoose": "^8.1.1", "nest-winston": "^1.9.4", "nestjs-command": "^3.1.4", "nestjs-i18n": "^10.4.0", @@ -110,18 +110,18 @@ "@types/lodash": "^4.14.202", "@types/ms": "^0.7.34", "@types/multer": "^1.4.11", - "@types/node": "^20.11.6", - "@types/passport-jwt": "^4.0.0", + "@types/node": "^20.11.7", + "@types/passport-jwt": "^4.0.1", "@types/supertest": "^6.0.2", "@types/ua-parser-js": "^0.7.39", - "@types/uuid": "^9.0.7", + "@types/uuid": "^9.0.8", "@typescript-eslint/eslint-plugin": "^6.19.1", "@typescript-eslint/parser": "^6.19.1", "cspell": "^8.3.2", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "^2.29.1", - "husky": "^8.0.3", + "husky": "^9.0.6", "jest": "^29.7.0", "prettier": "^3.2.4", "supertest": "^6.3.4", diff --git a/src/common/policy/constants/policy.status-code.constant.ts b/src/common/policy/constants/policy.status-code.constant.ts index 5f8e69790..af2249a9a 100644 --- a/src/common/policy/constants/policy.status-code.constant.ts +++ b/src/common/policy/constants/policy.status-code.constant.ts @@ -1,3 +1,3 @@ export enum ENUM_POLICY_STATUS_CODE_ERROR { - POLICY_ABILITY_FORBIDDEN_ERROR = 50010, + POLICY_ABILITY_FORBIDDEN_ERROR = 5010, } diff --git a/yarn.lock b/yarn.lock index eb5eb7bb1..8e38c0d73 100644 --- a/yarn.lock +++ b/yarn.lock @@ -149,17 +149,17 @@ "@aws-sdk/util-utf8-browser" "^3.0.0" tslib "^1.11.1" -"@aws-sdk/client-s3@^3.498.0": - version "3.498.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.498.0.tgz#f5de8a09fc6a0a4ec08b853b561a85d2480f81d2" - integrity sha512-M1nDbKYW04SkPsQafp6JTqfCeiRy4ELHBpX+DRwNmb7MsPy2aBk+rjbREBt233xDCrd8C9HswJhJ18U37KQTgA== +"@aws-sdk/client-s3@^3.499.0": + version "3.499.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.499.0.tgz#93c3fbd530ad938c3c2d196981646ba72e963734" + integrity sha512-4ssQqde/iY5fTJbWuFPzPuECtihdCAA9tfluv6fXYCJS3wMLf9x21qp6b7fIbUf6vjOJ2edmYd+DXk+0CMnTFg== dependencies: "@aws-crypto/sha1-browser" "3.0.0" "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.496.0" + "@aws-sdk/client-sts" "3.499.0" "@aws-sdk/core" "3.496.0" - "@aws-sdk/credential-provider-node" "3.496.0" + "@aws-sdk/credential-provider-node" "3.499.0" "@aws-sdk/middleware-bucket-endpoint" "3.496.0" "@aws-sdk/middleware-expect-continue" "3.496.0" "@aws-sdk/middleware-flexible-checksums" "3.496.0" @@ -167,12 +167,12 @@ "@aws-sdk/middleware-location-constraint" "3.496.0" "@aws-sdk/middleware-logger" "3.496.0" "@aws-sdk/middleware-recursion-detection" "3.496.0" - "@aws-sdk/middleware-sdk-s3" "3.496.0" + "@aws-sdk/middleware-sdk-s3" "3.499.0" "@aws-sdk/middleware-signing" "3.496.0" "@aws-sdk/middleware-ssec" "3.498.0" "@aws-sdk/middleware-user-agent" "3.496.0" "@aws-sdk/region-config-resolver" "3.496.0" - "@aws-sdk/signature-v4-multi-region" "3.496.0" + "@aws-sdk/signature-v4-multi-region" "3.499.0" "@aws-sdk/types" "3.496.0" "@aws-sdk/util-endpoints" "3.496.0" "@aws-sdk/util-user-agent-browser" "3.496.0" @@ -213,16 +213,16 @@ fast-xml-parser "4.2.5" tslib "^2.5.0" -"@aws-sdk/client-ses@^3.498.0": - version "3.498.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-ses/-/client-ses-3.498.0.tgz#80c029fc6605206a5f6ff3c21feaf8821ce3cdd0" - integrity sha512-LUzaOT6ZklTUNpUqidb3I5Zb01yzNJhOhm0fz7HaFf7JzRPFxPUviN6tlVbWNMP14/aciJyGztrzGwv53M9m/A== +"@aws-sdk/client-ses@^3.499.0": + version "3.499.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-ses/-/client-ses-3.499.0.tgz#4be39406ca04583c21c88315898354833f16729b" + integrity sha512-KibTMz6HO75niU4Rpp9e1fGpfuwLOhCuaHM4ddnn6fsE76HJnu0RcnORdt+KGC0HLUcGwiw1Z4pQXC0MCGTsSA== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.496.0" + "@aws-sdk/client-sts" "3.499.0" "@aws-sdk/core" "3.496.0" - "@aws-sdk/credential-provider-node" "3.496.0" + "@aws-sdk/credential-provider-node" "3.499.0" "@aws-sdk/middleware-host-header" "3.496.0" "@aws-sdk/middleware-logger" "3.496.0" "@aws-sdk/middleware-recursion-detection" "3.496.0" @@ -304,15 +304,15 @@ "@smithy/util-utf8" "^2.1.1" tslib "^2.5.0" -"@aws-sdk/client-sts@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.496.0.tgz#e0c142cf8bb1aec7a9c7b09dd9739f6773d94fd0" - integrity sha512-3pSdqgegdwbK3CT1WvGHhA+Bf91R9cr8G1Ynp+iU2wZvy8ueJfMUk0NYfjo3EEv0YhSbMLKuduzZfvQHFHXYhw== +"@aws-sdk/client-sts@3.499.0": + version "3.499.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.499.0.tgz#4c8260ed1fda7ad2c4e5fe12e4eaa5849da77d92" + integrity sha512-Eyj9STw2DXMtXL5V/v0HYHO6+JjGPi257M5IYyxwqlvRchq6jbOsedobfxclB/gBUyBRtZdnyAIS8uCKjb4kpA== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" "@aws-sdk/core" "3.496.0" - "@aws-sdk/credential-provider-node" "3.496.0" + "@aws-sdk/credential-provider-node" "3.499.0" "@aws-sdk/middleware-host-header" "3.496.0" "@aws-sdk/middleware-logger" "3.496.0" "@aws-sdk/middleware-recursion-detection" "3.496.0" @@ -388,10 +388,10 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/credential-provider-node@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.496.0.tgz#734fc5aa824c387c893ff5624b201c0243ea1c7c" - integrity sha512-IVF9RvLePfRa5S5/eBIRChJCWOzQkGwM8P/L79Gl84u/cH2oSG4NtUI/YTDlrtmnYn7YsGhINSV0WnzfF2twfQ== +"@aws-sdk/credential-provider-node@3.499.0": + version "3.499.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.499.0.tgz#7980144fdd04e1e39af850084444ec29d2918473" + integrity sha512-EsiSevVmcVSMIq7D9siSH/XVc5I0vMntg1rx6KQdng1Fq8X/RBL5t9wSWEwOl7KFo5HlEsWrLWIpo1WHuzIL/w== dependencies: "@aws-sdk/credential-provider-env" "3.496.0" "@aws-sdk/credential-provider-ini" "3.496.0" @@ -514,10 +514,10 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/middleware-sdk-s3@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.496.0.tgz#8d15cd44578da34159d99282b5de734a0f50db7c" - integrity sha512-OKrTPzubisQCQzPuF4G7jmbYt71o6W7oefmW9zm1MpGokRSJeC9zv4aT1gkMglpXEHgvL0S5fUVGi0AtF/F8Kw== +"@aws-sdk/middleware-sdk-s3@3.499.0": + version "3.499.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.499.0.tgz#4ba6a8308a971c4e77a2c8132ef894ca01d0612d" + integrity sha512-thTb47U1hYHk5ei+yO0D0aehbgQXeAcgvyyxOID9/HDuRfWuTvKdclWh/goIeDfvSS87VBukEAjnCa5JYBwzug== dependencies: "@aws-sdk/types" "3.496.0" "@aws-sdk/util-arn-parser" "3.495.0" @@ -574,12 +574,12 @@ "@smithy/util-middleware" "^2.1.1" tslib "^2.5.0" -"@aws-sdk/signature-v4-multi-region@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.496.0.tgz#0084ad38ab25dc50d5965d31a9c659673d82e86f" - integrity sha512-zi3cL8+dRVSvC0PA6votwEHF4l9uxOyQTiRfgpFgzJ9iiPbsrtWCalGCwN0UyzmeDv7eViU6FK1YTHH/OgDJ4A== +"@aws-sdk/signature-v4-multi-region@3.499.0": + version "3.499.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.499.0.tgz#a0f4171db60b3f1e926e90c19b4f6ce1c2ad2596" + integrity sha512-8HSFnZErRm7lAfk+Epxrf4QNdQEamg1CnbLybtKQQEjmvxLuXYvj16KlpYEZIwEENOMEvnCqMc7syTPkmjVhJA== dependencies: - "@aws-sdk/middleware-sdk-s3" "3.496.0" + "@aws-sdk/middleware-sdk-s3" "3.499.0" "@aws-sdk/types" "3.496.0" "@smithy/protocol-http" "^3.1.1" "@smithy/signature-v4" "^2.1.1" @@ -1398,10 +1398,10 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== -"@faker-js/faker@^8.3.1": - version "8.3.1" - resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-8.3.1.tgz#7753df0cb88d7649becf984a96dd1bd0a26f43e3" - integrity sha512-FdgpFxY6V6rLZE9mmIBb9hM0xpfvQOSNOLnzolzKwsE1DH+gC7lEKV1p1IbR0lAYyvYd5a4u3qWJzowUkw1bIw== +"@faker-js/faker@^8.4.0": + version "8.4.0" + resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-8.4.0.tgz#dc09924ee5fa6438eaaa49d0a8820c64d2f8518f" + integrity sha512-htW87352wzUCdX1jyUQocUcmAaFqcR/w082EC8iP/gtkF0K+aKcBp0hR5Arb7dzR8tQ1TrhE9DNa5EbJELm84w== "@graphql-tools/merge@9.0.0": version "9.0.0" @@ -2066,44 +2066,44 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@sentry-internal/tracing@7.95.0": - version "7.95.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.95.0.tgz#d439ac65bc612ec9a808ad39a2088d1577c17a18" - integrity sha512-YKiLPMnEgTsTh7u/W1Zep9HtV1rJqAetqJ4ekaIxyUUB6ppi6V00MacSjb01o++fwlNNDYFxNpJlgQqNPqsCNA== +"@sentry-internal/tracing@7.98.0": + version "7.98.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.98.0.tgz#812ef7fce6b64794784f3279c66bc6b5cfd29d7f" + integrity sha512-FnhD2uMLIAJvv4XsYPv3qsTTtxrImyLxiZacudJyaWFhxoeVQ8bKKbWJ/Ar68FAwqTtjXMeY5evnEBbRMcQlaA== dependencies: - "@sentry/core" "7.95.0" - "@sentry/types" "7.95.0" - "@sentry/utils" "7.95.0" + "@sentry/core" "7.98.0" + "@sentry/types" "7.98.0" + "@sentry/utils" "7.98.0" -"@sentry/core@7.95.0": - version "7.95.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.95.0.tgz#b16a4d82cdcaa3b330091dd624a4416e63d157ab" - integrity sha512-z+ffO6jK/ZUxnRbBGmnj5sOouKZ4mvRY0KJa33kbyqcmeiJKrN81M7Ecj1IJUCamo/6RqX0GCwDDxgUPZZZBwA== +"@sentry/core@7.98.0": + version "7.98.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.98.0.tgz#e4f5353bc3986e510b8dd2507355787440d6e25d" + integrity sha512-baRUcpCNGyk7cApQHMfqEZJkXdvAKK+z/dVWiMqWc5T5uhzMnPE8/gjP1JZsMtJSQ8g5nHimBdI5TwOyZtxPaA== dependencies: - "@sentry/types" "7.95.0" - "@sentry/utils" "7.95.0" + "@sentry/types" "7.98.0" + "@sentry/utils" "7.98.0" -"@sentry/node@^7.95.0": - version "7.95.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.95.0.tgz#f9c846d4f8cf31f589b6f002162a9da45fbd3944" - integrity sha512-3fbN+4ajPly9rhbuJtuZ+o2FGmka8Y7A3T/ooHuhCGoWegKtn3OzaOIrdwcYoBIy1fO6SuldTi/P72Y7wgIPtw== +"@sentry/node@^7.98.0": + version "7.98.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.98.0.tgz#49d0a46e72f4e6116b4929d033322951e5a7e88b" + integrity sha512-9cHW217DnU9wC4iR+QxmY3q59N1Touh23hPMDtpMRmbRHSgrmLMoHTVPhK9zHsXRs0mUeidmMqY1ubAWauQByw== dependencies: - "@sentry-internal/tracing" "7.95.0" - "@sentry/core" "7.95.0" - "@sentry/types" "7.95.0" - "@sentry/utils" "7.95.0" + "@sentry-internal/tracing" "7.98.0" + "@sentry/core" "7.98.0" + "@sentry/types" "7.98.0" + "@sentry/utils" "7.98.0" -"@sentry/types@7.95.0": - version "7.95.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.95.0.tgz#94fbde10eaec4949d81ca9e3f6fe1d1cc0b2d9e5" - integrity sha512-ouU7NsEcrwmcnXHMNBGmKZEmKMzmgPGoBydZn1gukCI67Ci71fAYpPNrbtmjai6+jtsY21o45rVLqExru2sdfw== +"@sentry/types@7.98.0": + version "7.98.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.98.0.tgz#6a88bf60679aea88ac6cba4d1517958726c2bafb" + integrity sha512-pc034ziM0VTETue4bfBcBqTWGy4w0okidtoZJjGVrYAfE95ObZnUGVj/XYIQ3FeCYWIa7NFN2MvdsCS0buwivQ== -"@sentry/utils@7.95.0": - version "7.95.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.95.0.tgz#2b66778eb70a412f3ac0147bbcd0648a914f0411" - integrity sha512-0zget8AOaQWLIEA9cTx/qiQQYpx2x0UfnaW5xRmQg12QGTSngo/cUm9O04zuHw5gpBBGG0ocMDHxwwr+UCCBiw== +"@sentry/utils@7.98.0": + version "7.98.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.98.0.tgz#54355a197f7f71a6d17354a3d043022df402b502" + integrity sha512-0/LY+kpHxItVRY0xPDXPXVsKRb95cXsGSQf8sVMtfSjz++0bLL1U4k7PFz1c5s2/Vk0B8hS6duRrgMv6dMIZDw== dependencies: - "@sentry/types" "7.95.0" + "@sentry/types" "7.98.0" "@sideway/address@^4.1.4": version "4.1.4" @@ -2892,10 +2892,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.3.tgz#463fc47f13ec0688a33aec75d078a0541a447199" integrity sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ== -"@types/node@^20.11.6": - version "20.11.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.6.tgz#6adf4241460e28be53836529c033a41985f85b6e" - integrity sha512-+EOokTnksGVgip2PbYbr3xnR7kZigh4LbybAfBAw5BpnQ+FqBYUsvCEjYd70IXKlbohQ64mzEYmMtlWUY8q//Q== +"@types/node@^20.11.7": + version "20.11.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.7.tgz#cb49aedd758c978c30806d0c38b520ed2a3df6e0" + integrity sha512-GPmeN1C3XAyV5uybAf4cMLWT9fDWcmQhZVtMFu7OR32WjrqGG+Wnk2V1d0bmtUyE/Zy1QJ9BxyiTih9z8Oks8A== dependencies: undici-types "~5.26.4" @@ -2904,10 +2904,10 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/passport-jwt@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/passport-jwt/-/passport-jwt-4.0.0.tgz#96fd75557b83352efe9f5ca55d5e7ab9e7194d4d" - integrity sha512-m32144UaQENieShQDWVQ8w+CVAzCV/pDahICUlQvmqLOePGglQaMRQ28I7fKnRMFLNwVP4eWssOtcQ0kLe1vww== +"@types/passport-jwt@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/passport-jwt/-/passport-jwt-4.0.1.tgz#080fbe934fb9f6954fb88ec4cdf4bb2cc7c4d435" + integrity sha512-Y0Ykz6nWP4jpxgEUYq8NoVZeCQPo1ZndJLfapI249g1jHChvRfZRO/LS3tqu26YgAS/laI1qx98sYGz0IalRXQ== dependencies: "@types/jsonwebtoken" "*" "@types/passport-strategy" "*" @@ -2985,10 +2985,10 @@ resolved "https://registry.yarnpkg.com/@types/ua-parser-js/-/ua-parser-js-0.7.39.tgz#832c58e460c9435e4e34bb866e85e9146e12cdbb" integrity sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg== -"@types/uuid@^9.0.7": - version "9.0.7" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.7.tgz#b14cebc75455eeeb160d5fe23c2fcc0c64f724d8" - integrity sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g== +"@types/uuid@^9.0.8": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba" + integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA== "@types/validator@^13.11.8": version "13.11.8" @@ -3547,10 +3547,10 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -axios@^1.6.5: - version "1.6.5" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.5.tgz#2c090da14aeeab3770ad30c3a1461bc970fb0cd8" - integrity sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg== +axios@^1.6.7: + version "1.6.7" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.7.tgz#7b48c2e27c96f9c68a2f8f31e2ab19f59b06b0a7" + integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA== dependencies: follow-redirects "^1.15.4" form-data "^4.0.0" @@ -5486,10 +5486,10 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -google-auth-library@^9.4.2: - version "9.4.2" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-9.4.2.tgz#4831150d2c049c37450a81141be34027657c38b6" - integrity sha512-rTLO4gjhqqo3WvYKL5IdtlCvRqeQ4hxUx/p4lObobY2xotFW3bCQC+Qf1N51CYOfiqfMecdMwW9RIo7dFWYjqw== +google-auth-library@^9.5.0: + version "9.5.0" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-9.5.0.tgz#fd97b78bc1512025b9c9ad3998c60e2d75b6137e" + integrity sha512-OUbP509lWVlZxuMY+Cgomw49VzZFP9myIcVeYEpeBlbXJbPC4R+K4BmO9hd3ciYM5QIwm5W1PODcKjqxtkye9Q== dependencies: base64-js "^1.3.0" ecdsa-sig-formatter "^1.0.11" @@ -5637,10 +5637,10 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -husky@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" - integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== +husky@^9.0.6: + version "9.0.6" + resolved "https://registry.yarnpkg.com/husky/-/husky-9.0.6.tgz#cee0245d60480b12279cf492ec6cfc1aeb7fa759" + integrity sha512-EEuw/rfTiMjOfuL7pGO/i9otg1u36TXxqjIA6D9qxVjd/UXoDOsLor/BSFf5hTK50shwzCU3aVVwdXDp/lp7RA== iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" @@ -7035,10 +7035,10 @@ mongodb@6.3.0: bson "^6.2.0" mongodb-connection-string-url "^3.0.0" -mongoose@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-8.1.0.tgz#25be9a39295c0cbffc971fdd4fb6302dceeb2ded" - integrity sha512-kOA4Xnq2goqNpN9EmYElGNWfxA9H80fxcr7UdJKWi3UMflza0R7wpTihCpM67dE/0MNFljoa0sjQtlXVkkySAQ== +mongoose@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-8.1.1.tgz#2ea2dcdcf4943196f585b3915f63001e79214e1b" + integrity sha512-DbLb0NsiEXmaqLOpEz+AtAsgwhRw6f25gwa1dF5R7jj6lS1D8X6uTdhBSC8GDVtOwe5Tfw2EL7nTn6hiJT3Bgg== dependencies: bson "^6.2.0" kareem "2.5.1" From 600bc434af5c205be05f87fde50323f505125a35 Mon Sep 17 00:00:00 2001 From: ack Date: Fri, 2 Feb 2024 00:24:26 +0700 Subject: [PATCH 5/6] commond env valication --- .env.example | 1 - src/common/common.module.ts | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index a7fdd980e..958aa5656 100644 --- a/.env.example +++ b/.env.example @@ -44,7 +44,6 @@ AWS_SES_CREDENTIAL_KEY= AWS_SES_CREDENTIAL_SECRET= AWS_SES_REGION=ap-southeast-3 - SSO_GOOGLE_CLIENT_ID= SSO_GOOGLE_CLIENT_SECRET= diff --git a/src/common/common.module.ts b/src/common/common.module.ts index 3fbb76207..70deed5e2 100644 --- a/src/common/common.module.ts +++ b/src/common/common.module.ts @@ -111,8 +111,10 @@ import { PolicyModule } from 'src/common/policy/policy.module'; .max(50) .optional(), - AWS_CREDENTIAL_KEY: Joi.string().allow(null, '').optional(), - AWS_CREDENTIAL_SECRET: Joi.string().allow(null, '').optional(), + AWS_S3_CREDENTIAL_KEY: Joi.string().allow(null, '').optional(), + AWS_S3_CREDENTIAL_SECRET: Joi.string() + .allow(null, '') + .optional(), AWS_S3_REGION: Joi.string().allow(null, '').optional(), AWS_S3_BUCKET: Joi.string().allow(null, '').optional(), AWS_SES_CREDENTIAL_KEY: Joi.string().allow(null, '').optional(), From fcf6c5b3b5301d2397441cbfebf95045a8632512 Mon Sep 17 00:00:00 2001 From: ack Date: Tue, 6 Feb 2024 12:21:48 +0700 Subject: [PATCH 6/6] add raw find and raw get total on repository, helper date drop getStartAndEndDate, move dashboard module to /module --- package.json | 30 +- .../interfaces/dashboard.interface.ts | 10 - .../interfaces/dashboard.service.interface.ts | 7 - .../serializations/dashboard.serialization.ts | 40 - .../base/database.base-repository.abstract.ts | 12 + ...ase.mongo.object-id.repository.abstract.ts | 183 ++-- ...database.mongo.uuid.repository.abstract.ts | 182 ++-- .../database/interfaces/database.interface.ts | 14 +- .../helper.date-service.interface.ts | 6 +- .../helper/interfaces/helper.interface.ts | 10 - .../helper/services/helper.date.service.ts | 46 +- .../constants/dashboard.doc.constant.ts | 5 +- .../dashboard/dashboard.module.ts | 2 +- .../dashboard/dtos/dashboard.dto.ts | 0 .../interfaces/dashboard.service.interface.ts | 6 + .../serializations/dashboard.serialization.ts | 15 + .../dashboard/services/dashboard.service.ts | 18 +- test/dashboard/dashboard.service.spec.ts | 162 ---- test/helper/helper.date.service.spec.ts | 35 +- yarn.lock | 915 ++++++++++-------- 20 files changed, 775 insertions(+), 923 deletions(-) delete mode 100644 src/common/dashboard/interfaces/dashboard.interface.ts delete mode 100644 src/common/dashboard/interfaces/dashboard.service.interface.ts delete mode 100644 src/common/dashboard/serializations/dashboard.serialization.ts rename src/{common => modules}/dashboard/constants/dashboard.doc.constant.ts (79%) rename src/{common => modules}/dashboard/dashboard.module.ts (69%) rename src/{common => modules}/dashboard/dtos/dashboard.dto.ts (100%) create mode 100644 src/modules/dashboard/interfaces/dashboard.service.interface.ts create mode 100644 src/modules/dashboard/serializations/dashboard.serialization.ts rename src/{common => modules}/dashboard/services/dashboard.service.ts (58%) delete mode 100644 test/dashboard/dashboard.service.spec.ts diff --git a/package.json b/package.json index f7e9ec498..c2222f523 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ack-nestjs-boilerplate", - "version": "5.6.5", + "version": "5.6.6", "description": "Ack NestJs Boilerplate", "repository": { "type": "git", @@ -47,8 +47,8 @@ "rollback": "yarn rollback:email && yarn rollback:apikey && yarn rollback:user && yarn rollback:role" }, "dependencies": { - "@aws-sdk/client-s3": "^3.499.0", - "@aws-sdk/client-ses": "^3.499.0", + "@aws-sdk/client-s3": "^3.507.0", + "@aws-sdk/client-ses": "^3.507.0", "@casl/ability": "^6.5.0", "@faker-js/faker": "^8.4.0", "@joi/date": "^2.1.0", @@ -62,10 +62,10 @@ "@nestjs/platform-express": "^10.3.1", "@nestjs/schedule": "^4.0.0", "@nestjs/swagger": "^7.2.0", - "@nestjs/terminus": "^10.2.0", + "@nestjs/terminus": "^10.2.1", "@nestjs/throttler": "^5.1.1", "@ntegral/nestjs-sentry": "^4.0.1", - "@sentry/node": "^7.98.0", + "@sentry/node": "^7.99.0", "@types/response-time": "^2.3.8", "axios": "^1.6.7", "bcryptjs": "^2.4.3", @@ -73,11 +73,11 @@ "class-transformer": "^0.5.1", "class-validator": "^0.14.1", "crypto-js": "^4.2.0", - "google-auth-library": "^9.5.0", + "google-auth-library": "^9.6.2", "helmet": "^7.1.0", - "joi": "^17.12.0", + "joi": "^17.12.1", "moment": "^2.30.1", - "moment-timezone": "^0.5.44", + "moment-timezone": "^0.5.45", "mongoose": "^8.1.1", "nest-winston": "^1.9.4", "nestjs-command": "^3.1.4", @@ -97,7 +97,7 @@ "yarn": "^1.22.21" }, "devDependencies": { - "@nestjs/cli": "^10.3.0", + "@nestjs/cli": "^10.3.1", "@nestjs/schematics": "^10.1.0", "@nestjs/testing": "^10.3.1", "@types/bcryptjs": "^2.4.6", @@ -106,24 +106,24 @@ "@types/cron": "^2.0.1", "@types/crypto-js": "^4.2.2", "@types/express": "^4.17.21", - "@types/jest": "^29.5.11", + "@types/jest": "^29.5.12", "@types/lodash": "^4.14.202", "@types/ms": "^0.7.34", "@types/multer": "^1.4.11", - "@types/node": "^20.11.7", + "@types/node": "^20.11.16", "@types/passport-jwt": "^4.0.1", "@types/supertest": "^6.0.2", "@types/ua-parser-js": "^0.7.39", "@types/uuid": "^9.0.8", - "@typescript-eslint/eslint-plugin": "^6.19.1", - "@typescript-eslint/parser": "^6.19.1", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", "cspell": "^8.3.2", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "^2.29.1", - "husky": "^9.0.6", + "husky": "^9.0.10", "jest": "^29.7.0", - "prettier": "^3.2.4", + "prettier": "^3.2.5", "supertest": "^6.3.4", "ts-jest": "^29.1.2", "ts-loader": "^9.5.1", diff --git a/src/common/dashboard/interfaces/dashboard.interface.ts b/src/common/dashboard/interfaces/dashboard.interface.ts deleted file mode 100644 index 25b1a53d5..000000000 --- a/src/common/dashboard/interfaces/dashboard.interface.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface IDashboardStartAndEndDate { - startDate: Date; - endDate: Date; -} - -export interface IDashboardMonthAndYear { - month: number; - year: number; - total: number; -} diff --git a/src/common/dashboard/interfaces/dashboard.service.interface.ts b/src/common/dashboard/interfaces/dashboard.service.interface.ts deleted file mode 100644 index 077d09a8e..000000000 --- a/src/common/dashboard/interfaces/dashboard.service.interface.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DashboardDto } from 'src/common/dashboard/dtos/dashboard.dto'; -import { IDashboardStartAndEndDate } from 'src/common/dashboard/interfaces/dashboard.interface'; - -export interface IDashboardService { - getStartAndEndDate(date?: DashboardDto): IDashboardStartAndEndDate; - getPercentage(value: number, total: number): number; -} diff --git a/src/common/dashboard/serializations/dashboard.serialization.ts b/src/common/dashboard/serializations/dashboard.serialization.ts deleted file mode 100644 index 533f9a24c..000000000 --- a/src/common/dashboard/serializations/dashboard.serialization.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { faker } from '@faker-js/faker'; -import { ApiProperty } from '@nestjs/swagger'; - -export class DashboardSerialization { - @ApiProperty({ - name: 'name', - nullable: true, - }) - name?: string; - - @ApiProperty({ - name: 'month', - nullable: true, - }) - month?: number; - - @ApiProperty({ - name: 'year', - nullable: true, - }) - year?: number; - - @ApiProperty({ - required: true, - nullable: false, - name: 'total', - example: faker.number.int({ min: 1000, max: 9999 }), - description: 'Total user', - }) - total: number; - - @ApiProperty({ - name: 'percent', - description: 'Percent of target', - required: true, - nullable: false, - example: faker.number.float({ max: 100 }), - }) - percent: number; -} diff --git a/src/common/database/abstracts/base/database.base-repository.abstract.ts b/src/common/database/abstracts/base/database.base-repository.abstract.ts index 600ac6589..7cc835a4e 100644 --- a/src/common/database/abstracts/base/database.base-repository.abstract.ts +++ b/src/common/database/abstracts/base/database.base-repository.abstract.ts @@ -12,6 +12,8 @@ import { IDatabaseGetTotalOptions, IDatabaseSaveOptions, IDatabaseFindOneLockOptions, + IDatabaseRawFindAllOptions, + IDatabaseRawGetTotalOptions, } from 'src/common/database/interfaces/database.interface'; export abstract class DatabaseBaseRepositoryAbstract { @@ -133,5 +135,15 @@ export abstract class DatabaseBaseRepositoryAbstract { options?: IDatabaseRawOptions ): Promise; + abstract rawFindAll( + rawOperation: RawQuery, + options?: IDatabaseRawFindAllOptions + ): Promise; + + abstract rawGetTotal( + rawOperation: RawQuery, + options?: IDatabaseRawGetTotalOptions + ): Promise; + abstract model(): Promise; } diff --git a/src/common/database/abstracts/mongo/repositories/database.mongo.object-id.repository.abstract.ts b/src/common/database/abstracts/mongo/repositories/database.mongo.object-id.repository.abstract.ts index 6c8dd9927..96c842752 100644 --- a/src/common/database/abstracts/mongo/repositories/database.mongo.object-id.repository.abstract.ts +++ b/src/common/database/abstracts/mongo/repositories/database.mongo.object-id.repository.abstract.ts @@ -23,7 +23,10 @@ import { IDatabaseRawOptions, IDatabaseSaveOptions, IDatabaseFindOneLockOptions, + IDatabaseRawFindAllOptions, + IDatabaseRawGetTotalOptions, } from 'src/common/database/interfaces/database.interface'; +import { ENUM_PAGINATION_ORDER_DIRECTION_TYPE } from 'src/common/pagination/constants/pagination.enum.constant'; export abstract class DatabaseMongoObjectIdRepositoryAbstract< Entity, @@ -48,16 +51,7 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract< ): Promise { const findAll = this._repository.find(find); - if (options?.withDeleted) { - findAll.or([ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ]); - } else { + if (!options?.withDeleted) { findAll.where(DATABASE_DELETED_AT_FIELD_NAME).exists(false); } @@ -98,16 +92,7 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract< find ); - if (options?.withDeleted) { - findAll.or([ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ]); - } else { + if (!options?.withDeleted) { findAll.where(DATABASE_DELETED_AT_FIELD_NAME).exists(false); } @@ -144,16 +129,7 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract< ): Promise { const findOne = this._repository.findOne(find); - if (options?.withDeleted) { - findOne.or([ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ]); - } else { + if (!options?.withDeleted) { findOne.where(DATABASE_DELETED_AT_FIELD_NAME).exists(false); } @@ -186,16 +162,7 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract< ): Promise { const findOne = this._repository.findById(new Types.ObjectId(_id)); - if (options?.withDeleted) { - findOne.or([ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ]); - } else { + if (!options?.withDeleted) { findOne.where(DATABASE_DELETED_AT_FIELD_NAME).exists(false); } @@ -231,16 +198,7 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract< useFindAndModify: false, }); - if (options?.withDeleted) { - findOne.or([ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ]); - } else { + if (!options?.withDeleted) { findOne.where(DATABASE_DELETED_AT_FIELD_NAME).exists(false); } @@ -279,16 +237,7 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract< } ); - if (options?.withDeleted) { - findOne.or([ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ]); - } else { + if (!options?.withDeleted) { findOne.where(DATABASE_DELETED_AT_FIELD_NAME).exists(false); } @@ -321,16 +270,7 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract< ): Promise { const count = this._repository.countDocuments(find); - if (options?.withDeleted) { - count.or([ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ]); - } else { + if (!options?.withDeleted) { count.where(DATABASE_DELETED_AT_FIELD_NAME).exists(false); } @@ -366,16 +306,7 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract< } const exist = this._repository.exists(find); - if (options?.withDeleted) { - exist.or([ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ]); - } else { + if (!options?.withDeleted) { exist.where(DATABASE_DELETED_AT_FIELD_NAME).exists(false); } @@ -743,30 +674,68 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract< } const pipeline: PipelineStage[] = rawOperation; - - if (options?.withDeleted) { + if (!options?.withDeleted) { pipeline.push({ $match: { - $or: [ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { - $exists: false, - }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ], + [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, }, }); - } else { + } + + const aggregate = this._repository.aggregate(pipeline); + + if (options?.session) { + aggregate.session(options?.session); + } + + return aggregate; + } + + async rawFindAll( + rawOperation: RawQuery, + options?: IDatabaseRawFindAllOptions + ): Promise { + if (!Array.isArray(rawOperation)) { + throw new Error('Must in array'); + } + + const pipeline: PipelineStage[] = rawOperation; + if (!options?.withDeleted) { pipeline.push({ $match: { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, + [DATABASE_DELETED_AT_FIELD_NAME]: { + $exists: false, + }, }, }); } + if (options?.order) { + const keysOrder = Object.keys(options?.order); + pipeline.push({ + $sort: keysOrder.reduce( + (a, b) => ({ + ...a, + [b]: + options?.order[b] === + ENUM_PAGINATION_ORDER_DIRECTION_TYPE.ASC + ? 1 + : -1, + }), + {} + ), + }); + } + + if (options?.paging) { + pipeline.push( + { + $limit: options.paging.limit + options.paging.offset, + }, + { $skip: options.paging.offset } + ); + } + const aggregate = this._repository.aggregate(pipeline); if (options?.session) { @@ -776,6 +745,32 @@ export abstract class DatabaseMongoObjectIdRepositoryAbstract< return aggregate; } + async rawGetTotal( + rawOperation: RawQuery, + options?: IDatabaseRawGetTotalOptions + ): Promise { + if (!Array.isArray(rawOperation)) { + throw new Error('Must in array'); + } + + const pipeline: PipelineStage[] = rawOperation; + pipeline.push({ + $group: { + _id: null, + count: { $sum: 1 }, + }, + }); + + const aggregate = this._repository.aggregate(pipeline); + + if (options?.session) { + aggregate.session(options?.session); + } + + const raw = await aggregate; + return raw && raw.length > 0 ? raw[0].count : 0; + } + async model(): Promise> { return this._repository; } diff --git a/src/common/database/abstracts/mongo/repositories/database.mongo.uuid.repository.abstract.ts b/src/common/database/abstracts/mongo/repositories/database.mongo.uuid.repository.abstract.ts index 28f127007..fde4bbaad 100644 --- a/src/common/database/abstracts/mongo/repositories/database.mongo.uuid.repository.abstract.ts +++ b/src/common/database/abstracts/mongo/repositories/database.mongo.uuid.repository.abstract.ts @@ -21,7 +21,10 @@ import { IDatabaseRawOptions, IDatabaseSaveOptions, IDatabaseFindOneLockOptions, + IDatabaseRawFindAllOptions, + IDatabaseRawGetTotalOptions, } from 'src/common/database/interfaces/database.interface'; +import { ENUM_PAGINATION_ORDER_DIRECTION_TYPE } from 'src/common/pagination/constants/pagination.enum.constant'; export abstract class DatabaseMongoUUIDRepositoryAbstract< Entity, @@ -46,16 +49,7 @@ export abstract class DatabaseMongoUUIDRepositoryAbstract< ): Promise { const findAll = this._repository.find(find); - if (options?.withDeleted) { - findAll.or([ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ]); - } else { + if (!options?.withDeleted) { findAll.where(DATABASE_DELETED_AT_FIELD_NAME).exists(false); } @@ -96,16 +90,7 @@ export abstract class DatabaseMongoUUIDRepositoryAbstract< find ); - if (options?.withDeleted) { - findAll.or([ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ]); - } else { + if (!options?.withDeleted) { findAll.where(DATABASE_DELETED_AT_FIELD_NAME).exists(false); } @@ -141,16 +126,7 @@ export abstract class DatabaseMongoUUIDRepositoryAbstract< ): Promise { const findOne = this._repository.findOne(find); - if (options?.withDeleted) { - findOne.or([ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ]); - } else { + if (!options?.withDeleted) { findOne.where(DATABASE_DELETED_AT_FIELD_NAME).exists(false); } @@ -183,16 +159,7 @@ export abstract class DatabaseMongoUUIDRepositoryAbstract< ): Promise { const findOne = this._repository.findById(_id); - if (options?.withDeleted) { - findOne.or([ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ]); - } else { + if (!options?.withDeleted) { findOne.where(DATABASE_DELETED_AT_FIELD_NAME).exists(false); } @@ -228,16 +195,7 @@ export abstract class DatabaseMongoUUIDRepositoryAbstract< useFindAndModify: false, }); - if (options?.withDeleted) { - findOne.or([ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ]); - } else { + if (!options?.withDeleted) { findOne.where(DATABASE_DELETED_AT_FIELD_NAME).exists(false); } @@ -273,16 +231,7 @@ export abstract class DatabaseMongoUUIDRepositoryAbstract< useFindAndModify: false, }); - if (options?.withDeleted) { - findOne.or([ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ]); - } else { + if (!options?.withDeleted) { findOne.where(DATABASE_DELETED_AT_FIELD_NAME).exists(false); } @@ -315,16 +264,7 @@ export abstract class DatabaseMongoUUIDRepositoryAbstract< ): Promise { const count = this._repository.countDocuments(find); - if (options?.withDeleted) { - count.or([ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ]); - } else { + if (!options?.withDeleted) { count.where(DATABASE_DELETED_AT_FIELD_NAME).exists(false); } @@ -357,16 +297,7 @@ export abstract class DatabaseMongoUUIDRepositoryAbstract< } const exist = this._repository.exists(find); - if (options?.withDeleted) { - exist.or([ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ]); - } else { + if (!options?.withDeleted) { exist.where(DATABASE_DELETED_AT_FIELD_NAME).exists(false); } @@ -725,29 +656,68 @@ export abstract class DatabaseMongoUUIDRepositoryAbstract< const pipeline: PipelineStage[] = rawOperation; - if (options?.withDeleted) { + if (!options?.withDeleted) { pipeline.push({ $match: { - $or: [ - { - [DATABASE_DELETED_AT_FIELD_NAME]: { - $exists: false, - }, - }, - { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: true }, - }, - ], + [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, }, }); - } else { + } + + const aggregate = this._repository.aggregate(pipeline); + + if (options?.session) { + aggregate.session(options?.session); + } + + return aggregate; + } + + async rawFindAll( + rawOperation: RawQuery, + options?: IDatabaseRawFindAllOptions + ): Promise { + if (!Array.isArray(rawOperation)) { + throw new Error('Must in array'); + } + + const pipeline: PipelineStage[] = rawOperation; + if (!options?.withDeleted) { pipeline.push({ $match: { - [DATABASE_DELETED_AT_FIELD_NAME]: { $exists: false }, + [DATABASE_DELETED_AT_FIELD_NAME]: { + $exists: false, + }, }, }); } + if (options?.order) { + const keysOrder = Object.keys(options?.order); + pipeline.push({ + $sort: keysOrder.reduce( + (a, b) => ({ + ...a, + [b]: + options?.order[b] === + ENUM_PAGINATION_ORDER_DIRECTION_TYPE.ASC + ? 1 + : -1, + }), + {} + ), + }); + } + + if (options?.paging) { + pipeline.push( + { + $limit: options.paging.limit + options.paging.offset, + }, + { $skip: options.paging.offset } + ); + } + const aggregate = this._repository.aggregate(pipeline); if (options?.session) { @@ -757,6 +727,32 @@ export abstract class DatabaseMongoUUIDRepositoryAbstract< return aggregate; } + async rawGetTotal( + rawOperation: RawQuery, + options?: IDatabaseRawGetTotalOptions + ): Promise { + if (!Array.isArray(rawOperation)) { + throw new Error('Must in array'); + } + + const pipeline: PipelineStage[] = rawOperation; + pipeline.push({ + $group: { + _id: null, + count: { $sum: 1 }, + }, + }); + + const aggregate = this._repository.aggregate(pipeline); + + if (options?.session) { + aggregate.session(options?.session); + } + + const raw = await aggregate; + return raw && raw.length > 0 ? raw[0].count : 0; + } + async model(): Promise> { return this._repository; } diff --git a/src/common/database/interfaces/database.interface.ts b/src/common/database/interfaces/database.interface.ts index acc459b78..1444abc11 100644 --- a/src/common/database/interfaces/database.interface.ts +++ b/src/common/database/interfaces/database.interface.ts @@ -4,7 +4,7 @@ import { IPaginationOptions } from 'src/common/pagination/interfaces/pagination. // find one export interface IDatabaseFindOneOptions extends Pick { - select?: Record; + select?: Record | string; join?: boolean | PopulateOptions | PopulateOptions[]; session?: T; withDeleted?: boolean; @@ -64,7 +64,19 @@ export type IDatabaseSoftDeleteManyOptions = IDatabaseManyOptions; export type IDatabaseRestoreManyOptions = IDatabaseManyOptions; +// Raw + export type IDatabaseRawOptions = Pick< IDatabaseFindOneOptions, 'session' | 'withDeleted' >; + +export type IDatabaseRawFindAllOptions = Pick< + IDatabaseFindAllOptions, + 'order' | 'paging' | 'session' | 'withDeleted' +>; + +export type IDatabaseRawGetTotalOptions = Pick< + IDatabaseRawFindAllOptions, + 'session' | 'withDeleted' +>; diff --git a/src/common/helper/interfaces/helper.date-service.interface.ts b/src/common/helper/interfaces/helper.date-service.interface.ts index 54bf0c8a8..80c87a814 100644 --- a/src/common/helper/interfaces/helper.date-service.interface.ts +++ b/src/common/helper/interfaces/helper.date-service.interface.ts @@ -6,8 +6,6 @@ import { IHelperDateOptionsFormat, IHelperDateOptionsForward, IHelperDateSetTimeOptions, - IHelperDateStartAndEnd, - IHelperDateStartAndEndDate, } from 'src/common/helper/interfaces/helper.interface'; export interface IHelperDateService { @@ -29,6 +27,7 @@ export interface IHelperDateService { options?: IHelperDateOptionsCreate ): number; format(date: Date, options?: IHelperDateOptionsFormat): string; + formatIsoDuration(inMinutes: number): string; forwardInMilliseconds( milliseconds: number, options?: IHelperDateOptionsForward @@ -81,7 +80,4 @@ export interface IHelperDateService { { hour, minute, second }: IHelperDateSetTimeOptions ): Date; extractDate(date: string | Date | number): IHelperDateExtractDate; - getStartAndEndDate( - options?: IHelperDateStartAndEnd - ): IHelperDateStartAndEndDate; } diff --git a/src/common/helper/interfaces/helper.interface.ts b/src/common/helper/interfaces/helper.interface.ts index 3d6c67cd5..dc7029709 100644 --- a/src/common/helper/interfaces/helper.interface.ts +++ b/src/common/helper/interfaces/helper.interface.ts @@ -33,16 +33,6 @@ export interface IHelperDateSetTimeOptions { second?: number; } -export interface IHelperDateStartAndEnd { - month?: number; - year?: number; -} - -export interface IHelperDateStartAndEndDate { - startDate: Date; - endDate: Date; -} - export interface IHelperDateExtractDate { date: Date; day: string; diff --git a/src/common/helper/services/helper.date.service.ts b/src/common/helper/services/helper.date.service.ts index d93e683b7..0368309fc 100644 --- a/src/common/helper/services/helper.date.service.ts +++ b/src/common/helper/services/helper.date.service.ts @@ -15,8 +15,6 @@ import { IHelperDateOptionsForward, IHelperDateOptionsRoundDown, IHelperDateSetTimeOptions, - IHelperDateStartAndEnd, - IHelperDateStartAndEndDate, } from 'src/common/helper/interfaces/helper.interface'; @Injectable() @@ -103,6 +101,10 @@ export class HelperDateService implements IHelperDateService { .format(options?.format ?? ENUM_HELPER_DATE_FORMAT.DATE); } + formatIsoDuration(inMinutes: number): string { + return moment.duration(inMinutes, 'minutes').toISOString(); + } + forwardInMilliseconds( milliseconds: number, options?: IHelperDateOptionsForward @@ -236,8 +238,8 @@ export class HelperDateService implements IHelperDateService { return moment(date) .tz(this.defTz) .set({ - h: hour, - m: minute, + hour: hour, + minute: minute, second: second, ms: 0, }) @@ -251,8 +253,8 @@ export class HelperDateService implements IHelperDateService { return moment(date) .tz(this.defTz) .add({ - h: hour, - m: minute, + hour: hour, + minute: minute, second: second, }) .toDate(); @@ -265,8 +267,8 @@ export class HelperDateService implements IHelperDateService { return moment(date) .tz(this.defTz) .subtract({ - h: hour, - m: minute, + hour: hour, + minute: minute, second: second, }) .toDate(); @@ -309,32 +311,4 @@ export class HelperDateService implements IHelperDateService { return mDate.toDate(); } - - getStartAndEndDate( - options?: IHelperDateStartAndEnd - ): IHelperDateStartAndEndDate { - const today = moment().tz(this.defTz); - const todayMonth = today.format(ENUM_HELPER_DATE_FORMAT.ONLY_MONTH); - const todayYear = today.format(ENUM_HELPER_DATE_FORMAT.ONLY_YEAR); - // set month and year - const year = options?.year ?? todayYear; - const month = options?.month ?? todayMonth; - - const date = moment(`${year}-${month}-02`, 'YYYY-MM-DD').tz(this.defTz); - let startDate: Date = date.startOf('month').toDate(); - let endDate: Date = date.endOf('month').toDate(); - - if (options?.month) { - const date = moment(`${year}-${month}-02`, 'YYYY-MM-DD').tz( - this.defTz - ); - startDate = date.startOf('month').toDate(); - endDate = date.endOf('month').toDate(); - } - - return { - startDate, - endDate, - }; - } } diff --git a/src/common/dashboard/constants/dashboard.doc.constant.ts b/src/modules/dashboard/constants/dashboard.doc.constant.ts similarity index 79% rename from src/common/dashboard/constants/dashboard.doc.constant.ts rename to src/modules/dashboard/constants/dashboard.doc.constant.ts index 8331be0e7..5e1a8e384 100644 --- a/src/common/dashboard/constants/dashboard.doc.constant.ts +++ b/src/modules/dashboard/constants/dashboard.doc.constant.ts @@ -1,6 +1,6 @@ import { faker } from '@faker-js/faker'; -export const DashboardDocQueryStartDate = [ +export const DashboardDocQueryDate = [ { name: 'startDate', allowEmptyValue: true, @@ -8,9 +8,6 @@ export const DashboardDocQueryStartDate = [ type: 'string', example: faker.date.past(), }, -]; - -export const DashboardDocQueryEndDate = [ { name: 'endDate', allowEmptyValue: true, diff --git a/src/common/dashboard/dashboard.module.ts b/src/modules/dashboard/dashboard.module.ts similarity index 69% rename from src/common/dashboard/dashboard.module.ts rename to src/modules/dashboard/dashboard.module.ts index 1b2ebfe9e..28b201567 100644 --- a/src/common/dashboard/dashboard.module.ts +++ b/src/modules/dashboard/dashboard.module.ts @@ -1,5 +1,5 @@ import { Module } from '@nestjs/common'; -import { DashboardService } from 'src/common/dashboard/services/dashboard.service'; +import { DashboardService } from 'src/modules/dashboard/services/dashboard.service'; @Module({ controllers: [], diff --git a/src/common/dashboard/dtos/dashboard.dto.ts b/src/modules/dashboard/dtos/dashboard.dto.ts similarity index 100% rename from src/common/dashboard/dtos/dashboard.dto.ts rename to src/modules/dashboard/dtos/dashboard.dto.ts diff --git a/src/modules/dashboard/interfaces/dashboard.service.interface.ts b/src/modules/dashboard/interfaces/dashboard.service.interface.ts new file mode 100644 index 000000000..28a4d8607 --- /dev/null +++ b/src/modules/dashboard/interfaces/dashboard.service.interface.ts @@ -0,0 +1,6 @@ +import { DashboardDto } from 'src/modules/dashboard/dtos/dashboard.dto'; +import { DashboardSerialization } from 'src/modules/dashboard/serializations/dashboard.serialization'; + +export interface IDashboardService { + getStartAndEndDate(date?: DashboardDto): DashboardSerialization; +} diff --git a/src/modules/dashboard/serializations/dashboard.serialization.ts b/src/modules/dashboard/serializations/dashboard.serialization.ts new file mode 100644 index 000000000..3a6c11508 --- /dev/null +++ b/src/modules/dashboard/serializations/dashboard.serialization.ts @@ -0,0 +1,15 @@ +import { ApiProperty } from '@nestjs/swagger'; + +export class DashboardSerialization { + @ApiProperty({ + name: 'name', + nullable: true, + }) + startDate: Date; + + @ApiProperty({ + name: 'month', + nullable: true, + }) + endDate: Date; +} diff --git a/src/common/dashboard/services/dashboard.service.ts b/src/modules/dashboard/services/dashboard.service.ts similarity index 58% rename from src/common/dashboard/services/dashboard.service.ts rename to src/modules/dashboard/services/dashboard.service.ts index eb930e2a3..2efe4b74a 100644 --- a/src/common/dashboard/services/dashboard.service.ts +++ b/src/modules/dashboard/services/dashboard.service.ts @@ -1,18 +1,14 @@ import { Injectable } from '@nestjs/common'; -import { DashboardDto } from 'src/common/dashboard/dtos/dashboard.dto'; -import { IDashboardStartAndEndDate } from 'src/common/dashboard/interfaces/dashboard.interface'; -import { IDashboardService } from 'src/common/dashboard/interfaces/dashboard.service.interface'; import { HelperDateService } from 'src/common/helper/services/helper.date.service'; -import { HelperNumberService } from 'src/common/helper/services/helper.number.service'; +import { DashboardDto } from 'src/modules/dashboard/dtos/dashboard.dto'; +import { IDashboardService } from 'src/modules/dashboard/interfaces/dashboard.service.interface'; +import { DashboardSerialization } from 'src/modules/dashboard/serializations/dashboard.serialization'; @Injectable() export class DashboardService implements IDashboardService { - constructor( - private readonly helperDateService: HelperDateService, - private readonly helperNumberService: HelperNumberService - ) {} + constructor(private readonly helperDateService: HelperDateService) {} - getStartAndEndDate(date?: DashboardDto): IDashboardStartAndEndDate { + getStartAndEndDate(date?: DashboardDto): DashboardSerialization { const today = this.helperDateService.create(); if (!date) { @@ -43,8 +39,4 @@ export class DashboardService implements IDashboardService { endDate, }; } - - getPercentage(value: number, total: number): number { - return this.helperNumberService.percent(value, total); - } } diff --git a/test/dashboard/dashboard.service.spec.ts b/test/dashboard/dashboard.service.spec.ts deleted file mode 100644 index 605116b20..000000000 --- a/test/dashboard/dashboard.service.spec.ts +++ /dev/null @@ -1,162 +0,0 @@ -import { ConfigService } from '@nestjs/config'; -import { Test, TestingModule } from '@nestjs/testing'; -import { DashboardService } from 'src/common/dashboard/services/dashboard.service'; -import { HelperDateService } from 'src/common/helper/services/helper.date.service'; -import { HelperNumberService } from 'src/common/helper/services/helper.number.service'; - -describe('DashboardService', () => { - let service: DashboardService; - - beforeEach(async () => { - const moduleRef: TestingModule = await Test.createTestingModule({ - providers: [ - DashboardService, - HelperNumberService, - HelperDateService, - { - provide: ConfigService, - useValue: { - get: jest.fn().mockImplementation((key: string) => { - switch (key) { - case 'app.tz': - default: - return 'UTC'; - } - }), - }, - }, - ], - imports: [], - }).compile(); - - service = moduleRef.get(DashboardService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); - - describe('getStartAndEndDate', () => { - it('should return current month start and end dates if no start and end dates are provided', async () => { - const today = new Date(); - const startDate = new Date( - today.getFullYear(), - today.getMonth(), - 1, - 0, - 0, - 0, - 0 - ); - const endDate = new Date( - today.getFullYear(), - today.getMonth() + 1, - 0, - 23, - 59, - 59, - 999 - ); - - const result = service.getStartAndEndDate(); - - expect(result.startDate).toEqual(startDate); - expect(result.endDate).toEqual(endDate); - }); - - it('should return start and end dates as provided', async () => { - const today = new Date(); - const startDate = new Date( - today.getFullYear(), - today.getMonth(), - 1, - 0, - 0, - 0, - 0 - ); - const endDate = new Date( - today.getFullYear(), - today.getMonth() + 1, - 0, - 23, - 59, - 59, - 999 - ); - - const result = service.getStartAndEndDate({ - startDate, - endDate, - }); - - expect(result.startDate).toEqual(startDate); - expect(result.endDate).toEqual(endDate); - }); - - it('should return start date as current day of month if not provided', async () => { - const today = new Date(); - const startDate = new Date( - today.getFullYear(), - today.getMonth(), - 1, - 0, - 0, - 0, - 0 - ); - const endDate = new Date( - today.getFullYear(), - today.getMonth() + 1, - 0, - 23, - 59, - 59, - 999 - ); - - const result = service.getStartAndEndDate({ endDate }); - - expect(result.startDate).toEqual(startDate); - expect(result.endDate).toEqual(endDate); - }); - - it('should return end date as current day of month if not provided', async () => { - const today = new Date(); - const startDate = new Date( - today.getFullYear(), - today.getMonth(), - 1, - 0, - 0, - 0, - 0 - ); - const endDate = new Date( - today.getFullYear(), - today.getMonth() + 1, - 0, - 23, - 59, - 59, - 999 - ); - - const result = service.getStartAndEndDate({ startDate }); - - expect(result.startDate).toEqual(startDate); - expect(result.endDate).toEqual(endDate); - }); - }); - - describe('getPercentage', () => { - it('should return the percentage of the value in total', async () => { - const value = 2; - const total = 10; - const expectedPercentage = 20; - const result = service.getPercentage(value, total); - - expect(result).toEqual(expectedPercentage); - }); - }); -}); diff --git a/test/helper/helper.date.service.spec.ts b/test/helper/helper.date.service.spec.ts index 4f0765801..5b7d9c80c 100644 --- a/test/helper/helper.date.service.spec.ts +++ b/test/helper/helper.date.service.spec.ts @@ -183,6 +183,14 @@ describe('HelperDateService', () => { }); }); + describe('formatIsoDuration', () => { + it('should return the duration as iso date string', () => { + const inMinutes = 5; + const duration = service.formatIsoDuration(inMinutes); + expect(duration).toEqual('PT5M'); + }); + }); + describe('forwardInMilliseconds', () => { it('should add milliseconds to a date', () => { const fromDate = new Date('2021-01-01'); @@ -406,31 +414,4 @@ describe('HelperDateService', () => { expect(roundedDate).toEqual(new Date('2021-01-01T00:00:00.000Z')); }); }); - - describe('getStartAndEndDate', () => { - it('should return the start and end date for current month', () => { - const startDate = new Date( - new Date(new Date().setDate(1)).setHours(0, 0, 0, 0) - ); - const endDate = new Date( - new Date( - startDate.getFullYear(), - startDate.getMonth() + 1, - 0 - ).setHours(23, 59, 59, 999) - ); - const startAndEndDate = service.getStartAndEndDate(); - expect(startAndEndDate).toEqual({ startDate, endDate }); - }); - - it('should return the start and end date of a given month and year', () => { - const startDate = new Date('2021-01-01T00:00:00.000Z'); - const endDate = new Date('2021-01-31T23:59:59.999Z'); - const startAndEndDate = service.getStartAndEndDate({ - year: 2021, - month: 1, - }); - expect(startAndEndDate).toEqual({ startDate, endDate }); - }); - }); }); diff --git a/yarn.lock b/yarn.lock index 8e38c0d73..e09ad444e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -38,15 +38,27 @@ rxjs "7.8.1" source-map "0.7.4" -"@angular-devkit/schematics-cli@17.0.9": - version "17.0.9" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics-cli/-/schematics-cli-17.0.9.tgz#6ee0ac81b37cab50e60b49a0541508552a75ab7f" - integrity sha512-tznzzB26sy8jVUlV9HhXcbFYZcIIFMAiDMOuyLko2LZFjfoqW+OPvwa1mwAQwvVVSQZVAKvdndFhzwyl/axwFQ== +"@angular-devkit/core@17.1.2": + version "17.1.2" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-17.1.2.tgz#bf2c3475e9ff853dc53d8dc8ce9bbf8b2f1193f8" + integrity sha512-ku+/W/HMCBacSWFppenr9y6Lx8mDuTuQvn1IkTyBLiJOpWnzgVbx9kHDeaDchGa1PwLlJUBBrv27t3qgJOIDPw== dependencies: - "@angular-devkit/core" "17.0.9" - "@angular-devkit/schematics" "17.0.9" + ajv "8.12.0" + ajv-formats "2.1.1" + jsonc-parser "3.2.0" + picomatch "3.0.1" + rxjs "7.8.1" + source-map "0.7.4" + +"@angular-devkit/schematics-cli@17.1.2": + version "17.1.2" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics-cli/-/schematics-cli-17.1.2.tgz#7a77e8294071e5ba569e2ffb567b3301d1db3f07" + integrity sha512-bvXykYzSST05qFdlgIzUguNOb3z0hCa8HaTwtqdmQo9aFPf+P+/AC56I64t1iTchMjQtf3JrBQhYM25gUdcGbg== + dependencies: + "@angular-devkit/core" "17.1.2" + "@angular-devkit/schematics" "17.1.2" ansi-colors "4.1.3" - inquirer "9.2.11" + inquirer "9.2.12" symbol-observable "4.0.0" yargs-parser "21.1.1" @@ -72,6 +84,17 @@ ora "5.4.1" rxjs "7.8.1" +"@angular-devkit/schematics@17.1.2": + version "17.1.2" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-17.1.2.tgz#ca77a86ed44ab227614aff6e1f7ce4f3cd0c6ded" + integrity sha512-8S9RuM8olFN/gwN+mjbuF1CwHX61f0i59EGXz9tXLnKRUTjsRR+8vVMTAmX0dvVAT5fJTG/T69X+HX7FeumdqA== + dependencies: + "@angular-devkit/core" "17.1.2" + jsonc-parser "3.2.0" + magic-string "0.30.5" + ora "5.4.1" + rxjs "7.8.1" + "@aws-crypto/crc32@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-3.0.0.tgz#07300eca214409c33e3ff769cd5697b57fdd38fa" @@ -149,34 +172,34 @@ "@aws-sdk/util-utf8-browser" "^3.0.0" tslib "^1.11.1" -"@aws-sdk/client-s3@^3.499.0": - version "3.499.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.499.0.tgz#93c3fbd530ad938c3c2d196981646ba72e963734" - integrity sha512-4ssQqde/iY5fTJbWuFPzPuECtihdCAA9tfluv6fXYCJS3wMLf9x21qp6b7fIbUf6vjOJ2edmYd+DXk+0CMnTFg== +"@aws-sdk/client-s3@^3.507.0": + version "3.507.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.507.0.tgz#3e4205a844d8fbd8656f66d0a3ba1c8aaa7b9b96" + integrity sha512-rRLiC5Ly3e7kZVNoRsG6JhZ8Yat5uEnDeShdWNdHchyTO88AaEnHaeyiVG9ecmKI8jYl6NbWSHB8xL0l9KIr/w== dependencies: "@aws-crypto/sha1-browser" "3.0.0" "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.499.0" + "@aws-sdk/client-sts" "3.507.0" "@aws-sdk/core" "3.496.0" - "@aws-sdk/credential-provider-node" "3.499.0" - "@aws-sdk/middleware-bucket-endpoint" "3.496.0" - "@aws-sdk/middleware-expect-continue" "3.496.0" - "@aws-sdk/middleware-flexible-checksums" "3.496.0" - "@aws-sdk/middleware-host-header" "3.496.0" - "@aws-sdk/middleware-location-constraint" "3.496.0" - "@aws-sdk/middleware-logger" "3.496.0" - "@aws-sdk/middleware-recursion-detection" "3.496.0" - "@aws-sdk/middleware-sdk-s3" "3.499.0" - "@aws-sdk/middleware-signing" "3.496.0" - "@aws-sdk/middleware-ssec" "3.498.0" - "@aws-sdk/middleware-user-agent" "3.496.0" - "@aws-sdk/region-config-resolver" "3.496.0" - "@aws-sdk/signature-v4-multi-region" "3.499.0" - "@aws-sdk/types" "3.496.0" - "@aws-sdk/util-endpoints" "3.496.0" - "@aws-sdk/util-user-agent-browser" "3.496.0" - "@aws-sdk/util-user-agent-node" "3.496.0" + "@aws-sdk/credential-provider-node" "3.507.0" + "@aws-sdk/middleware-bucket-endpoint" "3.502.0" + "@aws-sdk/middleware-expect-continue" "3.502.0" + "@aws-sdk/middleware-flexible-checksums" "3.502.0" + "@aws-sdk/middleware-host-header" "3.502.0" + "@aws-sdk/middleware-location-constraint" "3.502.0" + "@aws-sdk/middleware-logger" "3.502.0" + "@aws-sdk/middleware-recursion-detection" "3.502.0" + "@aws-sdk/middleware-sdk-s3" "3.502.0" + "@aws-sdk/middleware-signing" "3.502.0" + "@aws-sdk/middleware-ssec" "3.502.0" + "@aws-sdk/middleware-user-agent" "3.502.0" + "@aws-sdk/region-config-resolver" "3.502.0" + "@aws-sdk/signature-v4-multi-region" "3.502.0" + "@aws-sdk/types" "3.502.0" + "@aws-sdk/util-endpoints" "3.502.0" + "@aws-sdk/util-user-agent-browser" "3.502.0" + "@aws-sdk/util-user-agent-node" "3.502.0" "@aws-sdk/xml-builder" "3.496.0" "@smithy/config-resolver" "^2.1.1" "@smithy/core" "^1.3.1" @@ -213,26 +236,26 @@ fast-xml-parser "4.2.5" tslib "^2.5.0" -"@aws-sdk/client-ses@^3.499.0": - version "3.499.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-ses/-/client-ses-3.499.0.tgz#4be39406ca04583c21c88315898354833f16729b" - integrity sha512-KibTMz6HO75niU4Rpp9e1fGpfuwLOhCuaHM4ddnn6fsE76HJnu0RcnORdt+KGC0HLUcGwiw1Z4pQXC0MCGTsSA== +"@aws-sdk/client-ses@^3.507.0": + version "3.507.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-ses/-/client-ses-3.507.0.tgz#0fbe6800cf9e00758b92be2b536466a81842733c" + integrity sha512-eX/OHHA4Zk7EgsaPnL4sQmghekipmiGJBm/E+JEoiaBoPJOPj0q28pnJKm6rMVUnhddaQZUuAYw9cSCyT3zoDg== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.499.0" + "@aws-sdk/client-sts" "3.507.0" "@aws-sdk/core" "3.496.0" - "@aws-sdk/credential-provider-node" "3.499.0" - "@aws-sdk/middleware-host-header" "3.496.0" - "@aws-sdk/middleware-logger" "3.496.0" - "@aws-sdk/middleware-recursion-detection" "3.496.0" - "@aws-sdk/middleware-signing" "3.496.0" - "@aws-sdk/middleware-user-agent" "3.496.0" - "@aws-sdk/region-config-resolver" "3.496.0" - "@aws-sdk/types" "3.496.0" - "@aws-sdk/util-endpoints" "3.496.0" - "@aws-sdk/util-user-agent-browser" "3.496.0" - "@aws-sdk/util-user-agent-node" "3.496.0" + "@aws-sdk/credential-provider-node" "3.507.0" + "@aws-sdk/middleware-host-header" "3.502.0" + "@aws-sdk/middleware-logger" "3.502.0" + "@aws-sdk/middleware-recursion-detection" "3.502.0" + "@aws-sdk/middleware-signing" "3.502.0" + "@aws-sdk/middleware-user-agent" "3.502.0" + "@aws-sdk/region-config-resolver" "3.502.0" + "@aws-sdk/types" "3.502.0" + "@aws-sdk/util-endpoints" "3.502.0" + "@aws-sdk/util-user-agent-browser" "3.502.0" + "@aws-sdk/util-user-agent-node" "3.502.0" "@smithy/config-resolver" "^2.1.1" "@smithy/core" "^1.3.1" "@smithy/fetch-http-handler" "^2.4.1" @@ -261,23 +284,68 @@ fast-xml-parser "4.2.5" tslib "^2.5.0" -"@aws-sdk/client-sso@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.496.0.tgz#765cbfb3afcbe7bc8f2430e40afd4d542a0d58fb" - integrity sha512-fuaMuxKg7CMUsP9l3kxYWCOxFsBjdA0xj5nlikaDm1661/gB4KkAiGqRY8LsQkpNXvXU8Nj+f7oCFADFyGYzyw== +"@aws-sdk/client-sso-oidc@3.507.0": + version "3.507.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.507.0.tgz#d1357d212d9510146d325ca1e6acd06d5744623b" + integrity sha512-ms5CH2ImhqqCIbo5irxayByuPOlVAmSiqDVfjZKwgIziqng2bVgNZMeKcT6t0bmrcgScEAVnZwY7j/iZTIw73g== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.507.0" + "@aws-sdk/core" "3.496.0" + "@aws-sdk/middleware-host-header" "3.502.0" + "@aws-sdk/middleware-logger" "3.502.0" + "@aws-sdk/middleware-recursion-detection" "3.502.0" + "@aws-sdk/middleware-signing" "3.502.0" + "@aws-sdk/middleware-user-agent" "3.502.0" + "@aws-sdk/region-config-resolver" "3.502.0" + "@aws-sdk/types" "3.502.0" + "@aws-sdk/util-endpoints" "3.502.0" + "@aws-sdk/util-user-agent-browser" "3.502.0" + "@aws-sdk/util-user-agent-node" "3.502.0" + "@smithy/config-resolver" "^2.1.1" + "@smithy/core" "^1.3.1" + "@smithy/fetch-http-handler" "^2.4.1" + "@smithy/hash-node" "^2.1.1" + "@smithy/invalid-dependency" "^2.1.1" + "@smithy/middleware-content-length" "^2.1.1" + "@smithy/middleware-endpoint" "^2.4.1" + "@smithy/middleware-retry" "^2.1.1" + "@smithy/middleware-serde" "^2.1.1" + "@smithy/middleware-stack" "^2.1.1" + "@smithy/node-config-provider" "^2.2.1" + "@smithy/node-http-handler" "^2.3.1" + "@smithy/protocol-http" "^3.1.1" + "@smithy/smithy-client" "^2.3.1" + "@smithy/types" "^2.9.1" + "@smithy/url-parser" "^2.1.1" + "@smithy/util-base64" "^2.1.1" + "@smithy/util-body-length-browser" "^2.1.1" + "@smithy/util-body-length-node" "^2.2.1" + "@smithy/util-defaults-mode-browser" "^2.1.1" + "@smithy/util-defaults-mode-node" "^2.1.1" + "@smithy/util-endpoints" "^1.1.1" + "@smithy/util-retry" "^2.1.1" + "@smithy/util-utf8" "^2.1.1" + tslib "^2.5.0" + +"@aws-sdk/client-sso@3.507.0": + version "3.507.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.507.0.tgz#90a5de90f662aa680c0ffdc5e04695734ca8afb2" + integrity sha512-pFeaKwqv4tXD6QVxWC2V4N62DUoP3bPSm/mCe2SPhaNjNsmwwA53viUHz/nwxIbs8w4vV44UQsygb0AgKm+HoQ== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" "@aws-sdk/core" "3.496.0" - "@aws-sdk/middleware-host-header" "3.496.0" - "@aws-sdk/middleware-logger" "3.496.0" - "@aws-sdk/middleware-recursion-detection" "3.496.0" - "@aws-sdk/middleware-user-agent" "3.496.0" - "@aws-sdk/region-config-resolver" "3.496.0" - "@aws-sdk/types" "3.496.0" - "@aws-sdk/util-endpoints" "3.496.0" - "@aws-sdk/util-user-agent-browser" "3.496.0" - "@aws-sdk/util-user-agent-node" "3.496.0" + "@aws-sdk/middleware-host-header" "3.502.0" + "@aws-sdk/middleware-logger" "3.502.0" + "@aws-sdk/middleware-recursion-detection" "3.502.0" + "@aws-sdk/middleware-user-agent" "3.502.0" + "@aws-sdk/region-config-resolver" "3.502.0" + "@aws-sdk/types" "3.502.0" + "@aws-sdk/util-endpoints" "3.502.0" + "@aws-sdk/util-user-agent-browser" "3.502.0" + "@aws-sdk/util-user-agent-node" "3.502.0" "@smithy/config-resolver" "^2.1.1" "@smithy/core" "^1.3.1" "@smithy/fetch-http-handler" "^2.4.1" @@ -304,24 +372,23 @@ "@smithy/util-utf8" "^2.1.1" tslib "^2.5.0" -"@aws-sdk/client-sts@3.499.0": - version "3.499.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.499.0.tgz#4c8260ed1fda7ad2c4e5fe12e4eaa5849da77d92" - integrity sha512-Eyj9STw2DXMtXL5V/v0HYHO6+JjGPi257M5IYyxwqlvRchq6jbOsedobfxclB/gBUyBRtZdnyAIS8uCKjb4kpA== +"@aws-sdk/client-sts@3.507.0": + version "3.507.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.507.0.tgz#0a99b5b04ca8d2e30a52840cc67181b3f2ac990a" + integrity sha512-TOWBe0ApEh32QOib0R+irWGjd1F9wnhbGV5PcB9SakyRwvqwG5MKOfYxG7ocoDqLlaRwzZMidcy/PV8/OEVNKg== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" "@aws-sdk/core" "3.496.0" - "@aws-sdk/credential-provider-node" "3.499.0" - "@aws-sdk/middleware-host-header" "3.496.0" - "@aws-sdk/middleware-logger" "3.496.0" - "@aws-sdk/middleware-recursion-detection" "3.496.0" - "@aws-sdk/middleware-user-agent" "3.496.0" - "@aws-sdk/region-config-resolver" "3.496.0" - "@aws-sdk/types" "3.496.0" - "@aws-sdk/util-endpoints" "3.496.0" - "@aws-sdk/util-user-agent-browser" "3.496.0" - "@aws-sdk/util-user-agent-node" "3.496.0" + "@aws-sdk/middleware-host-header" "3.502.0" + "@aws-sdk/middleware-logger" "3.502.0" + "@aws-sdk/middleware-recursion-detection" "3.502.0" + "@aws-sdk/middleware-user-agent" "3.502.0" + "@aws-sdk/region-config-resolver" "3.502.0" + "@aws-sdk/types" "3.502.0" + "@aws-sdk/util-endpoints" "3.502.0" + "@aws-sdk/util-user-agent-browser" "3.502.0" + "@aws-sdk/util-user-agent-node" "3.502.0" "@smithy/config-resolver" "^2.1.1" "@smithy/core" "^1.3.1" "@smithy/fetch-http-handler" "^2.4.1" @@ -362,89 +429,107 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/credential-provider-env@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.496.0.tgz#5055bd2e3a169e5c10b37c40e0f356046947e707" - integrity sha512-lukQMJ8SWWP5RqkRNOHi/H+WMhRvSWa3Fc5Jf/VP6xHiPLfF1XafcvthtV91e0VwPCiseI+HqChrcGq8pvnxHw== +"@aws-sdk/credential-provider-env@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.502.0.tgz#800e63b2b9d90b078a120d474d5a3b1ec5b48514" + integrity sha512-KIB8Ae1Z7domMU/jU4KiIgK4tmYgvuXlhR54ehwlVHxnEoFPoPuGHFZU7oFn79jhhSLUFQ1lRYMxP0cEwb7XeQ== dependencies: - "@aws-sdk/types" "3.496.0" + "@aws-sdk/types" "3.502.0" "@smithy/property-provider" "^2.1.1" "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/credential-provider-ini@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.496.0.tgz#4de82fc173ba1581af4bf6fcad610f2fc0fd8ca1" - integrity sha512-2nD1jp1sIwcQaWK1y/9ruQOkW16RUxZpzgjbW/gnK3iiUXwx+/FNQWxshud+GTSx3Q4x6eIhqsbjtP4VVPPuUA== - dependencies: - "@aws-sdk/credential-provider-env" "3.496.0" - "@aws-sdk/credential-provider-process" "3.496.0" - "@aws-sdk/credential-provider-sso" "3.496.0" - "@aws-sdk/credential-provider-web-identity" "3.496.0" - "@aws-sdk/types" "3.496.0" +"@aws-sdk/credential-provider-http@3.503.1": + version "3.503.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.503.1.tgz#e882a4b740c9193650053033b3001b03ca4b12c8" + integrity sha512-rTdlFFGoPPFMF2YjtlfRuSgKI+XsF49u7d98255hySwhsbwd3Xp+utTTPquxP+CwDxMHbDlI7NxDzFiFdsoZug== + dependencies: + "@aws-sdk/types" "3.502.0" + "@smithy/fetch-http-handler" "^2.4.1" + "@smithy/node-http-handler" "^2.3.1" + "@smithy/property-provider" "^2.1.1" + "@smithy/protocol-http" "^3.1.1" + "@smithy/smithy-client" "^2.3.1" + "@smithy/types" "^2.9.1" + "@smithy/util-stream" "^2.1.1" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-ini@3.507.0": + version "3.507.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.507.0.tgz#c2b9cd1bf172a0057bf0ad888c19ce5450df13f2" + integrity sha512-2CnyduoR9COgd7qH1LPYK8UggGqVs8R4ASDMB5bwGxbg9ZerlStDiHpqvJNNg1k+VlejBr++utxfmHd236XgmQ== + dependencies: + "@aws-sdk/client-sts" "3.507.0" + "@aws-sdk/credential-provider-env" "3.502.0" + "@aws-sdk/credential-provider-process" "3.502.0" + "@aws-sdk/credential-provider-sso" "3.507.0" + "@aws-sdk/credential-provider-web-identity" "3.507.0" + "@aws-sdk/types" "3.502.0" "@smithy/credential-provider-imds" "^2.2.1" "@smithy/property-provider" "^2.1.1" "@smithy/shared-ini-file-loader" "^2.3.1" "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/credential-provider-node@3.499.0": - version "3.499.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.499.0.tgz#7980144fdd04e1e39af850084444ec29d2918473" - integrity sha512-EsiSevVmcVSMIq7D9siSH/XVc5I0vMntg1rx6KQdng1Fq8X/RBL5t9wSWEwOl7KFo5HlEsWrLWIpo1WHuzIL/w== - dependencies: - "@aws-sdk/credential-provider-env" "3.496.0" - "@aws-sdk/credential-provider-ini" "3.496.0" - "@aws-sdk/credential-provider-process" "3.496.0" - "@aws-sdk/credential-provider-sso" "3.496.0" - "@aws-sdk/credential-provider-web-identity" "3.496.0" - "@aws-sdk/types" "3.496.0" +"@aws-sdk/credential-provider-node@3.507.0": + version "3.507.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.507.0.tgz#b6c9f3c2c8294911c4f12e267f16a26e1eba4813" + integrity sha512-tkQnmOLkRBXfMLgDYHzogrqTNdtl0Im0ipzJb2IV5hfM5NoTfCf795e9A9isgwjSP/g/YEU0xQWxa4lq8LRtuA== + dependencies: + "@aws-sdk/credential-provider-env" "3.502.0" + "@aws-sdk/credential-provider-http" "3.503.1" + "@aws-sdk/credential-provider-ini" "3.507.0" + "@aws-sdk/credential-provider-process" "3.502.0" + "@aws-sdk/credential-provider-sso" "3.507.0" + "@aws-sdk/credential-provider-web-identity" "3.507.0" + "@aws-sdk/types" "3.502.0" "@smithy/credential-provider-imds" "^2.2.1" "@smithy/property-provider" "^2.1.1" "@smithy/shared-ini-file-loader" "^2.3.1" "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/credential-provider-process@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.496.0.tgz#1d623bed61229767f389feab560e3a3117bf2d26" - integrity sha512-/YZscCTGOKVmGr916Th4XF8Sz6JDtZ/n2loHG9exok9iy/qIbACsTRNLP9zexPxhPoue/oZqecY5xbVljfY34A== +"@aws-sdk/credential-provider-process@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.502.0.tgz#6c41d8845a1c7073491a064c158363de04640381" + integrity sha512-fJJowOjQ4infYQX0E1J3xFVlmuwEYJAFk0Mo1qwafWmEthsBJs+6BR2RiWDELHKrSK35u4Pf3fu3RkYuCtmQFw== dependencies: - "@aws-sdk/types" "3.496.0" + "@aws-sdk/types" "3.502.0" "@smithy/property-provider" "^2.1.1" "@smithy/shared-ini-file-loader" "^2.3.1" "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/credential-provider-sso@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.496.0.tgz#1c5f2d25b64936b79095f49cabbcd7832fb87087" - integrity sha512-eP7GxpT2QYubSDG7uk1GJW4eNymZCq65IxDyEFCXOP/kfqkxriCY+iVEFG6/Mo3LxvgrgHXU4jxrCAXMAWN43g== +"@aws-sdk/credential-provider-sso@3.507.0": + version "3.507.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.507.0.tgz#e98cf7fad69b4c12aa85c44affe9aae4cc81d796" + integrity sha512-6WBjou52QukFpDi4ezb19bcAx/bM8ge8qnJnRT02WVRmU6zFQ5yLD2fW1MFsbX3cwbey+wSqKd5FGE1Hukd5wQ== dependencies: - "@aws-sdk/client-sso" "3.496.0" - "@aws-sdk/token-providers" "3.496.0" - "@aws-sdk/types" "3.496.0" + "@aws-sdk/client-sso" "3.507.0" + "@aws-sdk/token-providers" "3.507.0" + "@aws-sdk/types" "3.502.0" "@smithy/property-provider" "^2.1.1" "@smithy/shared-ini-file-loader" "^2.3.1" "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/credential-provider-web-identity@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.496.0.tgz#7ad6d755445d1616a80dfa286a78c84dc1c3f14b" - integrity sha512-IbP+qLlvJSpNPj+zW6TtFuLRTK5Tf0hW+2pom4vFyi5YSH4pn8UOC136UdewX8vhXGS9BJQ5zBDMasIyl5VeGQ== +"@aws-sdk/credential-provider-web-identity@3.507.0": + version "3.507.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.507.0.tgz#22e028e2dd2a0a927707da1408099bc4f5b7a606" + integrity sha512-f+aGMfazBimX7S06224JRYzGTaMh1uIhfj23tZylPJ05KxTVi5IO1RoqeI/uHLJ+bDOx+JHBC04g/oCdO4kHvw== dependencies: - "@aws-sdk/types" "3.496.0" + "@aws-sdk/client-sts" "3.507.0" + "@aws-sdk/types" "3.502.0" "@smithy/property-provider" "^2.1.1" "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/middleware-bucket-endpoint@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.496.0.tgz#10a6e48b836321f32226790ffebcba1f281107ce" - integrity sha512-B+ilBMSs3+LJuo2bl2KB8GFdu+8PPVtYEWtwhNkmnaU8iMisgMBp5uuM8sUDvJX7I4iSF0WbgnhguX4cJqfAew== +"@aws-sdk/middleware-bucket-endpoint@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.502.0.tgz#580ef680c8b3b1230d78598089414769331f2a4a" + integrity sha512-mUSP2DUcjhO5zM2b21CvZ9AqwI8DaAeZA6NYHOxWGTV9BUxHcdGWXEjDkcVj9CQ0gvNwTtw6B5L/q52rVAnZbw== dependencies: - "@aws-sdk/types" "3.496.0" + "@aws-sdk/types" "3.502.0" "@aws-sdk/util-arn-parser" "3.495.0" "@smithy/node-config-provider" "^2.2.1" "@smithy/protocol-http" "^3.1.1" @@ -452,74 +537,74 @@ "@smithy/util-config-provider" "^2.2.1" tslib "^2.5.0" -"@aws-sdk/middleware-expect-continue@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.496.0.tgz#1b9f45451ddc3daccfc332d4bb3fdac9b2e54881" - integrity sha512-+exo5DVc+BeDus2iI6Fz1thefHGDXxUhHZ+4VHQ6HkStMy3Y22HugyEGHSQZmtRL86Hjr7dFbEWFsC47a2ItGA== +"@aws-sdk/middleware-expect-continue@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.502.0.tgz#fd265571e1f3a4855714fda34252de751fb054dd" + integrity sha512-DxfAuBVuPSt8as9xP57o8ks6ySVSjwO2NNNAdpLwk4KhEAPYEpHlf2yWYorYLrS+dDmwfYgOhRNoguuBdCu6ow== dependencies: - "@aws-sdk/types" "3.496.0" + "@aws-sdk/types" "3.502.0" "@smithy/protocol-http" "^3.1.1" "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/middleware-flexible-checksums@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.496.0.tgz#a06a553e243eed2d6a35f1353f85e279f2a977dc" - integrity sha512-yQIWfjEMvgsAJ7ku224vXDjXPD+f9zfKZFialJva8VUlEr7hQp4CQ0rxV3YThSaixKEDDs5k6kOjWAd2BPGr2A== +"@aws-sdk/middleware-flexible-checksums@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.502.0.tgz#e4fa059f3c4603bd815f16d69e1c4277c4c4830a" + integrity sha512-kCt2zQDFumz/LnJJJOSd2GW4dr8oT8YMJKgxC/pph3aRXoSHXRwhrMbFnQ8swEE9vjywxtcED8sym0b0tNhhoA== dependencies: "@aws-crypto/crc32" "3.0.0" "@aws-crypto/crc32c" "3.0.0" - "@aws-sdk/types" "3.496.0" + "@aws-sdk/types" "3.502.0" "@smithy/is-array-buffer" "^2.1.1" "@smithy/protocol-http" "^3.1.1" "@smithy/types" "^2.9.1" "@smithy/util-utf8" "^2.1.1" tslib "^2.5.0" -"@aws-sdk/middleware-host-header@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.496.0.tgz#e17de11d553548872566c72669c5ea2e7164722b" - integrity sha512-jUdPpSJeqCYXf6hSjfwsfHway7peIV8Vz51w/BN91bF4vB/bYwAC5o9/iJiK/EoByp5asxA8fg9wFOyGjzdbLg== +"@aws-sdk/middleware-host-header@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.502.0.tgz#2651fb3509990271c89eb50133fb17cb8ae435f6" + integrity sha512-EjnG0GTYXT/wJBmm5/mTjDcAkzU8L7wQjOzd3FTXuTCNNyvAvwrszbOj5FlarEw5XJBbQiZtBs+I5u9+zy560w== dependencies: - "@aws-sdk/types" "3.496.0" + "@aws-sdk/types" "3.502.0" "@smithy/protocol-http" "^3.1.1" "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/middleware-location-constraint@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.496.0.tgz#b44ae48bddf8409c2c55a36a4f406661fcd729be" - integrity sha512-i4ocJ2Zs86OtPREbB18InFukhqg2qtBxb5gywv79IHDPVmpOYE4m/3v3yGUrkjfF2GTlUL0k5FskNNqw41yfng== +"@aws-sdk/middleware-location-constraint@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.502.0.tgz#188c3bae2e908aff11030af10bc3b64c87905910" + integrity sha512-fLRwPuTZvEWQkPjys03m3D6tYN4kf7zU6+c8mJxwvEg+yfBuv2RBsbd+Vn2bTisUjXvIg1kyBzONlpHoIyFneg== dependencies: - "@aws-sdk/types" "3.496.0" + "@aws-sdk/types" "3.502.0" "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/middleware-logger@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.496.0.tgz#96f867ae50144eb6bae91a427e315a0f0eb783b0" - integrity sha512-EwMVSY6iBMeGbVnvwdaFl/ClMS/YWtxCAo+bcEtgk8ltRuo7qgbJem8Km/fvWC1vdWvIbe4ArdJ8iGzq62ffAw== +"@aws-sdk/middleware-logger@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.502.0.tgz#558cefdd233779f15687957f9f07497199b22d72" + integrity sha512-FDyv6K4nCoHxbjLGS2H8ex8I0KDIiu4FJgVRPs140ZJy6gE5Pwxzv6YTzZGLMrnqcIs9gh065Lf6DjwMelZqaw== dependencies: - "@aws-sdk/types" "3.496.0" + "@aws-sdk/types" "3.502.0" "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/middleware-recursion-detection@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.496.0.tgz#c14e1bbe609e4af3ec9037c2379e2b64d660e4dd" - integrity sha512-+IuOcFsfqg2WAnaEzH6KhVbicqCxtOq9w3DH2jwTpddRlCx2Kqf6wCzg8luhHRGyjBZdsbIS+OXwyMevoppawA== +"@aws-sdk/middleware-recursion-detection@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.502.0.tgz#c22e2c0c1d551e58c788264687324bb7186af2cc" + integrity sha512-hvbyGJbxeuezxOu8VfFmcV4ql1hKXLxHTe5FNYfEBat2KaZXVhc1Hg+4TvB06/53p+E8J99Afmumkqbxs2esUA== dependencies: - "@aws-sdk/types" "3.496.0" + "@aws-sdk/types" "3.502.0" "@smithy/protocol-http" "^3.1.1" "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/middleware-sdk-s3@3.499.0": - version "3.499.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.499.0.tgz#4ba6a8308a971c4e77a2c8132ef894ca01d0612d" - integrity sha512-thTb47U1hYHk5ei+yO0D0aehbgQXeAcgvyyxOID9/HDuRfWuTvKdclWh/goIeDfvSS87VBukEAjnCa5JYBwzug== +"@aws-sdk/middleware-sdk-s3@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.502.0.tgz#a2d968414247fd9cbfc90e1071f29e4375cb25b8" + integrity sha512-GbGugrfyL5bNA/zw8iQll92yXBONfWSC8Ns00DtkOU1saPXp4/7WHtyyZGYdvPa73T1IsuZy9egpoYRBmRcd5Q== dependencies: - "@aws-sdk/types" "3.496.0" + "@aws-sdk/types" "3.502.0" "@aws-sdk/util-arn-parser" "3.495.0" "@smithy/node-config-provider" "^2.2.1" "@smithy/protocol-http" "^3.1.1" @@ -529,12 +614,12 @@ "@smithy/util-config-provider" "^2.2.1" tslib "^2.5.0" -"@aws-sdk/middleware-signing@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.496.0.tgz#265cb5a9d7825c111c53bb555e5cb2619f804dd1" - integrity sha512-Oq73Brs4IConvWnRlh8jM1V7LHoTw9SVQklu/QW2FPlNrB3B8fuTdWHHYIWv7ybw1bykXoCY99v865Mmq/Or/g== +"@aws-sdk/middleware-signing@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.502.0.tgz#48b3503147eecb1a53a63633462de353668f635a" + integrity sha512-4hF08vSzJ7L6sB+393gOFj3s2N6nLusYS0XrMW6wYNFU10IDdbf8Z3TZ7gysDJJHEGQPmTAesPEDBsasGWcMxg== dependencies: - "@aws-sdk/types" "3.496.0" + "@aws-sdk/types" "3.502.0" "@smithy/property-provider" "^2.1.1" "@smithy/protocol-http" "^3.1.1" "@smithy/signature-v4" "^2.1.1" @@ -542,97 +627,66 @@ "@smithy/util-middleware" "^2.1.1" tslib "^2.5.0" -"@aws-sdk/middleware-ssec@3.498.0": - version "3.498.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.498.0.tgz#6f846122d18163ff4c83513649a831465530a64d" - integrity sha512-sWujXgzeTqMZzj/pRYEnnEbSzhBosqw9DXHOY1Mg2igI9NEfGlB7lPARp6aKmCaYlP3Bcj2X86vKCqF53mbyig== +"@aws-sdk/middleware-ssec@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.502.0.tgz#0abdebedd98b284112c2eda36f707111a8a3cbd5" + integrity sha512-1nidVTIba6/aVjjzD/WNqWdzSyTrXOHO3Ddz2MGD8S1yGSrYz4iYaq4Bm/uosfdr8B1L0Ws0pjdRXrNfzSw/DQ== dependencies: - "@aws-sdk/types" "3.496.0" + "@aws-sdk/types" "3.502.0" "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/middleware-user-agent@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.496.0.tgz#82b49fd8613ae5a9ceafc9117c34271615d0f002" - integrity sha512-+iMtRxFk0GmFWNUF4ilxylOQd9PZdR4ZC9jkcPIh1PZlvKtpCyFywKlk5RRZKklSoJ/CttcqwhMvOXTNbWm/0w== +"@aws-sdk/middleware-user-agent@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.502.0.tgz#dd740f150d6f3110cf5b08fedf361d202f899c93" + integrity sha512-TxbBZbRiXPH0AUxegqiNd9aM9zNSbfjtBs5MEfcBsweeT/B2O7K1EjP9+CkB8Xmk/5FLKhAKLr19b1TNoE27rw== dependencies: - "@aws-sdk/types" "3.496.0" - "@aws-sdk/util-endpoints" "3.496.0" + "@aws-sdk/types" "3.502.0" + "@aws-sdk/util-endpoints" "3.502.0" "@smithy/protocol-http" "^3.1.1" "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/region-config-resolver@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.496.0.tgz#133c8a4a6d5e7672077ba124751f40b2d6efc3ed" - integrity sha512-URrNVOPHPgEDm6QFu6lDC2cUFs+Jx23mA3jEwCvoKlXiEY/ZoWjH8wlX3OMUlLrF1qoUTuD03jjrJzF6zoCgug== +"@aws-sdk/region-config-resolver@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.502.0.tgz#c18a04060879eb03c47c05b05fc296119ee073ba" + integrity sha512-mxmsX2AGgnSM+Sah7mcQCIneOsJQNiLX0COwEttuf8eO+6cLMAZvVudH3BnWTfea4/A9nuri9DLCqBvEmPrilg== dependencies: - "@aws-sdk/types" "3.496.0" + "@aws-sdk/types" "3.502.0" "@smithy/node-config-provider" "^2.2.1" "@smithy/types" "^2.9.1" "@smithy/util-config-provider" "^2.2.1" "@smithy/util-middleware" "^2.1.1" tslib "^2.5.0" -"@aws-sdk/signature-v4-multi-region@3.499.0": - version "3.499.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.499.0.tgz#a0f4171db60b3f1e926e90c19b4f6ce1c2ad2596" - integrity sha512-8HSFnZErRm7lAfk+Epxrf4QNdQEamg1CnbLybtKQQEjmvxLuXYvj16KlpYEZIwEENOMEvnCqMc7syTPkmjVhJA== +"@aws-sdk/signature-v4-multi-region@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.502.0.tgz#2d3fab86051eb98a4e4216e0f2f3d957a854b42c" + integrity sha512-NpOXtUXH0ZAgnyI3Y3s2fPrgwbsWoNMwdoXdFZvH0eDzzX80tim7Yuy6dzVA5zrxSzOYs1xjcOhM+4CmM0QZiw== dependencies: - "@aws-sdk/middleware-sdk-s3" "3.499.0" - "@aws-sdk/types" "3.496.0" + "@aws-sdk/middleware-sdk-s3" "3.502.0" + "@aws-sdk/types" "3.502.0" "@smithy/protocol-http" "^3.1.1" "@smithy/signature-v4" "^2.1.1" "@smithy/types" "^2.9.1" tslib "^2.5.0" -"@aws-sdk/token-providers@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.496.0.tgz#5b5baf0801fd591de4a28146afbdc8250197f9fa" - integrity sha512-fyi8RcObEa1jNETJdc2H6q9VHrrdKCj/b6+fbLvymb7mUVRd0aWUn+24SNUImnSOnrwYnwaMfyyEC388X4MbFQ== +"@aws-sdk/token-providers@3.507.0": + version "3.507.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.507.0.tgz#7456cec822a7f59a4b58a2eda1a0ff963c4c3c6b" + integrity sha512-ehOINGjoGJc6Puzon7ev4bXckkaZx18WNgMTNttYJhj3vTpj5LPSQbI/5SS927bEbpGMFz1+hJ6Ra5WGfbTcEQ== dependencies: - "@aws-crypto/sha256-browser" "3.0.0" - "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/middleware-host-header" "3.496.0" - "@aws-sdk/middleware-logger" "3.496.0" - "@aws-sdk/middleware-recursion-detection" "3.496.0" - "@aws-sdk/middleware-user-agent" "3.496.0" - "@aws-sdk/region-config-resolver" "3.496.0" - "@aws-sdk/types" "3.496.0" - "@aws-sdk/util-endpoints" "3.496.0" - "@aws-sdk/util-user-agent-browser" "3.496.0" - "@aws-sdk/util-user-agent-node" "3.496.0" - "@smithy/config-resolver" "^2.1.1" - "@smithy/fetch-http-handler" "^2.4.1" - "@smithy/hash-node" "^2.1.1" - "@smithy/invalid-dependency" "^2.1.1" - "@smithy/middleware-content-length" "^2.1.1" - "@smithy/middleware-endpoint" "^2.4.1" - "@smithy/middleware-retry" "^2.1.1" - "@smithy/middleware-serde" "^2.1.1" - "@smithy/middleware-stack" "^2.1.1" - "@smithy/node-config-provider" "^2.2.1" - "@smithy/node-http-handler" "^2.3.1" + "@aws-sdk/client-sso-oidc" "3.507.0" + "@aws-sdk/types" "3.502.0" "@smithy/property-provider" "^2.1.1" - "@smithy/protocol-http" "^3.1.1" "@smithy/shared-ini-file-loader" "^2.3.1" - "@smithy/smithy-client" "^2.3.1" "@smithy/types" "^2.9.1" - "@smithy/url-parser" "^2.1.1" - "@smithy/util-base64" "^2.1.1" - "@smithy/util-body-length-browser" "^2.1.1" - "@smithy/util-body-length-node" "^2.2.1" - "@smithy/util-defaults-mode-browser" "^2.1.1" - "@smithy/util-defaults-mode-node" "^2.1.1" - "@smithy/util-endpoints" "^1.1.1" - "@smithy/util-retry" "^2.1.1" - "@smithy/util-utf8" "^2.1.1" tslib "^2.5.0" -"@aws-sdk/types@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.496.0.tgz#cdde44a94a57cf8f97cf05e4d0bdce2f56ce4eeb" - integrity sha512-umkGadK4QuNQaMoDICMm7NKRI/mYSXiyPjcn3d53BhsuArYU/52CebGQKdt4At7SwwsiVJZw9RNBHyN5Mm0HVw== +"@aws-sdk/types@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.502.0.tgz#c23dda4df7fdbe32642d4f5ab23516f455fb6aba" + integrity sha512-M0DSPYe/gXhwD2QHgoukaZv5oDxhW3FfvYIrJptyqUq3OnPJBcDbihHjrE0PBtfh/9kgMZT60/fQ2NVFANfa2g== dependencies: "@smithy/types" "^2.9.1" tslib "^2.5.0" @@ -651,12 +705,12 @@ dependencies: tslib "^2.5.0" -"@aws-sdk/util-endpoints@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.496.0.tgz#5ce7d3efd7ab67db556e2c199e73826c44d22ecd" - integrity sha512-1QzOiWHi383ZwqSi/R2KgKCd7M+6DxkxI5acqLPm8mvDRDP2jRjrnVaC0g9/tlttWousGEemDUWStwrD2mVYSw== +"@aws-sdk/util-endpoints@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.502.0.tgz#aee818c0c53dfedfd49599fc260cd880faea5e82" + integrity sha512-6LKFlJPp2J24r1Kpfoz5ESQn+1v5fEjDB3mtUKRdpwarhm3syu7HbKlHCF3KbcCOyahobvLvhoedT78rJFEeeg== dependencies: - "@aws-sdk/types" "3.496.0" + "@aws-sdk/types" "3.502.0" "@smithy/types" "^2.9.1" "@smithy/util-endpoints" "^1.1.1" tslib "^2.5.0" @@ -668,22 +722,22 @@ dependencies: tslib "^2.3.1" -"@aws-sdk/util-user-agent-browser@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.496.0.tgz#494b086dd8b07acdd6be65034c51545e5bcee37b" - integrity sha512-4j2spN+h0I0qfSMsGvJXTfQBu1e18rPdekKvzsGJxhaAE1tNgUfUT4nbvc5uVn0sNjZmirskmJ3kfbzVOrqIFg== +"@aws-sdk/util-user-agent-browser@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.502.0.tgz#87b42abff6944052c78a84981637ac21859dd016" + integrity sha512-v8gKyCs2obXoIkLETAeEQ3AM+QmhHhst9xbM1cJtKUGsRlVIak/XyyD+kVE6kmMm1cjfudHpHKABWk9apQcIZQ== dependencies: - "@aws-sdk/types" "3.496.0" + "@aws-sdk/types" "3.502.0" "@smithy/types" "^2.9.1" bowser "^2.11.0" tslib "^2.5.0" -"@aws-sdk/util-user-agent-node@3.496.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.496.0.tgz#db14e02cf82af556c826570efc7db1e57de3262d" - integrity sha512-h0Ax0jlDc7UIo3KoSI4C4tVLBFoiAdx3+DhTVfgLS7x93d41dMlziPoBX2RgdcFn37qnzw6AQKTVTMwDbRCGpg== +"@aws-sdk/util-user-agent-node@3.502.0": + version "3.502.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.502.0.tgz#04ac4d0371d4f243f12ddc23b42ca8ceb27dfad9" + integrity sha512-9RjxpkGZKbTdl96tIJvAo+vZoz4P/cQh36SBUt9xfRfW0BtsaLyvSrvlR5wyUYhvRcC12Axqh/8JtnAPq//+Vw== dependencies: - "@aws-sdk/types" "3.496.0" + "@aws-sdk/types" "3.502.0" "@smithy/node-config-provider" "^2.2.1" "@smithy/types" "^2.9.1" tslib "^2.5.0" @@ -1772,15 +1826,20 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" - integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" @@ -1790,7 +1849,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/sourcemap-codec@^1.4.15": +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== @@ -1811,7 +1870,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18": +"@jridgewell/trace-mapping@^0.3.18": version "0.3.18" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== @@ -1819,12 +1878,20 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" -"@ljharb/through@^2.3.9": - version "2.3.11" - resolved "https://registry.yarnpkg.com/@ljharb/through/-/through-2.3.11.tgz#783600ff12c06f21a76cc26e33abd0b1595092f9" - integrity sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w== +"@jridgewell/trace-mapping@^0.3.20": + version "0.3.22" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" + integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== dependencies: - call-bind "^1.0.2" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@ljharb/through@^2.3.11": + version "2.3.12" + resolved "https://registry.yarnpkg.com/@ljharb/through/-/through-2.3.12.tgz#c418c43060eee193adce48b15c2206096a28e9ea" + integrity sha512-ajo/heTlG3QgC8EGP6APIejksVAYt4ayz4tqoP3MolFELzcH1x1fzwEYRJTPO0IELutZ5HQ0c26/GqAYy79u3g== + dependencies: + call-bind "^1.0.5" "@lukeed/csprng@^1.0.0": version "1.0.1" @@ -1843,14 +1910,14 @@ resolved "https://registry.yarnpkg.com/@nestjs/axios/-/axios-3.0.1.tgz#b006f81dd54a49def92cfaf9a8970434567e75ce" integrity sha512-VlOZhAGDmOoFdsmewn8AyClAdGpKXQQaY1+3PGB+g6ceurGIdTxZgRX3VXc1T6Zs60PedWjg3A82TDOB05mrzQ== -"@nestjs/cli@^10.3.0": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@nestjs/cli/-/cli-10.3.0.tgz#5f9ef49a60baf4b39cb87e4b74240f7c9339e923" - integrity sha512-37h+wSDItY0NE/x3a/M9yb2cXzfsD4qoE26rHgFn592XXLelDN12wdnfn7dTIaiRZT7WOCdQ+BYP9mQikR4AsA== +"@nestjs/cli@^10.3.1": + version "10.3.1" + resolved "https://registry.yarnpkg.com/@nestjs/cli/-/cli-10.3.1.tgz#f13af238fd17ce22f5c4a3439828248938aca8e8" + integrity sha512-xzabUxTdZ7IcNXLzAq1YZgGJkAt6JNeeLVORj8MfMV0io2edgAn5ASn4tIOHvnsmKh6yX1kBaVEhTHiuENlplA== dependencies: - "@angular-devkit/core" "17.0.9" - "@angular-devkit/schematics" "17.0.9" - "@angular-devkit/schematics-cli" "17.0.9" + "@angular-devkit/core" "17.1.2" + "@angular-devkit/schematics" "17.1.2" + "@angular-devkit/schematics-cli" "17.1.2" "@nestjs/schematics" "^10.0.1" chalk "4.1.2" chokidar "3.5.3" @@ -1868,7 +1935,7 @@ tsconfig-paths "4.2.0" tsconfig-paths-webpack-plugin "4.1.0" typescript "5.3.3" - webpack "5.89.0" + webpack "5.90.1" webpack-node-externals "3.0.0" "@nestjs/common@^10.3.1": @@ -2002,10 +2069,10 @@ path-to-regexp "3.2.0" swagger-ui-dist "5.11.0" -"@nestjs/terminus@^10.2.0": - version "10.2.0" - resolved "https://registry.yarnpkg.com/@nestjs/terminus/-/terminus-10.2.0.tgz#3776ac21d2b1a1b8ce0a60e7f51dd6c498ca1de6" - integrity sha512-zPs98xvJ4ogEimRQOz8eU90mb7z+W/kd/mL4peOgrJ/VqER+ibN2Cboj65uJZW3XuNhpOqaeYOJte86InJd44A== +"@nestjs/terminus@^10.2.1": + version "10.2.1" + resolved "https://registry.yarnpkg.com/@nestjs/terminus/-/terminus-10.2.1.tgz#1bb1cd5532f34c9d80b348412dbe681ceaeb3ad4" + integrity sha512-23abPhotIP4+hrCZ8YkLEOmZ3m7eUYh1QOwdyrNkU9eMz/nc5LpVzy7jFbsNUuvlnT4MPV/7KXfyQTruQkTouw== dependencies: boxen "5.1.2" check-disk-space "3.4.0" @@ -2066,49 +2133,49 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@sentry-internal/tracing@7.98.0": - version "7.98.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.98.0.tgz#812ef7fce6b64794784f3279c66bc6b5cfd29d7f" - integrity sha512-FnhD2uMLIAJvv4XsYPv3qsTTtxrImyLxiZacudJyaWFhxoeVQ8bKKbWJ/Ar68FAwqTtjXMeY5evnEBbRMcQlaA== +"@sentry-internal/tracing@7.99.0": + version "7.99.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.99.0.tgz#ad13f8343444ecf7323a4220d4e57a55166565d7" + integrity sha512-z3JQhHjoM1KdM20qrHwRClKJrNLr2CcKtCluq7xevLtXHJWNAQQbafnWD+Aoj85EWXBzKt9yJMv2ltcXJ+at+w== dependencies: - "@sentry/core" "7.98.0" - "@sentry/types" "7.98.0" - "@sentry/utils" "7.98.0" + "@sentry/core" "7.99.0" + "@sentry/types" "7.99.0" + "@sentry/utils" "7.99.0" -"@sentry/core@7.98.0": - version "7.98.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.98.0.tgz#e4f5353bc3986e510b8dd2507355787440d6e25d" - integrity sha512-baRUcpCNGyk7cApQHMfqEZJkXdvAKK+z/dVWiMqWc5T5uhzMnPE8/gjP1JZsMtJSQ8g5nHimBdI5TwOyZtxPaA== +"@sentry/core@7.99.0": + version "7.99.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.99.0.tgz#6881aae5ac1436637b3d88e0b12df4ab56016c5f" + integrity sha512-vOAtzcAXEUtS/oW7wi3wMkZ3hsb5Ch96gKyrrj/mXdOp2zrcwdNV6N9/pawq2E9P/7Pw8AXw4CeDZztZrjQLuA== dependencies: - "@sentry/types" "7.98.0" - "@sentry/utils" "7.98.0" + "@sentry/types" "7.99.0" + "@sentry/utils" "7.99.0" -"@sentry/node@^7.98.0": - version "7.98.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.98.0.tgz#49d0a46e72f4e6116b4929d033322951e5a7e88b" - integrity sha512-9cHW217DnU9wC4iR+QxmY3q59N1Touh23hPMDtpMRmbRHSgrmLMoHTVPhK9zHsXRs0mUeidmMqY1ubAWauQByw== +"@sentry/node@^7.99.0": + version "7.99.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.99.0.tgz#c70e174527bbd86294dd446dbc1ae9036fb729f2" + integrity sha512-34wYtLddnPcQ8qvKq62AfxowaMFw+GMUZGv7fIs9FxeBqqqn6Ckl0gFCTADudIIBQ3rSbmN7sHJIXdyiQv+pcw== dependencies: - "@sentry-internal/tracing" "7.98.0" - "@sentry/core" "7.98.0" - "@sentry/types" "7.98.0" - "@sentry/utils" "7.98.0" + "@sentry-internal/tracing" "7.99.0" + "@sentry/core" "7.99.0" + "@sentry/types" "7.99.0" + "@sentry/utils" "7.99.0" -"@sentry/types@7.98.0": - version "7.98.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.98.0.tgz#6a88bf60679aea88ac6cba4d1517958726c2bafb" - integrity sha512-pc034ziM0VTETue4bfBcBqTWGy4w0okidtoZJjGVrYAfE95ObZnUGVj/XYIQ3FeCYWIa7NFN2MvdsCS0buwivQ== +"@sentry/types@7.99.0": + version "7.99.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.99.0.tgz#bba7a514abab445026ee42f40f92f81275a6deba" + integrity sha512-94qwOw4w40sAs5mCmzcGyj8ZUu/KhnWnuMZARRq96k+SjRW/tHFAOlIdnFSrt3BLPvSOK7R3bVAskZQ0N4FTmA== -"@sentry/utils@7.98.0": - version "7.98.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.98.0.tgz#54355a197f7f71a6d17354a3d043022df402b502" - integrity sha512-0/LY+kpHxItVRY0xPDXPXVsKRb95cXsGSQf8sVMtfSjz++0bLL1U4k7PFz1c5s2/Vk0B8hS6duRrgMv6dMIZDw== +"@sentry/utils@7.99.0": + version "7.99.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.99.0.tgz#ef96c3b59e23c79f3ef500db508234a48fa1cfbe" + integrity sha512-cYZy5WNTkWs5GgggGnjfGqC44CWir0pAv4GVVSx0fsup4D4pMKBJPrtub15f9uC+QkUf3vVkqwpBqeFxtmJQTQ== dependencies: - "@sentry/types" "7.98.0" + "@sentry/types" "7.99.0" -"@sideway/address@^4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" - integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== +"@sideway/address@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" + integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== dependencies: "@hapi/hoek" "^9.0.0" @@ -2744,10 +2811,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.52.tgz#7f1f57ad5b741f3d5b210d3b1f145640d89bf8fe" integrity sha512-BZWrtCU0bMVAIliIV+HJO1f1PR41M7NKjfxrFJwwhKI1KwhwOxYw1SXg9ao+CIMt774nFuGiG6eU+udtbEI9oQ== -"@types/estree@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" - integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== +"@types/estree@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== "@types/express-serve-static-core@^4.17.18": version "4.17.29" @@ -2813,10 +2880,10 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^29.5.11": - version "29.5.11" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.11.tgz#0c13aa0da7d0929f078ab080ae5d4ced80fa2f2c" - integrity sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ== +"@types/jest@^29.5.12": + version "29.5.12" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" + integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -2892,10 +2959,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.3.tgz#463fc47f13ec0688a33aec75d078a0541a447199" integrity sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ== -"@types/node@^20.11.7": - version "20.11.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.7.tgz#cb49aedd758c978c30806d0c38b520ed2a3df6e0" - integrity sha512-GPmeN1C3XAyV5uybAf4cMLWT9fDWcmQhZVtMFu7OR32WjrqGG+Wnk2V1d0bmtUyE/Zy1QJ9BxyiTih9z8Oks8A== +"@types/node@^20.11.16": + version "20.11.16" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.16.tgz#4411f79411514eb8e2926f036c86c9f0e4ec6708" + integrity sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ== dependencies: undici-types "~5.26.4" @@ -3019,16 +3086,16 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.1.tgz#bb0676af940bc23bf299ca58dbdc6589c2548c2e" - integrity sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg== +"@typescript-eslint/eslint-plugin@^6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" + integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== dependencies: "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.19.1" - "@typescript-eslint/type-utils" "6.19.1" - "@typescript-eslint/utils" "6.19.1" - "@typescript-eslint/visitor-keys" "6.19.1" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/type-utils" "6.21.0" + "@typescript-eslint/utils" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" graphemer "^1.4.0" ignore "^5.2.4" @@ -3036,47 +3103,47 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.19.1.tgz#68a87bb21afaf0b1689e9cdce0e6e75bc91ada78" - integrity sha512-WEfX22ziAh6pRE9jnbkkLGp/4RhTpffr2ZK5bJ18M8mIfA8A+k97U9ZyaXCEJRlmMHh7R9MJZWXp/r73DzINVQ== +"@typescript-eslint/parser@^6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" + integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== dependencies: - "@typescript-eslint/scope-manager" "6.19.1" - "@typescript-eslint/types" "6.19.1" - "@typescript-eslint/typescript-estree" "6.19.1" - "@typescript-eslint/visitor-keys" "6.19.1" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.19.1.tgz#2f527ee30703a6169a52b31d42a1103d80acd51b" - integrity sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w== +"@typescript-eslint/scope-manager@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" + integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== dependencies: - "@typescript-eslint/types" "6.19.1" - "@typescript-eslint/visitor-keys" "6.19.1" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" -"@typescript-eslint/type-utils@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.19.1.tgz#6a130e3afe605a4898e043fa9f72e96309b54935" - integrity sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg== +"@typescript-eslint/type-utils@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" + integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== dependencies: - "@typescript-eslint/typescript-estree" "6.19.1" - "@typescript-eslint/utils" "6.19.1" + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/utils" "6.21.0" debug "^4.3.4" ts-api-utils "^1.0.1" -"@typescript-eslint/types@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.19.1.tgz#2d4c9d492a63ede15e7ba7d129bdf7714b77f771" - integrity sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg== +"@typescript-eslint/types@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" + integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== -"@typescript-eslint/typescript-estree@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz#796d88d88882f12e85bb33d6d82d39e1aea54ed1" - integrity sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA== +"@typescript-eslint/typescript-estree@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" + integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== dependencies: - "@typescript-eslint/types" "6.19.1" - "@typescript-eslint/visitor-keys" "6.19.1" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -3084,25 +3151,25 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/utils@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.19.1.tgz#df93497f9cfddde2bcc2a591da80536e68acd151" - integrity sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w== +"@typescript-eslint/utils@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" + integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.19.1" - "@typescript-eslint/types" "6.19.1" - "@typescript-eslint/typescript-estree" "6.19.1" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" semver "^7.5.4" -"@typescript-eslint/visitor-keys@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.1.tgz#2164073ed4fc34a5ff3b5e25bb5a442100454c4c" - integrity sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ== +"@typescript-eslint/visitor-keys@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" + integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== dependencies: - "@typescript-eslint/types" "6.19.1" + "@typescript-eslint/types" "6.21.0" eslint-visitor-keys "^3.4.1" "@ucast/core@^1.0.0", "@ucast/core@^1.4.1", "@ucast/core@^1.6.1": @@ -3297,7 +3364,7 @@ acorn-walk@^8.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^8.4.1, acorn@^8.5.0: +acorn@^8.4.1: version "8.7.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== @@ -3307,6 +3374,11 @@ acorn@^8.7.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== +acorn@^8.8.2: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + acorn@^8.9.0: version "8.10.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" @@ -3732,7 +3804,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.14.5, browserslist@^4.20.2: +browserslist@^4.20.2: version "4.21.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.1.tgz#c9b9b0a54c7607e8dc3e01a0d311727188011a00" integrity sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ== @@ -3742,6 +3814,16 @@ browserslist@^4.14.5, browserslist@^4.20.2: node-releases "^2.0.5" update-browserslist-db "^1.0.4" +browserslist@^4.21.10: + version "4.22.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" + integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== + dependencies: + caniuse-lite "^1.0.30001580" + electron-to-chromium "^1.4.648" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -3828,6 +3910,11 @@ caniuse-lite@^1.0.30001359: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001363.tgz#26bec2d606924ba318235944e1193304ea7c4f15" integrity sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg== +caniuse-lite@^1.0.30001580: + version "1.0.30001584" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001584.tgz#5e3ea0625d048d5467670051687655b1f7bf7dfd" + integrity sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ== + case@^1.6.3: version "1.6.3" resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" @@ -4576,6 +4663,11 @@ electron-to-chromium@^1.4.172: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.182.tgz#5d59214ebfe90b36f23e81cd226a42732cd8c677" integrity sha512-OpEjTADzGoXABjqobGhpy0D2YsTncAax7IkER68ycc4adaq0dqEG9//9aenKPy7BGA90bqQdLac0dPp6uMkcSg== +electron-to-chromium@^1.4.648: + version "1.4.657" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.657.tgz#8a07ee3faa552976970843a80a1c94088ea59c9a" + integrity sha512-On2ymeleg6QbRuDk7wNgDdXtNqlJLM2w4Agx1D/RiTmItiL+a9oq5p7HUa2ZtkAtGBe/kil2dq/7rPfkbe0r5w== + emittery@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" @@ -5486,10 +5578,10 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -google-auth-library@^9.5.0: - version "9.5.0" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-9.5.0.tgz#fd97b78bc1512025b9c9ad3998c60e2d75b6137e" - integrity sha512-OUbP509lWVlZxuMY+Cgomw49VzZFP9myIcVeYEpeBlbXJbPC4R+K4BmO9hd3ciYM5QIwm5W1PODcKjqxtkye9Q== +google-auth-library@^9.6.2: + version "9.6.2" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-9.6.2.tgz#c615b9186ee1871eab4703a9d07206c8c73d46a7" + integrity sha512-8G5i+uELrRE244PGnTc9UxiWZ2FMWD5jiIe9P2XSxCvXv/0ip/phjeHSE4bhJnLBdJb+Bu/Gj9Lr33TmDnbAiw== dependencies: base64-js "^1.3.0" ecdsa-sig-formatter "^1.0.11" @@ -5637,10 +5729,10 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -husky@^9.0.6: - version "9.0.6" - resolved "https://registry.yarnpkg.com/husky/-/husky-9.0.6.tgz#cee0245d60480b12279cf492ec6cfc1aeb7fa759" - integrity sha512-EEuw/rfTiMjOfuL7pGO/i9otg1u36TXxqjIA6D9qxVjd/UXoDOsLor/BSFf5hTK50shwzCU3aVVwdXDp/lp7RA== +husky@^9.0.10: + version "9.0.10" + resolved "https://registry.yarnpkg.com/husky/-/husky-9.0.10.tgz#ddca8908deb5f244e9286865ebc80b54387672c2" + integrity sha512-TQGNknoiy6bURzIO77pPRu+XHi6zI7T93rX+QnJsoYFf3xdjKOur+IlfqzJGMHIK/wXrLg+GsvMs8Op7vI2jVA== iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" @@ -5729,12 +5821,12 @@ inquirer@8.2.6: through "^2.3.6" wrap-ansi "^6.0.1" -inquirer@9.2.11: - version "9.2.11" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-9.2.11.tgz#e9003755c233a414fceda1891c23bd622cad4a95" - integrity sha512-B2LafrnnhbRzCWfAdOXisUzL89Kg8cVJlYmhqoi3flSiV/TveO+nsXwgKr9h9PIo+J1hz7nBSk6gegRIMBBf7g== +inquirer@9.2.12: + version "9.2.12" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-9.2.12.tgz#0348e9311765b7c93fce143bb1c0ef1ae879b1d7" + integrity sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q== dependencies: - "@ljharb/through" "^2.3.9" + "@ljharb/through" "^2.3.11" ansi-escapes "^4.3.2" chalk "^5.3.0" cli-cursor "^3.1.0" @@ -6508,14 +6600,14 @@ jest@^29.7.0: import-local "^3.0.2" jest-cli "^29.7.0" -joi@^17.12.0: - version "17.12.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.12.0.tgz#a3fb5715f198beb0471cd551dd26792089c308d5" - integrity sha512-HSLsmSmXz+PV9PYoi3p7cgIbj06WnEBNT28n+bbBNcPZXZFqCzzvGqpTBPujx/Z0nh1+KNQPDrNgdmQ8dq0qYw== +joi@^17.12.1: + version "17.12.1" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.12.1.tgz#3347ecf4cd3301962d42191c021b165eef1f395b" + integrity sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ== dependencies: "@hapi/hoek" "^9.3.0" "@hapi/topo" "^5.1.0" - "@sideway/address" "^4.1.4" + "@sideway/address" "^4.1.5" "@sideway/formula" "^3.0.1" "@sideway/pinpoint" "^2.0.0" @@ -7001,10 +7093,10 @@ mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -moment-timezone@^0.5.44: - version "0.5.44" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.44.tgz#a64a4e47b68a43deeab5ae4eb4f82da77cdf595f" - integrity sha512-nv3YpzI/8lkQn0U6RkLd+f0W/zy/JnoR5/EyPz/dNkPTBjA2jNLCVxaiQ8QpeLymhSZvX0wCL5s27NQWdOPwAw== +moment-timezone@^0.5.45: + version "0.5.45" + resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.45.tgz#cb685acd56bac10e69d93c536366eb65aa6bcf5c" + integrity sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ== dependencies: moment "^2.29.4" @@ -7171,6 +7263,11 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + node-releases@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" @@ -7506,10 +7603,10 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.4.tgz#4723cadeac2ce7c9227de758e5ff9b14e075f283" - integrity sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ== +prettier@^3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" + integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== pretty-format@^29.0.0, pretty-format@^29.0.1: version "29.0.1" @@ -8271,24 +8368,24 @@ tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -terser-webpack-plugin@^5.3.7: - version "5.3.7" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz#ef760632d24991760f339fe9290deb936ad1ffc7" - integrity sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw== +terser-webpack-plugin@^5.3.10: + version "5.3.10" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" + integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== dependencies: - "@jridgewell/trace-mapping" "^0.3.17" + "@jridgewell/trace-mapping" "^0.3.20" jest-worker "^27.4.5" schema-utils "^3.1.1" serialize-javascript "^6.0.1" - terser "^5.16.5" + terser "^5.26.0" -terser@^5.16.5: - version "5.16.9" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.9.tgz#7a28cb178e330c484369886f2afd623d9847495f" - integrity sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg== +terser@^5.26.0: + version "5.27.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.27.0.tgz#70108689d9ab25fef61c4e93e808e9fd092bf20c" + integrity sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A== dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" commander "^2.20.0" source-map-support "~0.5.20" @@ -8633,6 +8730,14 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + update-browserslist-db@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824" @@ -8754,19 +8859,19 @@ webpack-sources@^3.2.3: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@5.89.0: - version "5.89.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.89.0.tgz#56b8bf9a34356e93a6625770006490bf3a7f32dc" - integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== +webpack@5.90.1: + version "5.90.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.1.tgz#62ab0c097d7cbe83d32523dbfbb645cdb7c3c01c" + integrity sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog== dependencies: "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.0" + "@types/estree" "^1.0.5" "@webassemblyjs/ast" "^1.11.5" "@webassemblyjs/wasm-edit" "^1.11.5" "@webassemblyjs/wasm-parser" "^1.11.5" acorn "^8.7.1" acorn-import-assertions "^1.9.0" - browserslist "^4.14.5" + browserslist "^4.21.10" chrome-trace-event "^1.0.2" enhanced-resolve "^5.15.0" es-module-lexer "^1.2.1" @@ -8780,7 +8885,7 @@ webpack@5.89.0: neo-async "^2.6.2" schema-utils "^3.2.0" tapable "^2.1.1" - terser-webpack-plugin "^5.3.7" + terser-webpack-plugin "^5.3.10" watchpack "^2.4.0" webpack-sources "^3.2.3"