diff --git a/apps/connection-manager/src/connections/connections.service.ts b/apps/connection-manager/src/connections/connections.service.ts index 4d969e794d2822d8c2e8bc288191ec5b654a763d..a5647cacab3606c881151ef2e0e10b39be552102 100644 --- a/apps/connection-manager/src/connections/connections.service.ts +++ b/apps/connection-manager/src/connections/connections.service.ts @@ -27,10 +27,10 @@ export class ConnectionsService { tenantId: string, ): Observable<EventDidcommConnectionsGetAll['data']> { return this.natsClient - .send<EventDidcommConnectionsGetAll, EventDidcommConnectionsGetAllInput>( - EventDidcommConnectionsGetAll.token, - { tenantId }, - ) + .send< + EventDidcommConnectionsGetAll, + EventDidcommConnectionsGetAllInput + >(EventDidcommConnectionsGetAll.token, { tenantId }) .pipe(map((result) => result.data)); } @@ -62,10 +62,10 @@ export class ConnectionsService { idOrDid: string, ): Observable<EventDidcommConnectionsBlock['data']> { return this.natsClient - .send<EventDidcommConnectionsBlock, EventDidcommConnectionsBlockInput>( - EventDidcommConnectionsBlock.token, - { tenantId, idOrDid }, - ) + .send< + EventDidcommConnectionsBlock, + EventDidcommConnectionsBlockInput + >(EventDidcommConnectionsBlock.token, { tenantId, idOrDid }) .pipe(map((result) => result.data)); } } diff --git a/apps/proof-manager/jest.config.js b/apps/proof-manager/jest.config.js index c4d3f93ca222a8ebd6c4dd8df807d80d05fbce68..ccdd468df2bf90570fb54087fa7dea267814c888 100644 --- a/apps/proof-manager/jest.config.js +++ b/apps/proof-manager/jest.config.js @@ -7,7 +7,7 @@ export default { moduleFileExtensions: ['js', 'ts'], testEnvironment: 'node', transform: { - '^.+\\.(ts|js)$': [ + '^.+\\.(js|ts)$': [ '@swc/jest', { ...swcConfig, @@ -31,10 +31,9 @@ export default { : ['text-summary', 'html'], coveragePathIgnorePatterns: [ '<rootDir>/node_modules/', - '<rootDir>/test/', '<rootDir>/coverage/', '<rootDir>/dist/', - '<rootDir>/**/test', + '__tests__', '@types', '.dto.(t|j)s', '.enum.ts', diff --git a/apps/proof-manager/package.json b/apps/proof-manager/package.json index 3c3b782c0899cc1d98dde99b7f33a83ae9265ba4..06dcc3021359e33fbd2dd8aee6b631da3ead7cbc 100644 --- a/apps/proof-manager/package.json +++ b/apps/proof-manager/package.json @@ -16,8 +16,7 @@ "prisma:generate": "prisma generate --schema=./src/prisma/schema.prisma", "prisma:migrate": "prisma migrate deploy --schema=./src/prisma/schema.prisma", "prisma:studio": "prisma studio", - "start": "nest start", - "start:dev": "nest start --watch --preserveWatchOutput", + "start": "nest start --watch --preserveWatchOutput", "test": "jest", "test:watch": "jest --watch", "test:cov": "jest --coverage", @@ -34,6 +33,7 @@ "@nestjs/swagger": "^7.1.16", "@ocm/shared": "workspace:*", "class-validator": "^0.14.0", + "class-transformer": "^0.5.1", "express": "^4.17.3", "joi": "^17.11.0", "nats": "^2.18.0", diff --git a/apps/proof-manager/src/application.ts b/apps/proof-manager/src/application.ts index a7e650c0538a84ca6c2b9de477f542ac7ec7ad6c..0c71d7c2760ab3dc9fd4f024aaef0eb5b6635f59 100644 --- a/apps/proof-manager/src/application.ts +++ b/apps/proof-manager/src/application.ts @@ -1,4 +1,5 @@ import type { ConfigType } from '@nestjs/config'; +import type { ClientProvider } from '@nestjs/microservices'; import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; @@ -11,6 +12,7 @@ import { httpConfig } from './config/http.config.js'; import { natsConfig } from './config/nats.config.js'; import { ssiConfig } from './config/ssi.config.js'; import { validationSchema } from './config/validation.js'; +import { ProofsModule } from './proofs/proofs.module.js'; @Module({ imports: [ @@ -32,12 +34,21 @@ import { validationSchema } from './config/validation.js'; { name: NATS_CLIENT, inject: [natsConfig.KEY], - useFactory: (config: ConfigType<typeof natsConfig>) => ({ - transport: Transport.NATS, - options: { - url: config.url as string, - }, - }), + useFactory: (config: ConfigType<typeof natsConfig>) => { + const provider: Required<ClientProvider> = { + transport: Transport.NATS, + options: { + servers: config.url as string, + }, + }; + + if ('user' in config && 'password' in config) { + provider.options.user = config.user as string; + provider.options.pass = config.password as string; + } + + return provider; + }, }, ], }), @@ -57,7 +68,12 @@ import { validationSchema } from './config/validation.js'; }, }), - RouterModule.register([{ module: HealthModule, path: '/health' }]), + ProofsModule, + + RouterModule.register([ + { module: HealthModule, path: '/health' }, + { module: ProofsModule, path: '/proofs' }, + ]), ], }) export class Application {} diff --git a/apps/proof-manager/src/config/http.config.ts b/apps/proof-manager/src/config/http.config.ts index 0bb4d4c2df3e791f741f3aac483b6fb3f39a5ba0..fc63fd9ddbe4bfb6b1d8225d636d3dee1f284502 100644 --- a/apps/proof-manager/src/config/http.config.ts +++ b/apps/proof-manager/src/config/http.config.ts @@ -1,6 +1,6 @@ import { registerAs } from '@nestjs/config'; export const httpConfig = registerAs('http', () => ({ - host: process.env.HOST, - port: Number(process.env.PORT), + host: process.env.HOST || '0.0.0.0', + port: Number(process.env.PORT) || 3000, })); diff --git a/apps/proof-manager/src/config/nats.config.ts b/apps/proof-manager/src/config/nats.config.ts index 023e92372adf6be27904aeccd041d125fbb804b9..194053c2e2e44070e34b8547b4a15819d02d9b75 100644 --- a/apps/proof-manager/src/config/nats.config.ts +++ b/apps/proof-manager/src/config/nats.config.ts @@ -1,6 +1,8 @@ import { registerAs } from '@nestjs/config'; export const natsConfig = registerAs('nats', () => ({ - url: process.env.NATS_URL, - monitoringUrl: process.env.NATS_MONITORING_URL, + url: process.env.NATS_URL || 'nats://localhost:4222', + user: process.env.NATS_USER, + password: process.env.NATS_PASSWORD, + monitoringUrl: process.env.NATS_MONITORING_URL || 'http://localhost:8222', })); diff --git a/apps/proof-manager/src/config/ssi.config.ts b/apps/proof-manager/src/config/ssi.config.ts index 1779919f156e28d94440919221b2c95acda26a10..408bf279a73c30ed0ff8a277630ea4f7b8882eb8 100644 --- a/apps/proof-manager/src/config/ssi.config.ts +++ b/apps/proof-manager/src/config/ssi.config.ts @@ -1,5 +1,5 @@ import { registerAs } from '@nestjs/config'; export const ssiConfig = registerAs('ssi', () => ({ - agentUrl: process.env.SSI_AGENT_URL, + agentUrl: process.env.SSI_AGENT_URL || 'http://localhost:3010', })); diff --git a/apps/proof-manager/src/config/validation.ts b/apps/proof-manager/src/config/validation.ts index a7fe2f83c768b702b76f629b790507af6344ff7c..fef0d7c849531cb8434370983bcf3ee208905ade 100644 --- a/apps/proof-manager/src/config/validation.ts +++ b/apps/proof-manager/src/config/validation.ts @@ -1,11 +1,13 @@ import Joi from 'joi'; export const validationSchema = Joi.object({ - HTTP_HOST: Joi.string().default('0.0.0.0'), - HTTP_PORT: Joi.number().default(3000), + HTTP_HOST: Joi.string(), + HTTP_PORT: Joi.number(), - NATS_URL: Joi.string().uri().default('nats://localhost:4222'), - NATS_MONITORING_URL: Joi.string().uri().default('http://localhost:8222'), + NATS_URL: Joi.string().uri(), + NATS_USER: Joi.string().optional(), + NATS_PASSWORD: Joi.string().optional(), + NATS_MONITORING_URL: Joi.string().uri(), - SSI_AGENT_URL: Joi.string().default('http://localhost:3010'), + SSI_AGENT_URL: Joi.string().uri(), }); diff --git a/apps/proof-manager/src/main.ts b/apps/proof-manager/src/main.ts index 84f089d36f46a2773a6675d0c0599c193c87dd03..fe4aad77a459145c7ef815eca71bfe48154f47c7 100644 --- a/apps/proof-manager/src/main.ts +++ b/apps/proof-manager/src/main.ts @@ -1,24 +1,36 @@ /* c8 ignore start */ -import type { MicroserviceOptions } from '@nestjs/microservices'; +import type { ConfigType } from '@nestjs/config'; +import type { MicroserviceOptions, NatsOptions } from '@nestjs/microservices'; -import { VersioningType } from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; +import { Logger, VersioningType } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; import { Transport } from '@nestjs/microservices'; import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; import { Application } from './application.js'; +import { httpConfig } from './config/http.config.js'; +import { natsConfig } from './config/nats.config.js'; const app = await NestFactory.create(Application); -const configService = app.get(ConfigService); app.enableCors(); -app.connectMicroservice<MicroserviceOptions>({ +const { url, user, password } = app.get(natsConfig.KEY) as ConfigType< + typeof natsConfig +>; + +const microserviceOptions: Required<NatsOptions> = { transport: Transport.NATS, options: { - servers: [configService.get('nats').url], + servers: [url], }, -}); +}; + +if (user && password) { + microserviceOptions.options.user = user; + microserviceOptions.options.pass = password; +} + +app.connectMicroservice<MicroserviceOptions>(microserviceOptions); app.enableVersioning({ defaultVersion: ['1'], @@ -36,5 +48,8 @@ const document = SwaggerModule.createDocument(app, swaggerConfig); SwaggerModule.setup('/swagger', app, document); await app.startAllMicroservices(); -await app.listen(configService.get('PORT') || 3000); +const { host, port } = app.get(httpConfig.KEY) as ConfigType<typeof httpConfig>; +await app.listen(port as number, host as string); + +Logger.log(`Application is running on: ${await app.getUrl()}`); /* c8 ignore stop */ diff --git a/apps/proof-manager/src/proofs/__tests__/proofs.controller.spec.ts b/apps/proof-manager/src/proofs/__tests__/proofs.controller.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..93b991fe9b678fd3ef04ecb4a333739b1fc868a8 --- /dev/null +++ b/apps/proof-manager/src/proofs/__tests__/proofs.controller.spec.ts @@ -0,0 +1,158 @@ +import type { TestingModule } from '@nestjs/testing'; +import type { + EventAnonCredsProofsDeleteById, + EventAnonCredsProofsGetAll, + EventAnonCredsProofsGetById, + EventDidcommAnonCredsProofsRequest, +} from '@ocm/shared'; + +import { Test } from '@nestjs/testing'; +import { Subject, of, takeUntil } from 'rxjs'; + +import { NATS_CLIENT } from '../../common/constants.js'; +import { ProofsController } from '../proofs.controller.js'; +import { ProofsService } from '../proofs.service.js'; + +describe('ProofsController', () => { + const natsClientMock = {}; + + let controller: ProofsController; + let service: ProofsService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [ProofsController], + providers: [ + { provide: NATS_CLIENT, useValue: natsClientMock }, + ProofsService, + ], + }).compile(); + + controller = module.get<ProofsController>(ProofsController); + service = module.get<ProofsService>(ProofsService); + }); + + describe('find', () => { + it('should return a list of schemas', (done) => { + const unsubscribe$ = new Subject<void>(); + const tenantId = 'exampleTenantId'; + const expectedResult: EventAnonCredsProofsGetAll['data'] = []; + + jest.spyOn(service, 'find').mockReturnValue(of(expectedResult)); + + controller + .find({ tenantId }) + .pipe(takeUntil(unsubscribe$)) + .subscribe((result) => { + expect(result).toStrictEqual(expectedResult); + + unsubscribe$.next(); + unsubscribe$.complete(); + + done(); + }); + }); + }); + + describe('getById', () => { + it('should return a schema by id', (done) => { + const unsubscribe$ = new Subject<void>(); + const proofRecordId = 'exampleProofRecordId'; + const tenantId = 'exampleTenantId'; + const expectedResult = {} as NonNullable< + EventAnonCredsProofsGetById['data'] + >; + + jest.spyOn(service, 'getById').mockReturnValue(of(expectedResult)); + + controller + .get({ proofRecordId }, { tenantId }) + .pipe(takeUntil(unsubscribe$)) + .subscribe((result) => { + expect(result).toStrictEqual(expectedResult); + + unsubscribe$.next(); + unsubscribe$.complete(); + + done(); + }); + }); + + it('should throw a NotFoundException if the service returned null', (done) => { + const unsubscribe$ = new Subject<void>(); + const proofRecordId = 'exampleProofRecordId'; + const tenantId = 'exampleTenantId'; + + jest.spyOn(service, 'getById').mockReturnValue(of(null)); + + controller + .get({ proofRecordId }, { tenantId }) + .pipe(takeUntil(unsubscribe$)) + .subscribe({ + error: (error) => { + expect(error.status).toBe(404); + expect(error.message).toBe( + `Presentation proof with id ${proofRecordId} not found`, + ); + + unsubscribe$.next(); + unsubscribe$.complete(); + + done(); + }, + }); + }); + }); + + describe('request', () => { + it('should return a proof record', (done) => { + const unsubscribe$ = new Subject<void>(); + const tenantId = 'exampleTenantId'; + const name = 'exampleName'; + const connectionId = 'exampleConnectionId'; + const requestedAttributes = {}; + const requestedPredicates = {}; + const expectedResult = {} as EventDidcommAnonCredsProofsRequest['data']; + + jest.spyOn(service, 'request').mockReturnValue(of(expectedResult)); + + controller + .request( + { tenantId }, + { name, connectionId, requestedAttributes, requestedPredicates }, + ) + .pipe(takeUntil(unsubscribe$)) + .subscribe((result) => { + expect(result).toStrictEqual(expectedResult); + + unsubscribe$.next(); + unsubscribe$.complete(); + + done(); + }); + }); + }); + + describe('delete', () => { + it('should return a proof record', (done) => { + const unsubscribe$ = new Subject<void>(); + const tenantId = 'exampleTenantId'; + const proofRecordId = 'exampleProofRecordId'; + const expectedResult = {} as EventAnonCredsProofsDeleteById['data']; + + jest.spyOn(service, 'delete').mockReturnValue(of(expectedResult)); + + controller + .delete({ proofRecordId }, { tenantId }) + .pipe(takeUntil(unsubscribe$)) + .subscribe((result) => { + expect(result).toStrictEqual(expectedResult); + + unsubscribe$.next(); + unsubscribe$.complete(); + + done(); + }); + }); + }); +}); diff --git a/apps/proof-manager/src/proofs/__tests__/proofs.module.spec.ts b/apps/proof-manager/src/proofs/__tests__/proofs.module.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..b6a205940793466f06a9d5c3516e28cd0a395af3 --- /dev/null +++ b/apps/proof-manager/src/proofs/__tests__/proofs.module.spec.ts @@ -0,0 +1,35 @@ +import { ClientsModule } from '@nestjs/microservices'; +import { Test } from '@nestjs/testing'; + +import { NATS_CLIENT } from '../../common/constants.js'; +import { ProofsController } from '../proofs.controller.js'; +import { ProofsModule } from '../proofs.module.js'; +import { ProofsService } from '../proofs.service.js'; + +describe('Proofs Module', () => { + let proofsController: ProofsController; + let proofsService: ProofsService; + + beforeEach(async () => { + const moduleRef = await Test.createTestingModule({ + imports: [ + ClientsModule.registerAsync({ + isGlobal: true, + clients: [{ name: NATS_CLIENT, useFactory: () => ({}) }], + }), + ProofsModule, + ], + }).compile(); + + proofsController = moduleRef.get<ProofsController>(ProofsController); + proofsService = moduleRef.get<ProofsService>(ProofsService); + }); + + it('should be defined', () => { + expect(proofsController).toBeDefined(); + expect(proofsController).toBeInstanceOf(ProofsController); + + expect(proofsService).toBeDefined(); + expect(proofsService).toBeInstanceOf(ProofsService); + }); +}); diff --git a/apps/proof-manager/src/proofs/__tests__/proofs.service.spec.ts b/apps/proof-manager/src/proofs/__tests__/proofs.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..d12e7c0d95395831fd750bca901cf1c62a04ff27 --- /dev/null +++ b/apps/proof-manager/src/proofs/__tests__/proofs.service.spec.ts @@ -0,0 +1,170 @@ +import type { TestingModule } from '@nestjs/testing'; + +import { Test } from '@nestjs/testing'; +import { + EventAnonCredsProofsDeleteById, + EventAnonCredsProofsGetAll, + EventAnonCredsProofsGetById, + EventDidcommAnonCredsProofsRequest, +} from '@ocm/shared'; +import { Subject, of, takeUntil } from 'rxjs'; + +import { NATS_CLIENT } from '../../common/constants.js'; +import { ProofsService } from '../proofs.service.js'; + +describe('ProofsService', () => { + let service: ProofsService; + const natsClientMock = { send: jest.fn() }; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + { provide: NATS_CLIENT, useValue: natsClientMock }, + ProofsService, + ], + }).compile(); + + service = module.get<ProofsService>(ProofsService); + + jest.resetAllMocks(); + }); + + describe('getAll', () => { + it('should return the data from NATS client', (done) => { + const unsubscribe$ = new Subject<void>(); + const tenantId = 'mocked tenantId'; + const expectedResult: EventAnonCredsProofsGetAll['data'] = []; + + natsClientMock.send.mockReturnValueOnce( + of(new EventAnonCredsProofsGetAll([], tenantId)), + ); + + service + .find(tenantId) + .pipe(takeUntil(unsubscribe$)) + .subscribe((result) => { + expect(natsClientMock.send).toHaveBeenCalledWith( + EventAnonCredsProofsGetAll.token, + { tenantId }, + ); + + expect(result).toStrictEqual(expectedResult); + + unsubscribe$.next(); + unsubscribe$.complete(); + + done(); + }); + }); + }); + + describe('getById', () => { + it('should return the data from NATS client', (done) => { + const unsubscribe$ = new Subject<void>(); + const tenantId = 'mocked tenantId'; + const proofRecordId = 'mocked id'; + const expectedResult = {} as EventAnonCredsProofsGetById['data']; + + natsClientMock.send.mockReturnValueOnce( + of(new EventAnonCredsProofsGetById(expectedResult, tenantId)), + ); + + service + .getById(tenantId, proofRecordId) + .pipe(takeUntil(unsubscribe$)) + .subscribe((result) => { + expect(natsClientMock.send).toHaveBeenCalledWith( + EventAnonCredsProofsGetById.token, + { tenantId, proofRecordId }, + ); + + expect(result).toStrictEqual(expectedResult); + + unsubscribe$.next(); + unsubscribe$.complete(); + + done(); + }); + }); + }); + + describe('request', () => { + it('should return the data from NATS client', (done) => { + const unsubscribe$ = new Subject<void>(); + const tenantId = 'mocked tenantId'; + const name = 'mocked name'; + const connectionId = 'mocked connectionId'; + const requestedAttributes = {}; + const requestedPredicates = {}; + const expectedResult = { + name, + connectionId, + requestedAttributes, + requestedPredicates, + } as unknown as EventDidcommAnonCredsProofsRequest['data']; + + natsClientMock.send.mockReturnValueOnce( + of(new EventDidcommAnonCredsProofsRequest(expectedResult, tenantId)), + ); + + service + .request( + tenantId, + name, + connectionId, + requestedAttributes, + requestedPredicates, + ) + .pipe(takeUntil(unsubscribe$)) + .subscribe((result) => { + expect(natsClientMock.send).toHaveBeenCalledWith( + EventDidcommAnonCredsProofsRequest.token, + { + name, + connectionId, + requestedAttributes, + requestedPredicates, + tenantId, + }, + ); + + expect(result).toStrictEqual(expectedResult); + + unsubscribe$.next(); + unsubscribe$.complete(); + + done(); + }); + }); + }); + + describe('delete', () => { + it('should return the data from NATS client', (done) => { + const unsubscribe$ = new Subject<void>(); + const tenantId = 'mocked tenantId'; + const proofRecordId = 'mocked id'; + const expectedResult = {} as EventAnonCredsProofsGetById['data']; + + natsClientMock.send.mockReturnValueOnce( + of(new EventAnonCredsProofsGetById(expectedResult, tenantId)), + ); + + service + .delete(tenantId, proofRecordId) + .pipe(takeUntil(unsubscribe$)) + .subscribe((result) => { + expect(natsClientMock.send).toHaveBeenCalledWith( + EventAnonCredsProofsDeleteById.token, + { tenantId, proofRecordId }, + ); + + expect(result).toStrictEqual(expectedResult); + + unsubscribe$.next(); + unsubscribe$.complete(); + + done(); + }); + }); + }); +}); diff --git a/apps/proof-manager/src/proofs/dto/get-by-id.dto.ts b/apps/proof-manager/src/proofs/dto/get-by-id.dto.ts new file mode 100644 index 0000000000000000000000000000000000000000..43d5b404dbaa3c36314e751493b59c52baa9e7bc --- /dev/null +++ b/apps/proof-manager/src/proofs/dto/get-by-id.dto.ts @@ -0,0 +1,7 @@ +import { IsNotEmpty, IsString } from 'class-validator'; + +export class GetByIdParams { + @IsString() + @IsNotEmpty() + public readonly proofRecordId: string; +} diff --git a/apps/proof-manager/src/proofs/dto/register.dto.ts b/apps/proof-manager/src/proofs/dto/register.dto.ts new file mode 100644 index 0000000000000000000000000000000000000000..3f9653c79f5d465bd35f655dc11542003b382bfc --- /dev/null +++ b/apps/proof-manager/src/proofs/dto/register.dto.ts @@ -0,0 +1,115 @@ +import { Type } from 'class-transformer'; +import { + IsArray, + IsEnum, + IsNotEmpty, + IsNumber, + IsObject, + IsOptional, + IsString, + ValidateNested, +} from 'class-validator'; + +export class RequestPayload { + @IsString() + @IsNotEmpty() + public readonly name: string; + + @IsString() + @IsNotEmpty() + public readonly connectionId: string; + + @IsObject() + @ValidateNested({ each: true }) + @Type(() => RequestedAttribute) + public readonly requestedAttributes: Record<string, RequestedAttribute>; + + @IsObject() + @ValidateNested({ each: true }) + @Type(() => RequestedPredicate) + public readonly requestedPredicates: Record<string, RequestedPredicate>; +} + +class RequestRestriction { + @IsString() + @IsNotEmpty() + @IsOptional() + public schema_id?: string; + + @IsString() + @IsNotEmpty() + @IsOptional() + public schema_issuer_id?: string; + + @IsString() + @IsNotEmpty() + @IsOptional() + public schema_name?: string; + + @IsString() + @IsNotEmpty() + @IsOptional() + public schema_version?: string; + + @IsString() + @IsNotEmpty() + @IsOptional() + public issuer_id?: string; + + @IsString() + @IsNotEmpty() + @IsOptional() + public cred_def_id?: string; + + @IsString() + @IsNotEmpty() + @IsOptional() + public rev_reg_id?: string; + + @IsString() + @IsNotEmpty() + @IsOptional() + public schema_issuer_did?: string; + + @IsString() + @IsNotEmpty() + @IsOptional() + public issuer_did?: string; + + [key: `attr::${string}::marker`]: '1' | '0'; + [key: `attr::${string}::value`]: string; +} + +class RequestedAttribute { + @IsArray() + @IsString({ each: true }) + @IsNotEmpty({ each: true }) + public names: string[]; + + @IsArray() + @IsOptional() + @ValidateNested({ each: true }) + @Type(() => RequestRestriction) + public restrictions?: RequestRestriction[]; +} + +const predicateType = ['>=', '>', '<=', '<'] as const; + +class RequestedPredicate { + @IsString() + @IsNotEmpty() + public name: string; + + @IsString() + @IsEnum(predicateType) + public predicateType: (typeof predicateType)[number]; + + @IsNumber() + public predicateValue: number; + + @IsArray() + @IsOptional() + @ValidateNested({ each: true }) + @Type(() => RequestRestriction) + public restrictions?: RequestRestriction[]; +} diff --git a/apps/proof-manager/src/proofs/proofs.controller.ts b/apps/proof-manager/src/proofs/proofs.controller.ts new file mode 100644 index 0000000000000000000000000000000000000000..c7602b79fe13b878a3320c50b893a21d8cb30a32 --- /dev/null +++ b/apps/proof-manager/src/proofs/proofs.controller.ts @@ -0,0 +1,492 @@ +import { + Body, + Controller, + Delete, + Get, + HttpCode, + HttpStatus, + NotFoundException, + Param, + Post, + Query, + UseInterceptors, + UsePipes, + ValidationPipe, +} from '@nestjs/common'; +import { ApiBody, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; +import { MultitenancyParams, ResponseFormatInterceptor } from '@ocm/shared'; +import { of, switchMap } from 'rxjs'; + +import { GetByIdParams } from './dto/get-by-id.dto.js'; +import { RequestPayload } from './dto/register.dto.js'; +import { ProofsService } from './proofs.service.js'; + +@Controller() +@UsePipes(new ValidationPipe({ transform: true, whitelist: true })) +@UseInterceptors(ResponseFormatInterceptor) +@ApiTags('Presentation Proofs') +export class ProofsController { + public constructor(private readonly service: ProofsService) {} + + @Get() + @ApiOperation({ + summary: 'Fetch a list of presentation proofs', + description: + 'This call provides a list of presentation proofs for a given tenant', + }) + @ApiResponse({ + status: HttpStatus.OK, + description: 'Presentation proofs fetched successfully', + content: { + 'application/json': { + schema: {}, + examples: { + 'Presentation proofs fetched successfully': { + value: { + statusCode: 200, + message: 'Presentation proofs fetched successfully', + data: [], + }, + }, + }, + }, + }, + }) + @ApiResponse({ + status: HttpStatus.NOT_FOUND, + description: 'Tenant not found', + content: { + 'application/json': { + schema: {}, + examples: { + 'Tenant not found': { + value: { + statusCode: 404, + message: 'Tenant not found', + data: null, + }, + }, + }, + }, + }, + }) + @ApiResponse({ + status: HttpStatus.INTERNAL_SERVER_ERROR, + description: 'Internal server error', + content: { + 'application/json': { + schema: {}, + examples: { + 'Internal server error': { + value: { + statusCode: 500, + message: 'Internal server error', + data: null, + }, + }, + }, + }, + }, + }) + public find( + @Query() { tenantId }: MultitenancyParams, + ): ReturnType<ProofsService['find']> { + return this.service.find(tenantId); + } + + @Get(':id') + @ApiOperation({ + summary: 'Fetch a presentation proof by id', + description: + 'This call provides a presentation proof for a given tenant and id', + }) + @ApiResponse({ + status: HttpStatus.OK, + description: 'Presentation proof fetched successfully', + content: { + 'application/json': { + schema: {}, + examples: { + 'Presentation proof fetched successfully': { + value: { + statusCode: 200, + message: 'Presentation proof fetched successfully', + data: {}, + }, + }, + }, + }, + }, + }) + @ApiResponse({ + status: HttpStatus.NOT_FOUND, + description: 'Tenant not found', + content: { + 'application/json': { + schema: {}, + examples: { + 'Tenant not found': { + value: { + statusCode: 404, + message: 'Tenant not found', + data: null, + }, + }, + }, + }, + }, + }) + @ApiResponse({ + status: HttpStatus.BAD_REQUEST, + description: 'Invalid presentation proof id', + content: { + 'application/json': { + schema: {}, + examples: { + 'Invalid presentation proof id': { + value: { + statusCode: 400, + message: 'Invalid presentation proof id', + data: null, + }, + }, + }, + }, + }, + }) + @ApiResponse({ + status: HttpStatus.NOT_FOUND, + description: 'Presentation proof not found', + content: { + 'application/json': { + schema: {}, + examples: { + 'Presentation proof not found': { + value: { + statusCode: 404, + message: 'Presentation proof not found', + data: null, + }, + }, + }, + }, + }, + }) + @ApiResponse({ + status: HttpStatus.INTERNAL_SERVER_ERROR, + description: 'Internal server error', + content: { + 'application/json': { + schema: {}, + examples: { + 'Internal server error': { + value: { + statusCode: 500, + message: 'Internal server error', + data: null, + }, + }, + }, + }, + }, + }) + public get( + @Param() { proofRecordId }: GetByIdParams, + @Query() { tenantId }: MultitenancyParams, + ): ReturnType<ProofsService['getById']> { + return this.service.getById(tenantId, proofRecordId).pipe( + switchMap((proofRecord) => { + if (!proofRecord) { + throw new NotFoundException( + `Presentation proof with id ${proofRecordId} not found`, + ); + } + + return of(proofRecord); + }), + ); + } + + @Post() + @ApiOperation({ + summary: 'Request a presentation proof', + description: 'This call requests a presentation proof for a given tenant', + }) + @ApiResponse({ + status: HttpStatus.CREATED, + description: 'Presentation proof requested successfully', + content: { + 'application/json': { + schema: {}, + examples: { + 'Presentation proof requested successfully': { + value: { + statusCode: 201, + message: 'Presentation proof requested successfully', + data: {}, + }, + }, + }, + }, + }, + }) + @ApiResponse({ + status: HttpStatus.NOT_FOUND, + description: 'Tenant not found', + content: { + 'application/json': { + schema: {}, + examples: { + 'Tenant not found': { + value: { + statusCode: 404, + message: 'Tenant not found', + data: null, + }, + }, + }, + }, + }, + }) + @ApiResponse({ + status: HttpStatus.BAD_REQUEST, + description: 'Invalid request payload', + content: { + 'application/json': { + schema: {}, + examples: { + 'Invalid request payload': { + value: { + statusCode: 400, + message: 'Invalid request payload', + data: null, + }, + }, + }, + }, + }, + }) + @ApiResponse({ + status: HttpStatus.INTERNAL_SERVER_ERROR, + description: 'Internal server error', + content: { + 'application/json': { + schema: {}, + examples: { + 'Internal server error': { + value: { + statusCode: 500, + message: 'Internal server error', + data: null, + }, + }, + }, + }, + }, + }) + @ApiBody({ + schema: { + type: 'object', + properties: { + name: { + type: 'string', + example: 'Proof of Vaccination', + }, + connectionId: { + type: 'string', + example: '1234567890', + }, + requestedAttributes: { + type: 'object', + additionalProperties: { + type: 'object', + properties: { + names: { + type: 'array', + items: { + type: 'string', + }, + }, + restrictions: { + type: 'array', + items: { + type: 'object', + properties: { + schema_id: { type: 'string' }, + schema_issuer_id: { type: 'string' }, + schema_name: { type: 'string' }, + schema_version: { type: 'string' }, + issuer_id: { type: 'string' }, + cred_def_id: { type: 'string' }, + rev_reg_id: { type: 'string' }, + schema_issuer_did: { type: 'string' }, + issuer_did: { type: 'string' }, + }, + patternProperties: { + '^attr::.*?::marker$': { enum: ['1', '0'] }, + '^attr::.*?::value$': { type: 'string' }, + }, + additionalProperties: { + type: 'string', + anyOf: [{ enum: ['1', '0'] }, { type: 'string' }], + }, + }, + }, + }, + required: ['names'], + }, + }, + requestedPredicates: { + type: 'object', + properties: { + name: { type: 'string' }, + predicateType: { enum: ['>=', '>', '<=', '<'] }, + predicateValue: { type: 'number' }, + restrictions: { + type: 'array', + items: { + type: 'object', + properties: { + schema_id: { type: 'string' }, + schema_issuer_id: { type: 'string' }, + schema_name: { type: 'string' }, + schema_version: { type: 'string' }, + issuer_id: { type: 'string' }, + cred_def_id: { type: 'string' }, + rev_reg_id: { type: 'string' }, + schema_issuer_did: { type: 'string' }, + issuer_did: { type: 'string' }, + }, + patternProperties: { + '^attr::.*?::marker$': { enum: ['1', '0'] }, + '^attr::.*?::value$': { type: 'string' }, + }, + additionalProperties: { + type: 'string', + anyOf: [{ enum: ['1', '0'] }, { type: 'string' }], + }, + }, + }, + }, + required: ['name', 'predicateType', 'predicateValue'], + }, + }, + required: [ + 'name', + 'connectionId', + 'requestedAttributes', + 'requestedPredicates', + ], + }, + }) + public request( + @Query() { tenantId }: MultitenancyParams, + @Body() + { + name, + connectionId, + requestedAttributes, + requestedPredicates, + }: RequestPayload, + ): ReturnType<ProofsService['request']> { + return this.service.request( + tenantId, + name, + connectionId, + requestedAttributes, + requestedPredicates, + ); + } + + @Delete(':id') + @HttpCode(HttpStatus.OK) + @ApiOperation({ + summary: 'Delete a presentation proof', + description: 'This call deletes a presentation proof for a given tenant', + }) + @ApiResponse({ + status: HttpStatus.OK, + description: 'Presentation proof deleted successfully', + content: { + 'application/json': { + schema: {}, + examples: { + 'Presentation proof deleted successfully': { + value: { + statusCode: 200, + message: 'Presentation proof deleted successfully', + data: null, + }, + }, + }, + }, + }, + }) + @ApiResponse({ + status: HttpStatus.NOT_FOUND, + description: 'Tenant not found', + content: { + 'application/json': { + schema: {}, + examples: { + 'Tenant not found': { + value: { + statusCode: 404, + message: 'Tenant not found', + data: null, + }, + }, + 'Presentation proof not found': { + value: { + statusCode: 404, + message: 'Presentation proof not found', + data: null, + }, + }, + }, + }, + }, + }) + @ApiResponse({ + status: HttpStatus.BAD_REQUEST, + description: 'Invalid presentation proof id', + content: { + 'application/json': { + schema: {}, + examples: { + 'Invalid presentation proof id': { + value: { + statusCode: 400, + message: 'Invalid presentation proof id', + data: null, + }, + }, + }, + }, + }, + }) + @ApiResponse({ + status: HttpStatus.INTERNAL_SERVER_ERROR, + description: 'Internal server error', + content: { + 'application/json': { + schema: {}, + examples: { + 'Internal server error': { + value: { + statusCode: 500, + message: 'Internal server error', + data: null, + }, + }, + }, + }, + }, + }) + public delete( + @Param() { proofRecordId }: GetByIdParams, + @Query() { tenantId }: MultitenancyParams, + ): ReturnType<ProofsService['delete']> { + return this.service.delete(tenantId, proofRecordId); + } +} diff --git a/apps/proof-manager/src/proofs/proofs.module.ts b/apps/proof-manager/src/proofs/proofs.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..29690bb1edd5acc25099b74b0aa9cea279ea6993 --- /dev/null +++ b/apps/proof-manager/src/proofs/proofs.module.ts @@ -0,0 +1,10 @@ +import { Module } from '@nestjs/common'; + +import { ProofsController } from './proofs.controller.js'; +import { ProofsService } from './proofs.service.js'; + +@Module({ + providers: [ProofsService], + controllers: [ProofsController], +}) +export class ProofsModule {} diff --git a/apps/proof-manager/src/proofs/proofs.service.ts b/apps/proof-manager/src/proofs/proofs.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..8e69544258997a70da00d14b484c051e37ace0e0 --- /dev/null +++ b/apps/proof-manager/src/proofs/proofs.service.ts @@ -0,0 +1,84 @@ +import type { + EventAnonCredsProofsDeleteByIdInput, + EventAnonCredsProofsGetAllInput, + EventAnonCredsProofsGetByIdInput, + EventDidcommAnonCredsProofsRequestInput, +} from '@ocm/shared'; + +import { Inject, Injectable } from '@nestjs/common'; +import { ClientProxy } from '@nestjs/microservices'; +import { + EventAnonCredsProofsDeleteById, + EventAnonCredsProofsGetById, + EventDidcommAnonCredsProofsRequest, + EventAnonCredsProofsGetAll, +} from '@ocm/shared'; +import { map, type Observable } from 'rxjs'; + +import { NATS_CLIENT } from '../common/constants.js'; + +@Injectable() +export class ProofsService { + public constructor( + @Inject(NATS_CLIENT) private readonly natsClient: ClientProxy, + ) {} + + public find( + tenantId: string, + ): Observable<EventAnonCredsProofsGetAll['data']> { + return this.natsClient + .send< + EventAnonCredsProofsGetAll, + EventAnonCredsProofsGetAllInput + >(EventAnonCredsProofsGetAll.token, { tenantId }) + .pipe(map((result) => result.data)); + } + + public getById( + tenantId: string, + proofRecordId: string, + ): Observable<EventAnonCredsProofsGetById['data']> { + return this.natsClient + .send<EventAnonCredsProofsGetById, EventAnonCredsProofsGetByIdInput>( + EventAnonCredsProofsGetById.token, + { + tenantId, + proofRecordId, + }, + ) + .pipe(map((results) => results.data)); + } + + public request( + tenantId: string, + name: EventDidcommAnonCredsProofsRequestInput['name'], + connectionId: EventDidcommAnonCredsProofsRequestInput['connectionId'], + requestedAttributes: EventDidcommAnonCredsProofsRequestInput['requestedAttributes'], + requestedPredicates: EventDidcommAnonCredsProofsRequestInput['requestedPredicates'], + ): Observable<EventDidcommAnonCredsProofsRequest['data']> { + return this.natsClient + .send< + EventDidcommAnonCredsProofsRequest, + EventDidcommAnonCredsProofsRequestInput + >(EventDidcommAnonCredsProofsRequest.token, { + tenantId, + name, + connectionId, + requestedAttributes, + requestedPredicates, + }) + .pipe(map((results) => results.data)); + } + + public delete( + tenantId: string, + proofRecordId: string, + ): Observable<EventAnonCredsProofsDeleteById['data']> { + return this.natsClient + .send< + EventAnonCredsProofsDeleteById, + EventAnonCredsProofsDeleteByIdInput + >(EventAnonCredsProofsDeleteById.token, { tenantId, proofRecordId }) + .pipe(map((results) => results.data)); + } +} diff --git a/apps/schema-manager/src/schemas/schemas.service.ts b/apps/schema-manager/src/schemas/schemas.service.ts index b6fd0cbd9f85ee084e437ef80f845012ac125dc2..eefa949877eb028731de4779d62249f264b144bd 100644 --- a/apps/schema-manager/src/schemas/schemas.service.ts +++ b/apps/schema-manager/src/schemas/schemas.service.ts @@ -25,10 +25,10 @@ export class SchemasService { tenantId: string, ): Observable<EventAnonCredsSchemasGetAll['data']> { return this.natsClient - .send<EventAnonCredsSchemasGetAll, EventAnonCredsSchemasGetAllInput>( - EventAnonCredsSchemasGetAll.token, - { tenantId }, - ) + .send< + EventAnonCredsSchemasGetAll, + EventAnonCredsSchemasGetAllInput + >(EventAnonCredsSchemasGetAll.token, { tenantId }) .pipe(map((result) => result.data)); } @@ -37,10 +37,10 @@ export class SchemasService { schemaId: EventAnonCredsSchemasGetByIdInput['schemaId'], ): Observable<EventAnonCredsSchemasGetById['data']> { return this.natsClient - .send<EventAnonCredsSchemasGetById, EventAnonCredsSchemasGetByIdInput>( - EventAnonCredsSchemasGetById.token, - { tenantId, schemaId }, - ) + .send< + EventAnonCredsSchemasGetById, + EventAnonCredsSchemasGetByIdInput + >(EventAnonCredsSchemasGetById.token, { tenantId, schemaId }) .pipe(map((result) => result.data)); } @@ -49,10 +49,10 @@ export class SchemasService { payload: Omit<EventAnonCredsSchemasRegisterInput, 'tenantId'>, ): Observable<EventAnonCredsSchemasRegister['data']> { return this.natsClient - .send<EventAnonCredsSchemasRegister, EventAnonCredsSchemasRegisterInput>( - EventAnonCredsSchemasRegister.token, - { ...payload, tenantId }, - ) + .send< + EventAnonCredsSchemasRegister, + EventAnonCredsSchemasRegisterInput + >(EventAnonCredsSchemasRegister.token, { ...payload, tenantId }) .pipe(map((result) => result.data)); } } diff --git a/apps/shared/package.json b/apps/shared/package.json index c5263c94b32bf4def6dcb2d46312a1c15db38d05..ba667e2d97078ea183e64b1512e2512a4ed3f4f6 100644 --- a/apps/shared/package.json +++ b/apps/shared/package.json @@ -29,6 +29,11 @@ "@nestjs/swagger": "^7.1.17", "@nestjs/terminus": "^10.2.0", "axios": "^1.6.2", + "joi": "^17.11.0", + "class-transformer": "^0.5.1", + "class-validator": "^0.14.0", + "nats": "^2.18.0", + "rxjs": "^7.8.1", "winston": "^3.11.0" }, "peerDependencies": { diff --git a/apps/ssi-abstraction/src/config/config.ts b/apps/ssi-abstraction/src/config/config.ts index c792418b8219dee1145dbf3b9903e6b2c4172f42..58981721a297d600410599788a0674962480822e 100644 --- a/apps/ssi-abstraction/src/config/config.ts +++ b/apps/ssi-abstraction/src/config/config.ts @@ -7,6 +7,8 @@ export interface AppConfig { nats: { url: string; + user?: string; + password?: string; }; agent: { @@ -30,6 +32,8 @@ export const config = (): AppConfig => ({ nats: { url: process.env.NATS_URL || '', + user: process.env.NATS_USER || '', + password: process.env.NATS_PASSWORD || '', }, agent: { diff --git a/apps/ssi-abstraction/src/main.ts b/apps/ssi-abstraction/src/main.ts index f2d3a7371dde4d9fd10330dde08ae5bb0da89b7f..b7c14c1c234ed7abcf22cbaa648151d5e8aac4fa 100644 --- a/apps/ssi-abstraction/src/main.ts +++ b/apps/ssi-abstraction/src/main.ts @@ -1,4 +1,4 @@ -import type { MicroserviceOptions } from '@nestjs/microservices'; +import type { MicroserviceOptions, NatsOptions } from '@nestjs/microservices'; import { NestFactory } from '@nestjs/core'; import { Transport } from '@nestjs/microservices'; @@ -6,14 +6,24 @@ import { Transport } from '@nestjs/microservices'; import { AppModule } from './app.module.js'; import { config } from './config/config.js'; +const { url, user, password } = config().nats; +const options: Required<NatsOptions> = { + transport: Transport.NATS, + options: {}, +}; + +if (url) { + options.options.servers = [url]; +} + +if (user && password) { + options.options.user = user; + options.options.pass = password; +} + const app = await NestFactory.createMicroservice<MicroserviceOptions>( AppModule, - { - transport: Transport.NATS, - options: { - servers: [config().nats.url], - }, - }, + options, ); await app.listen(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 65d71ff9e2680bf6395ce6fe9ff72f2f8ff8c109..478e52ebda79d6bf60e5a0f00b34e5d0c9ef46d6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,151 +48,6 @@ importers: specifier: ^3.1.0 version: 3.2.4 - apps/attestation-manager: - dependencies: - '@elastic/ecs-winston-format': - specifier: ^1.5.0 - version: 1.5.2 - '@nestjs/axios': - specifier: ^3.0.1 - version: 3.0.1(@nestjs/common@10.3.0)(axios@1.6.5)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/common': - specifier: ^10.3.0 - version: 10.3.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/config': - specifier: ^3.1.1 - version: 3.1.1(@nestjs/common@10.3.0)(reflect-metadata@0.1.14) - '@nestjs/core': - specifier: ^10.3.0 - version: 10.3.0(@nestjs/common@10.3.0)(@nestjs/microservices@10.3.0)(@nestjs/platform-express@10.3.0)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/mapped-types': - specifier: ^2.0.3 - version: 2.0.4(@nestjs/common@10.3.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14) - '@nestjs/microservices': - specifier: ^10.3.0 - version: 10.3.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(nats@2.19.0)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/platform-express': - specifier: ^10.3.0 - version: 10.3.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0) - '@nestjs/swagger': - specifier: ^7.2.0 - version: 7.2.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14) - '@nestjs/terminus': - specifier: ^10.2.0 - version: 10.2.0(@nestjs/axios@3.0.1)(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(@nestjs/microservices@10.3.0)(@prisma/client@5.8.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@prisma/client': - specifier: ^5.6.0 - version: 5.8.1(prisma@5.8.1) - class-transformer: - specifier: ^0.5.1 - version: 0.5.1 - class-validator: - specifier: ^0.14.0 - version: 0.14.1 - express: - specifier: ^4.17.3 - version: 4.18.2 - joi: - specifier: ^17.11.0 - version: 17.11.1 - jsonwebtoken: - specifier: ^9.0.2 - version: 9.0.2 - jwks-rsa: - specifier: ^3.1.0 - version: 3.1.0 - liquibase: - specifier: ^4.4.0 - version: 4.4.0 - moment: - specifier: ^2.29.4 - version: 2.30.1 - nats: - specifier: ^2.18.0 - version: 2.19.0 - pg: - specifier: ^8.11.3 - version: 8.11.3 - reflect-metadata: - specifier: ^0.1.13 - version: 0.1.14 - rxjs: - specifier: ^7.8.1 - version: 7.8.1 - swagger-ui-express: - specifier: ^5.0.0 - version: 5.0.0(express@4.18.2) - winston: - specifier: ^3.11.0 - version: 3.11.0 - winston-elasticsearch: - specifier: ^0.17.4 - version: 0.17.4 - devDependencies: - '@nestjs/cli': - specifier: ^10.3.0 - version: 10.3.0(@swc/cli@0.1.63)(@swc/core@1.3.103) - '@nestjs/schematics': - specifier: ^10.1.0 - version: 10.1.0(chokidar@3.5.3)(typescript@5.3.3) - '@nestjs/testing': - specifier: ^10.3.0 - version: 10.3.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(@nestjs/microservices@10.3.0)(@nestjs/platform-express@10.3.0) - '@swc/cli': - specifier: ^0.1.62 - version: 0.1.63(@swc/core@1.3.103) - '@swc/core': - specifier: ^1.3.96 - version: 1.3.103 - '@swc/jest': - specifier: ^0.2.29 - version: 0.2.29(@swc/core@1.3.103) - '@types/express': - specifier: ^4.17.21 - version: 4.17.21 - '@types/jest': - specifier: ^29.5.8 - version: 29.5.11 - '@types/jsonwebtoken': - specifier: ^9.0.5 - version: 9.0.5 - '@types/node': - specifier: ^20.9.0 - version: 20.11.5 - '@types/supertest': - specifier: ^2.0.16 - version: 2.0.16 - dotenv-cli: - specifier: ^7.3.0 - version: 7.3.0 - eslint: - specifier: ^8.53.0 - version: 8.56.0 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@20.11.5)(ts-node@10.9.2) - node-mocks-http: - specifier: ^1.13.0 - version: 1.14.1 - prisma: - specifier: ^5.6.0 - version: 5.8.1 - rimraf: - specifier: ^5.0.5 - version: 5.0.5 - source-map-support: - specifier: ^0.5.21 - version: 0.5.21 - supertest: - specifier: ^6.3.3 - version: 6.3.4 - ts-node: - specifier: ^10.9.1 - version: 10.9.2(@swc/core@1.3.103)(@types/node@20.11.5)(typescript@5.3.3) - typescript: - specifier: ^5.2.2 - version: 5.3.3 - apps/connection-manager: dependencies: '@nestjs/common': @@ -401,6 +256,9 @@ importers: '@ocm/shared': specifier: workspace:* version: link:../shared + class-transformer: + specifier: ^0.5.1 + version: 0.5.1 class-validator: specifier: ^0.14.0 version: 0.14.1 @@ -591,21 +449,27 @@ importers: version: 7.2.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14) '@nestjs/terminus': specifier: ^10.2.0 - version: 10.2.0(@nestjs/axios@3.0.1)(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(@nestjs/microservices@10.3.0)(@prisma/client@5.8.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + version: 10.2.0(@nestjs/axios@3.0.1)(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(@nestjs/microservices@10.3.0)(reflect-metadata@0.1.14)(rxjs@7.8.1) axios: specifier: ^1.6.2 version: 1.6.5 class-transformer: - specifier: '*' + specifier: ^0.5.1 version: 0.5.1 class-validator: - specifier: '*' + specifier: ^0.14.0 version: 0.14.1 + joi: + specifier: ^17.11.0 + version: 17.11.1 + nats: + specifier: ^2.18.0 + version: 2.19.0 reflect-metadata: specifier: '*' version: 0.1.14 rxjs: - specifier: '*' + specifier: ^7.8.1 version: 7.8.1 winston: specifier: ^3.11.0 @@ -634,7 +498,7 @@ importers: version: 29.1.1(@babel/core@7.23.7)(jest@29.7.0)(typescript@5.3.3) ts-node: specifier: ^10.9.1 - version: 10.9.2(@swc/core@1.3.103)(@types/node@20.11.5)(typescript@5.3.3) + version: 10.9.2(@types/node@20.11.5)(typescript@5.3.3) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 @@ -694,7 +558,7 @@ importers: version: 10.3.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(nats@2.19.0)(reflect-metadata@0.1.14)(rxjs@7.8.1) '@nestjs/terminus': specifier: ^10.2.0 - version: 10.2.0(@nestjs/axios@3.0.1)(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(@nestjs/microservices@10.3.0)(@prisma/client@5.8.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + version: 10.2.0(@nestjs/axios@3.0.1)(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(@nestjs/microservices@10.3.0)(reflect-metadata@0.1.14)(rxjs@7.8.1) '@ocm/shared': specifier: workspace:* version: link:../shared @@ -770,7 +634,7 @@ importers: version: 29.1.1(@babel/core@7.23.7)(jest@29.7.0)(typescript@5.3.3) ts-node: specifier: ^10.0.0 - version: 10.9.2(@swc/core@1.3.103)(@types/node@20.11.5)(typescript@5.3.3) + version: 10.9.2(@types/node@20.11.5)(typescript@5.3.3) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 @@ -2811,15 +2675,6 @@ packages: engines: {node: '>=10'} dev: false - /@elastic/ecs-pino-format@1.5.0: - resolution: {integrity: sha512-7MMVmT50ucEl7no8mUgCIl+pffBVNRl36uZi0vmalWa2xPWISBxM9k9WSP/WTgOkmGj9G35e5g3UfCS1zxshBg==} - engines: {node: '>=10'} - requiresBuild: true - dependencies: - '@elastic/ecs-helpers': 2.1.1 - dev: false - optional: true - /@elastic/ecs-winston-format@1.5.2: resolution: {integrity: sha512-hVvGTWLTYbReVV4JoBaaFKheh268bQYrz8JnN+qo5Qy43IgLWT31L/Wduoh+V4xk8kgyhUJPgmKww9HzAQmWdw==} engines: {node: '>=10'} @@ -2829,30 +2684,6 @@ packages: triple-beam: 1.4.1 dev: false - /@elastic/elasticsearch@8.11.0: - resolution: {integrity: sha512-1UEQFdGLuKdROLJnMTjegasRM3X9INm/PVADoIVgdTfuv6DeJ17UMuNwYSkCrLrC0trLjjGV4YganpbJJX/VLg==} - engines: {node: '>=18'} - dependencies: - '@elastic/transport': 8.4.0 - tslib: 2.6.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@elastic/transport@8.4.0: - resolution: {integrity: sha512-Yb3fDa7yGD0ca3uMbL64M3vM1cE5h5uHmBcTjkdB4VpCasRNKSd09iDpwqX8zX1tbBtxcaKYLceKthWvPeIxTw==} - engines: {node: '>=16'} - dependencies: - debug: 4.3.4 - hpagent: 1.2.0 - ms: 2.1.3 - secure-json-parse: 2.7.0 - tslib: 2.6.2 - undici: 5.28.2 - transitivePeerDependencies: - - supports-color - dev: false - /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3240,11 +3071,6 @@ packages: dev: false optional: true - /@fastify/busboy@2.1.0: - resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} - engines: {node: '>=14'} - dev: false - /@gar/promisify@1.1.3: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} dev: false @@ -4019,7 +3845,7 @@ packages: swagger-ui-dist: 5.11.0 dev: false - /@nestjs/terminus@10.2.0(@nestjs/axios@3.0.1)(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(@nestjs/microservices@10.3.0)(@prisma/client@5.8.1)(reflect-metadata@0.1.14)(rxjs@7.8.1): + /@nestjs/terminus@10.2.0(@nestjs/axios@3.0.1)(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(@nestjs/microservices@10.3.0)(reflect-metadata@0.1.14)(rxjs@7.8.1): resolution: {integrity: sha512-zPs98xvJ4ogEimRQOz8eU90mb7z+W/kd/mL4peOgrJ/VqER+ibN2Cboj65uJZW3XuNhpOqaeYOJte86InJd44A==} peerDependencies: '@grpc/grpc-js': '*' @@ -4071,7 +3897,6 @@ packages: '@nestjs/common': 10.3.0(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) '@nestjs/core': 10.3.0(@nestjs/common@10.3.0)(@nestjs/microservices@10.3.0)(@nestjs/platform-express@10.3.0)(reflect-metadata@0.1.14)(rxjs@7.8.1) '@nestjs/microservices': 10.3.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(nats@2.19.0)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@prisma/client': 5.8.1(prisma@5.8.1) boxen: 5.1.2 check-disk-space: 3.4.0 reflect-metadata: 0.1.14 @@ -4145,59 +3970,6 @@ packages: transitivePeerDependencies: - encoding - /@opentelemetry/api@1.7.0: - resolution: {integrity: sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==} - engines: {node: '>=8.0.0'} - requiresBuild: true - dev: false - optional: true - - /@opentelemetry/core@1.20.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-lSRvk5AIdD6CtgYJcJXh0wGibQ3S/8bC2qbqKs9wK8e0K1tsWV6YkGFOqVc+jIRlCbZoIBeZzDe5UI+vb94uvg==} - engines: {node: '>=14'} - requiresBuild: true - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/semantic-conventions': 1.20.0 - dev: false - optional: true - - /@opentelemetry/resources@1.20.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-nOpV0vGegSq+9ze2cEDvO3BMA5pGBhmhKZiAlj+xQZjiEjPmJtdHIuBLRvptu2ahcbFJw85gIB9BYHZOvZK1JQ==} - engines: {node: '>=14'} - requiresBuild: true - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.20.0 - dev: false - optional: true - - /@opentelemetry/sdk-metrics@1.20.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-07bFOQUrpN/Q5biJ/cuBePztKwkc1VGkFblZxAcVkuvCLDAPJfsyr0NNWegWeYe0bpGt1jmXScpUWnVD+t8Q0w==} - engines: {node: '>=14'} - requiresBuild: true - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.8.0' - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.20.0(@opentelemetry/api@1.7.0) - lodash.merge: 4.6.2 - dev: false - optional: true - - /@opentelemetry/semantic-conventions@1.20.0: - resolution: {integrity: sha512-3zLJJCgTKYpbqFX8drl8hOCHtdchELC+kGqlVcV4mHW1DiElTtv1Nt9EKBptTd1IfL56QkuYnWJ3DeHd2Gtu/A==} - engines: {node: '>=14'} - requiresBuild: true - dev: false - optional: true - /@peculiar/asn1-schema@2.3.8: resolution: {integrity: sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==} dependencies: @@ -4235,46 +4007,6 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dev: true - /@prisma/client@5.8.1(prisma@5.8.1): - resolution: {integrity: sha512-xQtMPfbIwLlbm0VVIVQY2yqQVOxPwRQhvIp7Z3m2900g1bu/zRHKhYZJQWELqmjl6d8YwBy0K2NvMqh47v1ubw==} - engines: {node: '>=16.13'} - requiresBuild: true - peerDependencies: - prisma: '*' - peerDependenciesMeta: - prisma: - optional: true - dependencies: - prisma: 5.8.1 - dev: false - - /@prisma/debug@5.8.1: - resolution: {integrity: sha512-tjuw7eA0Us3T42jx9AmAgL58rzwzpFGYc3R7Y4Ip75EBYrKMBA1YihuWMcBC92ILmjlQ/u3p8VxcIE0hr+fZfg==} - - /@prisma/engines-version@5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2: - resolution: {integrity: sha512-f5C3JM3l9yhGr3cr4FMqWloFaSCpNpMi58Om22rjD2DOz3owci2mFdFXMgnAGazFPKrCbbEhcxdsRfspEYRoFQ==} - - /@prisma/engines@5.8.1: - resolution: {integrity: sha512-TJgYLRrZr56uhqcXO4GmP5be+zjCIHtLDK20Cnfg+o9d905hsN065QOL+3Z0zQAy6YD31Ol4u2kzSfRmbJv/uA==} - requiresBuild: true - dependencies: - '@prisma/debug': 5.8.1 - '@prisma/engines-version': 5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2 - '@prisma/fetch-engine': 5.8.1 - '@prisma/get-platform': 5.8.1 - - /@prisma/fetch-engine@5.8.1: - resolution: {integrity: sha512-+bgjjoSFa6uYEbAPlklfoVSStOEfcpheOjoBoNsNNSQdSzcwE2nM4Q0prun0+P8/0sCHo18JZ9xqa8gObvgOUw==} - dependencies: - '@prisma/debug': 5.8.1 - '@prisma/engines-version': 5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2 - '@prisma/get-platform': 5.8.1 - - /@prisma/get-platform@5.8.1: - resolution: {integrity: sha512-wnA+6HTFcY+tkykMokix9GiAkaauPC5W/gg0O5JB0J8tCTNWrqpnQ7AsaGRfkYUbeOIioh6woDjQrGTTRf1Zag==} - dependencies: - '@prisma/debug': 5.8.1 - /@react-native-community/cli-clean@12.3.0: resolution: {integrity: sha512-iAgLCOWYRGh9ukr+eVQnhkV/OqN3V2EGd/in33Ggn/Mj4uO6+oUncXFwB+yjlyaUNz6FfjudhIz09yYGSF+9sg==} dependencies: @@ -5054,6 +4786,7 @@ packages: resolution: {integrity: sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==} dependencies: '@types/node': 20.11.5 + dev: true /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} @@ -5522,6 +5255,7 @@ packages: acorn: ^8 dependencies: acorn: 8.11.3 + dev: true /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -5541,12 +5275,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - /after-all-results@2.0.0: - resolution: {integrity: sha512-2zHEyuhSJOuCrmas9YV0YL/MFCWLxe1dS6k/ENhgYrb/JqyMnadLN4iIAc9kkZrbElMDyyAGH/0J18OPErOWLg==} - requiresBuild: true - dev: false - optional: true - /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -5556,15 +5284,6 @@ packages: - supports-color dev: false - /agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - requiresBuild: true - dependencies: - humanize-ms: 1.2.1 - dev: false - optional: true - /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -5746,6 +5465,7 @@ packages: dependencies: call-bind: 1.0.5 is-array-buffer: 3.0.2 + dev: true /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -5824,6 +5544,7 @@ packages: get-intrinsic: 1.2.2 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 + dev: true /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} @@ -5860,15 +5581,6 @@ packages: dev: false optional: true - /async-cache@1.1.0: - resolution: {integrity: sha512-YDQc4vBn5NFhY6g6HhVshyi3Fy9+SQ5ePnE7JLDJn1DoL+i7ER+vMwtTNOYk9leZkYMnOwpBCWqyLDPw8Aig8g==} - deprecated: No longer maintained. Use [lru-cache](http://npm.im/lru-cache) version 7.6 or higher, and provide an asynchronous `fetchMethod` option. - requiresBuild: true - dependencies: - lru-cache: 4.1.5 - dev: false - optional: true - /async-limiter@1.0.1: resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} dev: false @@ -5880,20 +5592,6 @@ packages: tslib: 2.6.2 dev: false - /async-value-promise@1.1.1: - resolution: {integrity: sha512-c2RFDKjJle1rHa0YxN9Ysu97/QBu3Wa+NOejJxsX+1qVDJrkD3JL/GN1B3gaILAEXJXbu/4Z1lcoCHFESe/APA==} - requiresBuild: true - dependencies: - async-value: 1.2.2 - dev: false - optional: true - - /async-value@1.2.2: - resolution: {integrity: sha512-8rwtYe32OAS1W9CTwvknoyts+mc3ta8N7Pi0h7AjkMaKvsFbr39K+gEfZ7Z81aPXQ1sK5M23lgLy1QfZpcpadQ==} - requiresBuild: true - dev: false - optional: true - /async@3.2.5: resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} dev: false @@ -5907,16 +5605,10 @@ packages: dev: false optional: true - /atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - requiresBuild: true - dev: false - optional: true - /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} + dev: true /axios@1.6.5: resolution: {integrity: sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==} @@ -6113,15 +5805,6 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - /basic-auth@2.0.1: - resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} - engines: {node: '>= 0.8'} - requiresBuild: true - dependencies: - safe-buffer: 5.1.2 - dev: false - optional: true - /better-opn@3.0.2: resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} engines: {node: '>=12.0.0'} @@ -6169,12 +5852,6 @@ packages: engines: {node: '>=8'} dev: true - /binary-search@1.3.6: - resolution: {integrity: sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA==} - requiresBuild: true - dev: false - optional: true - /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: @@ -6297,14 +5974,6 @@ packages: dependencies: fill-range: 7.0.1 - /breadth-filter@2.0.0: - resolution: {integrity: sha512-thQShDXnFWSk2oVBixRCyrWsFoV5tfOpWKHmxwafHQDNxCfDBk539utpvytNjmlFrTMqz41poLwJvA1MW3z0MQ==} - requiresBuild: true - dependencies: - object.entries: 1.1.7 - dev: false - optional: true - /browserslist@4.22.2: resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -6340,10 +6009,6 @@ packages: dev: false optional: true - /buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - dev: false - /buffer-fill@1.0.0: resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} dev: false @@ -6352,11 +6017,6 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - /buffer-writer@2.0.0: - resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} - engines: {node: '>=4'} - dev: false - /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -6597,6 +6257,7 @@ packages: /cjs-module-lexer@1.2.3: resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + dev: true /class-transformer@0.5.1: resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} @@ -6908,12 +6569,6 @@ packages: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} dev: false - /console-log-level@1.4.1: - resolution: {integrity: sha512-VZzbIORbP+PPcN/gg3DXClTLPLg5Slwd5fL2MIc+o1qZ4BXBvWyc6QxPk6T/Mkr6IVjRpoAGf32XxP3ZWMVRcQ==} - requiresBuild: true - dev: false - optional: true - /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -7142,6 +6797,7 @@ packages: /dayjs@1.11.10: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} dev: false + optional: true /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -7261,6 +6917,7 @@ packages: define-data-property: 1.1.1 has-property-descriptors: 1.0.1 object-keys: 1.1.1 + dev: true /del@6.1.1: resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} @@ -7290,11 +6947,6 @@ packages: dev: false optional: true - /depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - dev: true - /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -7405,63 +7057,9 @@ packages: /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - /ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - dependencies: - safe-buffer: 5.2.1 - dev: false - /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - /elastic-apm-node@3.51.0: - resolution: {integrity: sha512-GvZyoV4uhHB9qW4QE4pGcYZLbDCay2VzbeE5zN5v9vrQQ7j72GbzE5wGmtryNHwqP4DGCuXUk/jerArfpIquOQ==} - engines: {node: '>=8.6.0'} - requiresBuild: true - dependencies: - '@elastic/ecs-pino-format': 1.5.0 - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-metrics': 1.20.0(@opentelemetry/api@1.7.0) - after-all-results: 2.0.0 - agentkeepalive: 4.5.0 - async-cache: 1.1.0 - async-value-promise: 1.1.1 - basic-auth: 2.0.1 - breadth-filter: 2.0.0 - cookie: 0.5.0 - core-util-is: 1.0.3 - end-of-stream: 1.4.4 - error-callsites: 2.0.4 - error-stack-parser: 2.1.4 - escape-string-regexp: 4.0.0 - fast-safe-stringify: 2.1.1 - fast-stream-to-buffer: 1.0.0 - http-headers: 3.0.2 - import-in-the-middle: 1.4.2 - is-native: 1.0.1 - lru-cache: 6.0.0 - measured-reporting: 1.51.1 - module-details-from-path: 1.0.3 - monitor-event-loop-delay: 1.0.0 - object-filter-sequence: 1.0.0 - object-identity-map: 1.0.2 - original-url: 1.2.3 - pino: 6.14.0 - readable-stream: 3.6.2 - relative-microtime: 2.0.0 - require-in-the-middle: 7.2.0 - semver: 6.3.1 - shallow-clone-shim: 2.0.0 - source-map: 0.8.0-beta.0 - sql-summary: 1.0.1 - stream-chopper: 3.0.1 - unicode-byte-truncate: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: false - optional: true - /electron-to-chromium@1.4.634: resolution: {integrity: sha512-gQNahJfF5AE4MZo+pMSwmnwkzVZ+F4ZGGj4Z/MMddOXVQM0y9OHy6ts3W9SDzAJaiZM3p6eixn5ABCQ+AfXzcQ==} @@ -7519,13 +7117,6 @@ packages: dev: false optional: true - /error-callsites@2.0.4: - resolution: {integrity: sha512-V877Ch4FC4FN178fDK1fsrHN4I1YQIBdtjKrHh3BUHMnh3SMvwUVrqkaOgDpUuevgSNna0RBq6Ox9SGlxYrigA==} - engines: {node: '>=6.x'} - requiresBuild: true - dev: false - optional: true - /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -7590,6 +7181,7 @@ packages: typed-array-length: 1.0.4 unbox-primitive: 1.0.2 which-typed-array: 1.1.13 + dev: true /es-module-lexer@1.4.1: resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} @@ -7602,6 +7194,7 @@ packages: get-intrinsic: 1.2.2 has-tostringtag: 1.0.0 hasown: 2.0.0 + dev: true /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} @@ -7616,6 +7209,7 @@ packages: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 + dev: true /es5-ext@0.10.62: resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} @@ -8254,24 +7848,9 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fast-redact@3.3.0: - resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} - engines: {node: '>=6'} - requiresBuild: true - dev: false - optional: true - /fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - /fast-stream-to-buffer@1.0.0: - resolution: {integrity: sha512-bI/544WUQlD2iXBibQbOMSmG07Hay7YrpXlKaeGTPT7H7pC0eitt3usak5vUwEvCGK/O7rUAM3iyQValGU22TQ==} - requiresBuild: true - dependencies: - end-of-stream: 1.4.4 - dev: false - optional: true - /fast-text-encoding@1.0.6: resolution: {integrity: sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==} dev: false @@ -8515,12 +8094,6 @@ packages: rimraf: 3.0.2 dev: true - /flatstr@1.0.12: - resolution: {integrity: sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==} - requiresBuild: true - dev: false - optional: true - /flatted@3.2.9: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true @@ -8559,6 +8132,7 @@ packages: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 + dev: true /foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} @@ -8616,12 +8190,6 @@ packages: qs: 6.11.2 dev: true - /forwarded-parse@2.1.2: - resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==} - requiresBuild: true - dev: false - optional: true - /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -8709,9 +8277,11 @@ packages: define-properties: 1.2.1 es-abstract: 1.22.3 functions-have-names: 1.2.3 + dev: true /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true /gauge@3.0.2: resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} @@ -8795,6 +8365,7 @@ packages: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 + dev: true /get-symbol-from-current-process-h@1.0.2: resolution: {integrity: sha512-syloC6fsCt62ELLrr1VKBM1ggOpMdetX9hTrdW77UQdcApPHLmf7CI7OKcN1c9kYuNxKcDe4iJ4FY9sX3aw2xw==} @@ -8937,6 +8508,7 @@ packages: engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 + dev: true /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -9002,6 +8574,7 @@ packages: /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} @@ -9034,6 +8607,7 @@ packages: engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: true /has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} @@ -9101,11 +8675,6 @@ packages: lru-cache: 6.0.0 dev: true - /hpagent@1.2.0: - resolution: {integrity: sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==} - engines: {node: '>=14'} - dev: false - /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true @@ -9124,14 +8693,6 @@ packages: statuses: 2.0.1 toidentifier: 1.0.1 - /http-headers@3.0.2: - resolution: {integrity: sha512-87E1I+2Wg4dxxz4rcxElo3dxO/w1ZtgL1yA0Sb6vH3qU16vRKq1NjWQv9SCY3ly2OQROcoxHZOUpmelS+k6wOw==} - requiresBuild: true - dependencies: - next-line: 1.1.0 - dev: false - optional: true - /http2-wrapper@1.0.3: resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} engines: {node: '>=10.19.0'} @@ -9159,14 +8720,6 @@ packages: engines: {node: '>=16.17.0'} dev: true - /humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - requiresBuild: true - dependencies: - ms: 2.1.3 - dev: false - optional: true - /husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} @@ -9212,17 +8765,6 @@ packages: resolve-from: 4.0.0 dev: true - /import-in-the-middle@1.4.2: - resolution: {integrity: sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==} - requiresBuild: true - dependencies: - acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) - cjs-module-lexer: 1.2.3 - module-details-from-path: 1.0.3 - dev: false - optional: true - /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} @@ -9315,6 +8857,7 @@ packages: get-intrinsic: 1.2.2 hasown: 2.0.0 side-channel: 1.0.4 + dev: true /interpret@1.4.0: resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} @@ -9349,6 +8892,7 @@ packages: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-typed-array: 1.1.12 + dev: true /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -9361,6 +8905,7 @@ packages: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 + dev: true /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} @@ -9375,6 +8920,7 @@ packages: dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 + dev: true /is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} @@ -9384,6 +8930,7 @@ packages: /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} + dev: true /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} @@ -9395,6 +8942,7 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true /is-directory@0.3.1: resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} @@ -9419,13 +8967,6 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - /is-finite@1.1.0: - resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} - engines: {node: '>=0.10.0'} - requiresBuild: true - dev: false - optional: true - /is-fullwidth-code-point@2.0.0: resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} engines: {node: '>=4'} @@ -9467,14 +9008,6 @@ packages: dependencies: is-extglob: 2.1.1 - /is-integer@1.0.7: - resolution: {integrity: sha512-RPQc/s9yBHSvpi+hs9dYiJ2cuFeU6x3TyyIp8O2H6SKEltIvJOzRj9ToyvcStDvPR/pS4rxgr1oBFajQjZ2Szg==} - requiresBuild: true - dependencies: - is-finite: 1.1.0 - dev: false - optional: true - /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} @@ -9487,30 +9020,17 @@ packages: dev: false optional: true - /is-native@1.0.1: - resolution: {integrity: sha512-I4z9hx+4u3/zyvpvGtAR+n7SodJugE+i2jiS8yfq1A9QAZY0KldLQz0SBptLC9ti7kBlpghWUwTKE2BA62eCcw==} - requiresBuild: true - dependencies: - is-nil: 1.0.1 - to-source-code: 1.0.2 - dev: false - optional: true - /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} - - /is-nil@1.0.1: - resolution: {integrity: sha512-m2Rm8PhUFDNNhgvwZJjJG74a9h5CHU0fkA8WT+WGlCjyEbZ2jPwgb+ZxHu4np284EqNVyOsgppReK4qy/TwEwg==} - requiresBuild: true - dev: false - optional: true + dev: true /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} @@ -9550,11 +9070,13 @@ packages: dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 + dev: true /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.5 + dev: true /is-stream@1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} @@ -9574,12 +9096,14 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: true /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: true /is-text-path@2.0.0: resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} @@ -9593,6 +9117,7 @@ packages: engines: {node: '>= 0.4'} dependencies: which-typed-array: 1.1.13 + dev: true /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} @@ -9615,6 +9140,7 @@ packages: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.5 + dev: true /is-wsl@1.1.0: resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} @@ -9635,6 +9161,7 @@ packages: /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -9842,7 +9369,7 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.2(@swc/core@1.3.103)(@types/node@20.11.5)(typescript@5.3.3) + ts-node: 10.9.2(@types/node@20.11.5)(typescript@5.3.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -10179,10 +9706,6 @@ packages: dev: false optional: true - /jose@4.15.4: - resolution: {integrity: sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==} - dev: false - /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -10333,51 +9856,6 @@ packages: engines: {'0': node >= 0.2.0} dev: true - /jsonwebtoken@9.0.2: - resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} - engines: {node: '>=12', npm: '>=6'} - dependencies: - jws: 3.2.2 - lodash.includes: 4.3.0 - lodash.isboolean: 3.0.3 - lodash.isinteger: 4.0.4 - lodash.isnumber: 3.0.3 - lodash.isplainobject: 4.0.6 - lodash.isstring: 4.0.1 - lodash.once: 4.1.1 - ms: 2.1.3 - semver: 7.5.4 - dev: false - - /jwa@1.4.1: - resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - dev: false - - /jwks-rsa@3.1.0: - resolution: {integrity: sha512-v7nqlfezb9YfHHzYII3ef2a2j1XnGeSE/bK3WfumaYCqONAIstJbrEGapz4kadScZzEt7zYCN7bucj8C0Mv/Rg==} - engines: {node: '>=14'} - dependencies: - '@types/express': 4.17.21 - '@types/jsonwebtoken': 9.0.5 - debug: 4.3.4 - jose: 4.15.4 - limiter: 1.1.5 - lru-memoizer: 2.2.0 - transitivePeerDependencies: - - supports-color - dev: false - - /jws@3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} - dependencies: - jwa: 1.4.1 - safe-buffer: 5.2.1 - dev: false - /keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: @@ -10537,10 +10015,6 @@ packages: engines: {node: '>=14'} dev: true - /limiter@1.1.5: - resolution: {integrity: sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==} - dev: false - /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -10563,12 +10037,6 @@ packages: - supports-color dev: true - /liquibase@4.4.0: - resolution: {integrity: sha512-oD/ZJgxpoR43V5Vt7o3r9ftYl16PyFco5l1EpKI4VKDQLtm1acHsyqxjA96S6c+rP51PafC4xug1Z6IJLyyAXA==} - engines: {node: '>=6.9.0'} - hasBin: true - dev: false - /listr2@8.0.0: resolution: {integrity: sha512-u8cusxAcyqAiQ2RhYvV7kRKNLgUvtObIbhOX2NCXqvp1UU32xIg5CT22ykS2TPKJXZWJwtK3IKLiqAGlGNE+Zg==} engines: {node: '>=18.0.0'} @@ -10611,45 +10079,18 @@ packages: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} dev: true - /lodash.clonedeep@4.5.0: - resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} - dev: false - /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: false optional: true - /lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - dev: false - - /lodash.includes@4.3.0: - resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} - dev: false - - /lodash.isboolean@3.0.3: - resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} - dev: false - /lodash.isfunction@3.0.9: resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} dev: true - /lodash.isinteger@4.0.4: - resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} - dev: false - - /lodash.isnumber@3.0.3: - resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} - dev: false - /lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - /lodash.isstring@4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - dev: false + dev: true /lodash.kebabcase@4.1.1: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} @@ -10661,29 +10102,16 @@ packages: /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true /lodash.mergewith@4.6.2: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} dev: true - /lodash.omit@4.5.0: - resolution: {integrity: sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==} - dev: false - - /lodash.once@4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - dev: false - /lodash.snakecase@4.1.1: resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} dev: true - /lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - requiresBuild: true - dev: false - optional: true - /lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true @@ -10769,18 +10197,12 @@ packages: resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} engines: {node: 14 || >=16.14} - /lru-cache@4.0.2: - resolution: {integrity: sha512-uQw9OqphAGiZhkuPlpFGmdTU2tEuhxTourM/19qGJrxBPHAr/f8BT1a0i/lOclESnGatdJG/UCkP9kZB/Lh1iw==} - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - dev: false - /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: pseudomap: 1.0.2 yallist: 2.1.2 + dev: true /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -10793,13 +10215,6 @@ packages: dependencies: yallist: 4.0.0 - /lru-memoizer@2.2.0: - resolution: {integrity: sha512-QfOZ6jNkxCcM/BkIPnFsqDhtrazLRsghi9mBwFAzol5GCvj4EkFT899Za3+QwikCg5sRX8JstioBDwOxEyzaNw==} - dependencies: - lodash.clonedeep: 4.5.0 - lru-cache: 4.0.2 - dev: false - /lru_map@0.4.1: resolution: {integrity: sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg==} dev: false @@ -10857,12 +10272,6 @@ packages: engines: {node: '>=8'} dev: true - /mapcap@1.0.0: - resolution: {integrity: sha512-KcNlZSlFPx+r1jYZmxEbTVymG+dIctf10WmWkuhrhrblM+KMoF77HelwihL5cxYlORye79KoR4IlOOk99lUJ0g==} - requiresBuild: true - dev: false - optional: true - /marky@1.2.5: resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} dev: false @@ -10900,28 +10309,6 @@ packages: dev: false optional: true - /measured-core@1.51.1: - resolution: {integrity: sha512-DZQP9SEwdqqYRvT2slMK81D/7xwdxXosZZBtLVfPSo6y5P672FBTbzHVdN4IQyUkUpcVOR9pIvtUy5Ryl7NKyg==} - engines: {node: '>= 5.12'} - requiresBuild: true - dependencies: - binary-search: 1.3.6 - optional-js: 2.3.0 - dev: false - optional: true - - /measured-reporting@1.51.1: - resolution: {integrity: sha512-JCt+2u6XT1I5lG3SuYqywE0e62DJuAzBcfMzWGUhIYtPQV2Vm4HiYt/durqmzsAbZV181CEs+o/jMKWJKkYIWw==} - engines: {node: '>= 5.12'} - requiresBuild: true - dependencies: - console-log-level: 1.4.1 - mapcap: 1.0.0 - measured-core: 1.51.1 - optional-js: 2.3.0 - dev: false - optional: true - /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -10968,10 +10355,6 @@ packages: /merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - /merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - dev: true - /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -11435,22 +10818,6 @@ packages: ufo: 1.3.2 dev: true - /module-details-from-path@1.0.3: - resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} - requiresBuild: true - dev: false - optional: true - - /moment@2.30.1: - resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - dev: false - - /monitor-event-loop-delay@1.0.0: - resolution: {integrity: sha512-YRIr1exCIfBDLZle8WHOfSo7Xg3M+phcZfq9Fx1L6Abo+atGp7cge5pM7PjyBn4s1oZI/BRD4EMrzQBbPpVb5Q==} - requiresBuild: true - dev: false - optional: true - /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -11541,12 +10908,6 @@ packages: dev: false optional: true - /next-line@1.1.0: - resolution: {integrity: sha512-+I10J3wKNoKddNxn0CNpoZ3eTZuqxjNM3b1GImVx22+ePI+Y15P8g/j3WsbP0fhzzrFzrtjOAoq5NCCucswXOQ==} - requiresBuild: true - dev: false - optional: true - /next-tick@1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: false @@ -11631,24 +10992,6 @@ packages: /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - /node-mocks-http@1.14.1: - resolution: {integrity: sha512-mfXuCGonz0A7uG1FEjnypjm34xegeN5+HI6xeGhYKecfgaZhjsmYoLE9LEFmT+53G1n8IuagPZmVnEL/xNsFaA==} - engines: {node: '>=14'} - dependencies: - '@types/express': 4.17.21 - '@types/node': 20.11.5 - accepts: 1.3.8 - content-disposition: 0.5.4 - depd: 1.1.2 - fresh: 0.5.2 - merge-descriptors: 1.0.3 - methods: 1.1.2 - mime: 1.6.0 - parseurl: 1.3.3 - range-parser: 1.2.1 - type-is: 1.6.18 - dev: true - /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} @@ -11747,26 +11090,13 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - /object-filter-sequence@1.0.0: - resolution: {integrity: sha512-CsubGNxhIEChNY4cXYuA6KXafztzHqzLLZ/y3Kasf3A+sa3lL9thq3z+7o0pZqzEinjXT6lXDPAfVWI59dUyzQ==} - requiresBuild: true - dev: false - optional: true - - /object-identity-map@1.0.2: - resolution: {integrity: sha512-a2XZDGyYTngvGS67kWnqVdpoaJWsY7C1GhPJvejWAFCsUioTAaiTu8oBad7c6cI4McZxr4CmvnZeycK05iav5A==} - requiresBuild: true - dependencies: - object.entries: 1.1.7 - dev: false - optional: true - /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + dev: true /object.assign@4.1.5: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} @@ -11776,17 +11106,7 @@ packages: define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - - /object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} - engines: {node: '>= 0.4'} - requiresBuild: true - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: false - optional: true + dev: true /object.fromentries@2.0.7: resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} @@ -11894,12 +11214,6 @@ packages: dev: false optional: true - /optional-js@2.3.0: - resolution: {integrity: sha512-B0LLi+Vg+eko++0z/b8zIv57kp7HKEzaPJo7LowJXMUKYdf+3XJGu/cw03h/JhIOsLnP+cG5QnTHAuicjA5fMw==} - requiresBuild: true - dev: false - optional: true - /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -11939,14 +11253,6 @@ packages: strip-ansi: 6.0.1 wcwidth: 1.0.1 - /original-url@1.2.3: - resolution: {integrity: sha512-BYm+pKYLtS4mVe/mgT3YKGtWV5HzN/XKiaIu1aK4rsxyjuHeTW9N+xVBEpJcY1onB3nccfH0RbzUEoimMqFUHQ==} - requiresBuild: true - dependencies: - forwarded-parse: 2.1.2 - dev: false - optional: true - /os-filter-obj@2.0.0: resolution: {integrity: sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==} engines: {node: '>=4'} @@ -12025,10 +11331,6 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - /packet-reader@1.0.0: - resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} - dev: false - /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -12136,70 +11438,6 @@ packages: engines: {node: '>=14.16'} dev: true - /pg-cloudflare@1.1.1: - resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} - requiresBuild: true - dev: false - optional: true - - /pg-connection-string@2.6.2: - resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} - dev: false - - /pg-int8@1.0.1: - resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} - engines: {node: '>=4.0.0'} - dev: false - - /pg-pool@3.6.1(pg@8.11.3): - resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==} - peerDependencies: - pg: '>=8.0' - dependencies: - pg: 8.11.3 - dev: false - - /pg-protocol@1.6.0: - resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} - dev: false - - /pg-types@2.2.0: - resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} - engines: {node: '>=4'} - dependencies: - pg-int8: 1.0.1 - postgres-array: 2.0.0 - postgres-bytea: 1.0.0 - postgres-date: 1.0.7 - postgres-interval: 1.2.0 - dev: false - - /pg@8.11.3: - resolution: {integrity: sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==} - engines: {node: '>= 8.0.0'} - peerDependencies: - pg-native: '>=3.0.1' - peerDependenciesMeta: - pg-native: - optional: true - dependencies: - buffer-writer: 2.0.0 - packet-reader: 1.0.0 - pg-connection-string: 2.6.2 - pg-pool: 3.6.1(pg@8.11.3) - pg-protocol: 1.6.0 - pg-types: 2.2.0 - pgpass: 1.0.5 - optionalDependencies: - pg-cloudflare: 1.1.1 - dev: false - - /pgpass@1.0.5: - resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} - dependencies: - split2: 4.2.0 - dev: false - /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -12229,27 +11467,6 @@ packages: dev: false optional: true - /pino-std-serializers@3.2.0: - resolution: {integrity: sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==} - requiresBuild: true - dev: false - optional: true - - /pino@6.14.0: - resolution: {integrity: sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==} - hasBin: true - requiresBuild: true - dependencies: - fast-redact: 3.3.0 - fast-safe-stringify: 2.1.1 - flatstr: 1.0.12 - pino-std-serializers: 3.2.0 - process-warning: 1.0.0 - quick-format-unescaped: 4.0.4 - sonic-boom: 1.4.1 - dev: false - optional: true - /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} @@ -12316,28 +11533,6 @@ packages: dev: false optional: true - /postgres-array@2.0.0: - resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} - engines: {node: '>=4'} - dev: false - - /postgres-bytea@1.0.0: - resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} - engines: {node: '>=0.10.0'} - dev: false - - /postgres-date@1.0.7: - resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} - engines: {node: '>=0.10.0'} - dev: false - - /postgres-interval@1.2.0: - resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} - engines: {node: '>=0.10.0'} - dependencies: - xtend: 4.0.2 - dev: false - /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -12381,23 +11576,9 @@ packages: ansi-styles: 5.2.0 react-is: 18.2.0 - /prisma@5.8.1: - resolution: {integrity: sha512-N6CpjzECnUHZ5beeYpDzkt2rYpEdAeqXX2dweu6BoQaeYkNZrC/WJHM+5MO/uidFHTak8QhkPKBWck1o/4MD4A==} - engines: {node: '>=16.13'} - hasBin: true - requiresBuild: true - dependencies: - '@prisma/engines': 5.8.1 - /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - /process-warning@1.0.0: - resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} - requiresBuild: true - dev: false - optional: true - /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} @@ -12426,6 +11607,7 @@ packages: dependencies: asap: 2.0.6 dev: false + optional: true /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} @@ -12456,6 +11638,7 @@ packages: /pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: true /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} @@ -12466,6 +11649,7 @@ packages: /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + dev: true /pure-rand@6.0.4: resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} @@ -12526,12 +11710,6 @@ packages: dev: false optional: true - /quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - requiresBuild: true - dev: false - optional: true - /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} @@ -12855,6 +12033,7 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 set-function-name: 2.0.1 + dev: true /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} @@ -12877,12 +12056,6 @@ packages: dev: false optional: true - /relative-microtime@2.0.0: - resolution: {integrity: sha512-l18ha6HEZc+No/uK4GyAnNxgKW7nvEe35IaeN54sShMojtqik2a6GbTyuiezkjpPaqP874Z3lW5ysBo5irz4NA==} - requiresBuild: true - dev: false - optional: true - /remove-trailing-slash@0.1.1: resolution: {integrity: sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==} dev: false @@ -12901,19 +12074,6 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - /require-in-the-middle@7.2.0: - resolution: {integrity: sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw==} - engines: {node: '>=8.6.0'} - requiresBuild: true - dependencies: - debug: 4.3.4 - module-details-from-path: 1.0.3 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - dev: false - optional: true - /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} dev: false @@ -13026,11 +12186,6 @@ packages: signal-exit: 3.0.7 dev: true - /retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - dev: false - /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -13114,6 +12269,7 @@ packages: get-intrinsic: 1.2.2 has-symbols: 1.0.3 isarray: 2.0.5 + dev: true /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -13134,6 +12290,7 @@ packages: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-regex: 1.1.4 + dev: true /safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} @@ -13164,10 +12321,6 @@ packages: ajv-keywords: 3.5.2(ajv@6.12.6) dev: true - /secure-json-parse@2.7.0: - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - dev: false - /semver-regex@4.0.5: resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} engines: {node: '>=12'} @@ -13290,6 +12443,7 @@ packages: define-data-property: 1.1.1 functions-have-names: 1.2.3 has-property-descriptors: 1.0.1 + dev: true /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -13299,12 +12453,6 @@ packages: /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - /shallow-clone-shim@2.0.0: - resolution: {integrity: sha512-YRNymdiL3KGOoS67d73TEmk4tdPTO9GSMCoiphQsTcC9EtC+AOmMPjkyBkRoCJfW9ASsaZw1craaiw1dPN2D3Q==} - requiresBuild: true - dev: false - optional: true - /shallow-clone@3.0.1: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} @@ -13416,15 +12564,6 @@ packages: dev: false optional: true - /sonic-boom@1.4.1: - resolution: {integrity: sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==} - requiresBuild: true - dependencies: - atomic-sleep: 1.0.0 - flatstr: 1.0.12 - dev: false - optional: true - /sort-keys-length@1.0.1: resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} engines: {node: '>=0.10.0'} @@ -13472,15 +12611,6 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} - /source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} - requiresBuild: true - dependencies: - whatwg-url: 7.1.0 - dev: false - optional: true - /spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: @@ -13517,6 +12647,7 @@ packages: /split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} + dev: true /split@1.0.1: resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} @@ -13528,12 +12659,6 @@ packages: /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - /sql-summary@1.0.1: - resolution: {integrity: sha512-IpCr2tpnNkP3Jera4ncexsZUp0enJBLr+pHCyTweMUBrbJsTgQeLWx1FXLhoBj/MvcnUQpkgOn2EY8FKOkUzww==} - requiresBuild: true - dev: false - optional: true - /ssri@8.0.1: resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} engines: {node: '>= 8'} @@ -13586,14 +12711,6 @@ packages: dev: false optional: true - /stream-chopper@3.0.1: - resolution: {integrity: sha512-f7h+ly8baAE26iIjcp3VbnBkbIRGtrvV0X0xxFM/d7fwLTYnLzDPTXRKNxa2HZzohOrc96NTrR+FaV3mzOelNA==} - requiresBuild: true - dependencies: - readable-stream: 3.6.2 - dev: false - optional: true - /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -13648,6 +12765,7 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + dev: true /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} @@ -13655,6 +12773,7 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + dev: true /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} @@ -13662,6 +12781,7 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + dev: true /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -13850,16 +12970,6 @@ packages: resolution: {integrity: sha512-j0PIATqQSEFGOLmiJOJZj1X1Jt6bFIur3JpY7+ghliUnfZs0fpWDdHEkn9q7QUlBtKbkn6TepvSxTqnE8l3s0A==} dev: false - /swagger-ui-express@5.0.0(express@4.18.2): - resolution: {integrity: sha512-tsU9tODVvhyfkNSvf03E6FAk+z+5cU3lXAzMy6Pv4av2Gt2xA0++fogwC4qo19XuFf6hdxevPuVCSKFuMHJhFA==} - engines: {node: '>= v0.10.32'} - peerDependencies: - express: '>=4.0.0 || >=5.0.0-beta' - dependencies: - express: 4.18.2 - swagger-ui-dist: 5.11.0 - dev: false - /symbol-observable@4.0.0: resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} engines: {node: '>=0.10'} @@ -14077,14 +13187,6 @@ packages: dependencies: is-number: 7.0.0 - /to-source-code@1.0.2: - resolution: {integrity: sha512-YzWtjmNIf3E75eZYa7m1SCyl0vgOGoTzdpH3svfa8SUm5rqTgl9hnDolrAGOghCF9P2gsITXQoMrlujOoz+RPw==} - requiresBuild: true - dependencies: - is-nil: 1.0.1 - dev: false - optional: true - /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -14100,14 +13202,6 @@ packages: /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - /tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - requiresBuild: true - dependencies: - punycode: 2.3.1 - dev: false - optional: true - /traverse@0.6.8: resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} engines: {node: '>= 0.4'} @@ -14184,7 +13278,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.2(@swc/core@1.3.103)(@types/node@20.11.5)(typescript@5.3.3): + /ts-node@10.9.2(@types/node@20.11.5)(typescript@5.3.3): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -14199,7 +13293,6 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@swc/core': 1.3.103 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 @@ -14345,6 +13438,7 @@ packages: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-typed-array: 1.1.12 + dev: true /typed-array-byte-length@1.0.0: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} @@ -14354,6 +13448,7 @@ packages: for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 + dev: true /typed-array-byte-offset@1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} @@ -14364,6 +13459,7 @@ packages: for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 + dev: true /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} @@ -14371,6 +13467,7 @@ packages: call-bind: 1.0.5 for-each: 0.3.3 is-typed-array: 1.1.12 + dev: true /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} @@ -14403,26 +13500,11 @@ packages: has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + dev: true /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /undici@5.28.2: - resolution: {integrity: sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==} - engines: {node: '>=14.0'} - dependencies: - '@fastify/busboy': 2.1.0 - dev: false - - /unicode-byte-truncate@1.0.0: - resolution: {integrity: sha512-GQgHk6DodEoKddKQdjnv7xKS9G09XCfHWX0R4RKht+EbUMSiVEmtWHGFO8HUm+6NvWik3E2/DG4MxTitOLL64A==} - requiresBuild: true - dependencies: - is-integer: 1.0.7 - unicode-substring: 0.1.0 - dev: false - optional: true - /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} @@ -14450,12 +13532,6 @@ packages: dev: false optional: true - /unicode-substring@0.1.0: - resolution: {integrity: sha512-36Xaw9wXi7MB/3/EQZZHkZyyiRNa9i3k9YtPAz2KfqMVH2xutdXyMHn4Igarmnvr+wOrfWa/6njhY+jPpXN2EQ==} - requiresBuild: true - dev: false - optional: true - /unique-filename@1.1.1: resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} dependencies: @@ -14664,12 +13740,6 @@ packages: /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - /webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - requiresBuild: true - dev: false - optional: true - /webpack-node-externals@3.0.0: resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} engines: {node: '>=6'} @@ -14771,16 +13841,6 @@ packages: tr46: 0.0.3 webidl-conversions: 3.0.1 - /whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - requiresBuild: true - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - dev: false - optional: true - /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: @@ -14789,6 +13849,7 @@ packages: is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 + dev: true /which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} @@ -14804,6 +13865,7 @@ packages: for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 + dev: true /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} @@ -14831,25 +13893,6 @@ packages: string-width: 4.2.3 dev: false - /winston-elasticsearch@0.17.4: - resolution: {integrity: sha512-smPDzR2gtAAQ2LibjoJF5aKOeH2sj8KPK7KKVsAncQRUFWjKpih5B6aAelCMc8svBKeCX+QQjE7DXG8B0VgN2A==} - engines: {node: '>= 8.0.0'} - dependencies: - '@elastic/elasticsearch': 8.11.0 - dayjs: 1.11.10 - debug: 4.3.4 - lodash.defaults: 4.2.0 - lodash.omit: 4.5.0 - promise: 8.3.0 - retry: 0.13.1 - winston: 3.11.0 - winston-transport: 4.6.0 - optionalDependencies: - elastic-apm-node: 3.51.0 - transitivePeerDependencies: - - supports-color - dev: false - /winston-transport@4.6.0: resolution: {integrity: sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg==} engines: {node: '>= 12.0.0'} @@ -15027,6 +14070,7 @@ packages: /yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: true /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}