diff --git a/package.json b/package.json index cb58989..ba22646 100644 --- a/package.json +++ b/package.json @@ -23,31 +23,31 @@ "build:swc": "nest build -b swc" }, "dependencies": { - "@ai-sdk/google": "^2.0.47", - "@ai-sdk/openai": "^2.0.88", - "@ai-sdk/openai-compatible": "^1.0.29", + "@ai-sdk/google": "^3.0.1", + "@ai-sdk/openai": "^3.0.1", + "@ai-sdk/openai-compatible": "^2.0.1", "@fastify/helmet": "^13.0.2", "@fastify/multipart": "^9.3.0", "@fastify/static": "^8.3.0", "@keyv/redis": "^5.1.5", "@nestjs/bullmq": "^11.0.4", - "@nestjs/cache-manager": "^3.0.1", - "@nestjs/common": "^11.1.9", + "@nestjs/cache-manager": "^3.1.0", + "@nestjs/common": "^11.1.10", "@nestjs/config": "^4.0.2", - "@nestjs/core": "^11.1.9", + "@nestjs/core": "^11.1.10", "@nestjs/jwt": "^11.0.2", "@nestjs/passport": "^11.0.5", - "@nestjs/platform-express": "^11.1.9", - "@nestjs/platform-fastify": "^11.1.9", + "@nestjs/platform-express": "^11.1.10", + "@nestjs/platform-fastify": "^11.1.10", "@nestjs/swagger": "^11.2.3", "@nestjs/terminus": "^11.0.0", "@nestjs/throttler": "^6.5.0", "@prisma/client": "^6.19.1", "@toon-format/toon": "^2.1.0", "@types/passport-jwt": "^4.0.1", - "ai": "^5.0.114", + "ai": "^6.0.3", "bcrypt": "^6.0.0", - "bullmq": "^5.66.0", + "bullmq": "^5.66.4", "cache-manager": "^7.2.7", "cacheable": "^2.3.1", "class-transformer": "^0.5.1", @@ -72,17 +72,17 @@ "devDependencies": { "@nestjs/cli": "^11.0.14", "@nestjs/schematics": "^11.0.9", - "@nestjs/testing": "^11.1.9", + "@nestjs/testing": "^11.1.10", "@swc/cli": "^0.7.9", - "@swc/core": "^1.15.5", + "@swc/core": "^1.15.7", "@types/bcrypt": "^6.0.0", "@types/express": "^5.0.6", "@types/jest": "^30.0.0", "@types/multer": "^2.0.0", "@types/node": "^25.0.3", "@types/supertest": "^6.0.3", - "@typescript-eslint/eslint-plugin": "^8.50.0", - "@typescript-eslint/parser": "^8.50.0", + "@typescript-eslint/eslint-plugin": "^8.50.1", + "@typescript-eslint/parser": "^8.50.1", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", diff --git a/prisma/migrations/20251229005257_add_ai_description_column/migration.sql b/prisma/migrations/20251229005257_add_ai_description_column/migration.sql new file mode 100644 index 0000000..bc8b690 --- /dev/null +++ b/prisma/migrations/20251229005257_add_ai_description_column/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "combinations" ADD COLUMN "ai_description" TEXT; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml index 648c57f..044d57c 100644 --- a/prisma/migrations/migration_lock.toml +++ b/prisma/migrations/migration_lock.toml @@ -1,3 +1,3 @@ # Please do not edit this file manually # It should be added in your version-control system (e.g., Git) -provider = "postgresql" \ No newline at end of file +provider = "postgresql" diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 6690d87..097da72 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -205,6 +205,7 @@ model Combination { user User @relation(fields: [userId], references: [id]) isAIGenerated Boolean @default(false) @map("is_ai_generated") occasions String[] + aiDescription String? @map("ai_description") @db.Text items CombinationItem[] savedCombinations SavedCombination[] diff --git a/src/modules/ai/ai.service.ts b/src/modules/ai/ai.service.ts index 2a41d1e..fb9f85b 100644 --- a/src/modules/ai/ai.service.ts +++ b/src/modules/ai/ai.service.ts @@ -6,12 +6,12 @@ import { Logger, OnModuleInit, } from '@nestjs/common'; -import { generateObject, generateText, LanguageModel } from 'ai'; +import { generateObject, generateText, LanguageModel, Output, Tool, ToolLoopAgent, ToolSet } from 'ai'; import { Schema } from 'zod'; import aiConfig from './config/ai.config'; import { ConfigType } from '@nestjs/config'; import { AIProviderEnum } from './enums/provider.enum'; -import { createOllama } from 'ollama-ai-provider-v2'; +// import { createOllama } from 'ollama-ai-provider-v2'; import { openai } from '@ai-sdk/openai'; import { createOpenAICompatible } from '@ai-sdk/openai-compatible'; @@ -30,12 +30,12 @@ export class AiService implements OnModuleInit { this.logger.log('Usando Google Gemini', AiService.name); this.textModelAI = google(this.envAI.textModel); break; - case AIProviderEnum.OLLAMA: - this.logger.log('Usando Ollama', AiService.name); - this.textModelAI = createOllama({ - baseURL: this.envAI.url, - }).languageModel(this.envAI.textModel); - break; + // case AIProviderEnum.OLLAMA: + // this.logger.log('Usando Ollama', AiService.name); + // this.textModelAI = createOllama({ + // baseURL: this.envAI.url, + // }).languageModel(this.envAI.textModel); + // break; case AIProviderEnum.OPENAI: this.logger.log('Usando OpenAI', AiService.name); this.textModelAI = openai(this.envAI.textModel); @@ -82,4 +82,15 @@ export class AiService implements OnModuleInit { return textGenerated; } + + async agent(prompt: string, outputSchema: Schema, systemPrompt?: string, tools?: ToolSet) { + const agent = new ToolLoopAgent({ + model: this.textModelAI, + instructions: systemPrompt, + tools, + output: Output.object({schema: outputSchema}), + }) + + return (await agent.generate({prompt})).output; + } } diff --git a/src/modules/wardrobe/controllers/combinations/combinations.controller.spec.ts b/src/modules/wardrobe/controllers/combinations/combinations.controller.spec.ts index 4a52e58..2e709b0 100644 --- a/src/modules/wardrobe/controllers/combinations/combinations.controller.spec.ts +++ b/src/modules/wardrobe/controllers/combinations/combinations.controller.spec.ts @@ -66,6 +66,11 @@ describe('CombinationsController', () => { page: 1, }; + const mockUser = { + id: 'user-123', + role: RoleEnum.USER, + }; + it('should generate combinations successfully', async () => { const expectedResult = { message: 'Combinaciones generadas correctamente', @@ -87,10 +92,10 @@ describe('CombinationsController', () => { expectedResult, ); - const result = await controller.generateCombinations(createDto); + const result = await controller.generateCombinations(createDto, mockUser); expect(result).toEqual(expectedResult); - expect(service.generateCombinations).toHaveBeenCalledWith(createDto); + expect(service.generateCombinations).toHaveBeenCalledWith(createDto, 'user-123'); expect(service.generateCombinations).toHaveBeenCalledTimes(1); }); @@ -100,7 +105,7 @@ describe('CombinationsController', () => { data: {}, }); - await controller.generateCombinations(createDto); + await controller.generateCombinations(createDto, mockUser); expect(service.generateCombinations).toHaveBeenCalledWith( expect.objectContaining({ @@ -109,6 +114,7 @@ describe('CombinationsController', () => { occasions: createDto.occasions, description: createDto.description, }), + mockUser.id, ); }); }); @@ -119,9 +125,10 @@ describe('CombinationsController', () => { description: 'A casual outfit', occasions: ['Casual'], isAIGenerated: true, + explanation: 'This is a great combination', combinationItems: [ - { wardrobeItemId: 'item-1', explanation: 'Perfect shirt' }, - { wardrobeItemId: 'item-2', explanation: 'Nice pants' }, + { wardrobeItemId: 'item-1' }, + { wardrobeItemId: 'item-2' }, ], }; @@ -325,8 +332,8 @@ describe('CombinationsController', () => { const addItemsDto: AddItemsToCombinationDto = { combinationId: 'comb-1', combinationItems: [ - { wardrobeItemId: 'item-1', explanation: 'Nice shirt' }, - { wardrobeItemId: 'item-2', explanation: 'Good pants' }, + { wardrobeItemId: 'item-1' }, + { wardrobeItemId: 'item-2' }, ], }; @@ -367,7 +374,7 @@ describe('CombinationsController', () => { const singleItemDto = { combinationId: 'comb-1', combinationItems: [ - { wardrobeItemId: 'item-1', explanation: 'Nice shirt' }, + { wardrobeItemId: 'item-1' }, ], }; diff --git a/src/modules/wardrobe/controllers/combinations/combinations.controller.ts b/src/modules/wardrobe/controllers/combinations/combinations.controller.ts index 3cde471..1a21efc 100644 --- a/src/modules/wardrobe/controllers/combinations/combinations.controller.ts +++ b/src/modules/wardrobe/controllers/combinations/combinations.controller.ts @@ -46,8 +46,8 @@ export class CombinationsController { 'Genera combinaciones de prendas a partir de una lista de prendas base y categorías seleccionadas. Estas combinaciones no se guardan automaticamente', operationId: 'generateCombinations', }) - async generateCombinations(@Body() payload: CreateCombinationDto) { - return this.combinationsService.generateCombinations(payload); + async generateCombinations(@Body() payload: CreateCombinationDto, @CurrentSession() user: InfoUserInterface) { + return this.combinationsService.generateCombinations(payload, user.id); } @Post('save') diff --git a/src/modules/wardrobe/dtos/combinations.dto.ts b/src/modules/wardrobe/dtos/combinations.dto.ts index febea93..3cba741 100644 --- a/src/modules/wardrobe/dtos/combinations.dto.ts +++ b/src/modules/wardrobe/dtos/combinations.dto.ts @@ -59,11 +59,6 @@ class CombinationItemDto { @ApiProperty() @IsString() wardrobeItemId: string; - - @ApiProperty() - @IsString() - @IsOptional() - explanation: string; } export class SaveCombinationDto extends PickType(CreateCombinationDto, [ @@ -82,6 +77,11 @@ export class SaveCombinationDto extends PickType(CreateCombinationDto, [ @IsArray() @Type(() => CombinationItemDto) combinationItems: CombinationItemDto[]; + + @ApiProperty() + @IsString() + @IsOptional() + explanation: string; } export class AddItemsToCombinationDto extends PickType(SaveCombinationDto, [ diff --git a/src/modules/wardrobe/prompts/combinations.prompts.ts b/src/modules/wardrobe/prompts/combinations.prompts.ts index 256e21e..036aceb 100644 --- a/src/modules/wardrobe/prompts/combinations.prompts.ts +++ b/src/modules/wardrobe/prompts/combinations.prompts.ts @@ -76,7 +76,7 @@ ${encode(clothingItemsBase)} ${encode(clothingItems)} # Categories: -${encode(categories)}$ +${encode(categories)} # Occasions: ${encode(occasions)} diff --git a/src/modules/wardrobe/services/combinations.service.spec.ts b/src/modules/wardrobe/services/combinations.service.spec.ts index 8417522..7f6dc0b 100644 --- a/src/modules/wardrobe/services/combinations.service.spec.ts +++ b/src/modules/wardrobe/services/combinations.service.spec.ts @@ -54,6 +54,7 @@ describe('CombinationsService', () => { const mockAiService = { generateJSON: jest.fn(), + agent: jest.fn(), }; const mockMultimediaService = { @@ -103,6 +104,7 @@ describe('CombinationsService', () => { }); describe('generateCombinations', () => { + const userId = 'user-123'; const createCombinationDto: CreateCombinationDto = { clothingItemsBase: ['item-1', 'item-2'], categories: ['cat-1', 'cat-2'], @@ -127,26 +129,29 @@ describe('CombinationsService', () => { }, ]; + const mockCombinationItems = [ + { + id: 'item-2', + name: 'Black Pants', + description: 'Black pants', + season: 'All', + primaryColor: '#000000', + secondaryColor: null, + style: 'Formal', + material: 'Polyester', + size: 'M', + categories: [{ category: { id: 'cat-2' } }], + }, + ]; + const mockCategories = [ { id: 'cat-1', name: 'Shirts', - wardrobeItems: [ - { - wardrobeItem: { - id: 'item-2', - name: 'Black Pants', - description: 'Black pants', - season: 'All', - primaryColor: '#000000', - secondaryColor: null, - style: 'Formal', - material: 'Polyester', - size: 'M', - categories: [{ id: 'cat-2' }], - }, - }, - ], + }, + { + id: 'cat-2', + name: 'Pants', }, ]; @@ -156,9 +161,12 @@ describe('CombinationsService', () => { }; it('should generate combinations successfully', async () => { - mockPrismaService.wardrobeItem.findMany.mockResolvedValue(mockBaseItems); + // First call returns base items, second call returns combination items + mockPrismaService.wardrobeItem.findMany + .mockResolvedValueOnce(mockBaseItems) + .mockResolvedValueOnce(mockCombinationItems); mockPrismaService.category.findMany.mockResolvedValue(mockCategories); - mockAiService.generateJSON.mockResolvedValue(mockAiResponse); + mockAiService.agent.mockResolvedValue(mockAiResponse); mockPrismaService.wardrobeItem.findUniqueOrThrow.mockResolvedValue({ id: 'item-1', name: 'Blue Shirt', @@ -170,62 +178,55 @@ describe('CombinationsService', () => { 'http://example.com/image.jpg', ); - const result = await service.generateCombinations(createCombinationDto); + const result = await service.generateCombinations(createCombinationDto, userId); expect(result.message).toBe('Combinaciones generadas correctamente'); expect(result.data.explanation).toBe('This is a great casual outfit'); expect(result.data.items).toHaveLength(2); - expect(mockAiService.generateJSON).toHaveBeenCalled(); + expect(mockAiService.agent).toHaveBeenCalled(); }); it('should handle AI service errors', async () => { - mockPrismaService.wardrobeItem.findMany.mockResolvedValue(mockBaseItems); + mockPrismaService.wardrobeItem.findMany + .mockResolvedValueOnce(mockBaseItems) + .mockResolvedValueOnce(mockCombinationItems); mockPrismaService.category.findMany.mockResolvedValue(mockCategories); - mockAiService.generateJSON.mockRejectedValue(new Error('AI Error')); + mockAiService.agent.mockRejectedValue(new Error('AI Error')); await expect( - service.generateCombinations(createCombinationDto), + service.generateCombinations(createCombinationDto, userId), ).rejects.toThrow(); }); it('should throw InternalServerErrorException if wardrobe item not found during generation', async () => { - mockPrismaService.wardrobeItem.findMany.mockResolvedValue(mockBaseItems); + mockPrismaService.wardrobeItem.findMany + .mockResolvedValueOnce(mockBaseItems) + .mockResolvedValueOnce(mockCombinationItems); mockPrismaService.category.findMany.mockResolvedValue(mockCategories); - mockAiService.generateJSON.mockResolvedValue(mockAiResponse); + mockAiService.agent.mockResolvedValue(mockAiResponse); mockPrismaService.wardrobeItem.findUniqueOrThrow.mockRejectedValue( new Error('Not found'), ); await expect( - service.generateCombinations(createCombinationDto), + service.generateCombinations(createCombinationDto, userId), ).rejects.toThrow(InternalServerErrorException); }); it('should use default take value if not provided', async () => { const dtoWithoutTake = { ...createCombinationDto, take: undefined }; - mockPrismaService.wardrobeItem.findMany.mockResolvedValue(mockBaseItems); - mockPrismaService.category.findMany.mockResolvedValue([ - { - ...mockCategories[0], - wardrobeItems: [], - }, - ]); - mockAiService.generateJSON.mockResolvedValue({ + mockPrismaService.wardrobeItem.findMany + .mockResolvedValueOnce(mockBaseItems) + .mockResolvedValueOnce(mockCombinationItems); + mockPrismaService.category.findMany.mockResolvedValue(mockCategories); + mockAiService.agent.mockResolvedValue({ outfitRecommendation: [], overallExplanation: 'Test', }); - await service.generateCombinations(dtoWithoutTake); + await service.generateCombinations(dtoWithoutTake, userId); - expect(mockPrismaService.category.findMany).toHaveBeenCalledWith( - expect.objectContaining({ - select: expect.objectContaining({ - wardrobeItems: expect.objectContaining({ - take: 5, - }), - }), - }), - ); + expect(mockPrismaService.wardrobeItem.findMany).toHaveBeenCalledTimes(2); }); }); @@ -236,9 +237,10 @@ describe('CombinationsService', () => { description: 'A casual outfit', occasions: ['Casual'], isAIGenerated: true, + explanation: 'This is a great combination', combinationItems: [ - { wardrobeItemId: 'item-1', explanation: 'Perfect shirt' }, - { wardrobeItemId: 'item-2', explanation: 'Nice pants' }, + { wardrobeItemId: 'item-1' }, + { wardrobeItemId: 'item-2' }, ], }; @@ -428,8 +430,8 @@ describe('CombinationsService', () => { const addItemsDto: AddItemsToCombinationDto = { combinationId: 'comb-1', combinationItems: [ - { wardrobeItemId: 'item-1', explanation: 'Nice shirt' }, - { wardrobeItemId: 'item-2', explanation: 'Good pants' }, + { wardrobeItemId: 'item-1' }, + { wardrobeItemId: 'item-2' }, ], }; diff --git a/src/modules/wardrobe/services/combinations.service.ts b/src/modules/wardrobe/services/combinations.service.ts index 5dba9ee..d64227d 100644 --- a/src/modules/wardrobe/services/combinations.service.ts +++ b/src/modules/wardrobe/services/combinations.service.ts @@ -27,7 +27,7 @@ export class CombinationsService { private multimediaService: MultimediaService, ) {} - async generateCombinations(payload: CreateCombinationDto) { + async generateCombinations(payload: CreateCombinationDto, userId: string) { const itemsBase: ClothingItem[] = await this.db.wardrobeItem.findMany({ where: { id: { @@ -52,57 +52,60 @@ export class CombinationsService { }, }); - const combinationsItems = await this.db.category.findMany({ + const combinationsItems = await this.db.wardrobeItem.findMany({ where: { - id: { - in: payload.categories, + categories: { + some: { + categoryId: { + in: payload.categories, + }, + }, }, + user: { + id: userId, + } }, select: { id: true, name: true, - wardrobeItems: { + description: true, + season: true, + primaryColor: true, + secondaryColor: true, + style: true, + material: true, + size: true, + categories: { select: { - wardrobeItem: { + category: { select: { id: true, - name: true, - description: true, - season: true, - primaryColor: true, - secondaryColor: true, - style: true, - material: true, - size: true, - categories: { - select: { - id: true, - }, - }, - }, - }, - }, - take: payload.take ?? 5, - skip: payload.page ? (payload.page - 1) * (payload.take ?? 5) : 0, - where: { - status: true, - wardrobeItem: { - status: true, - }, + } + } }, }, + } + }); + + const categories = await this.db.category.findMany({ + where: { + id: { + in: payload.categories, + }, + }, + select: { + id: true, + name: true, }, }); - const categories = combinationsItems.map((category) => ({ - id: category.id, - name: category.name, + const items = combinationsItems.map((item) => ({ + ...item, + categories: item.categories.map((category) => ({ + id: category.category.id, + })), })); - const items = combinationsItems.flatMap((category) => - category.wardrobeItems.map((item) => item.wardrobeItem), - ); - const prompt = generateCombinationsPrompt( itemsBase, items, @@ -120,10 +123,9 @@ export class CombinationsService { overallExplanation: z.string(), }); - const combinations = (await this.ai.generateJSON( + const combinations = (await this.ai.agent( prompt, schema, - 0, )) as z.infer; const outfitItems = []; @@ -186,7 +188,7 @@ export class CombinationsService { } async saveCombination(data: SaveCombinationDto, userId: string) { - const { name, description, occasions, isAIGenerated } = data; + const { name, description, occasions, isAIGenerated, explanation } = data; const combination = await this.db.combination .create({ @@ -196,6 +198,7 @@ export class CombinationsService { occasions, isAIGenerated, userId, + aiDescription: explanation, }, select: { id: true, @@ -211,7 +214,6 @@ export class CombinationsService { const combinationItems = data.combinationItems.map((item) => ({ wardrobeItemId: item.wardrobeItemId, - aiDescription: item.explanation, combinationId: combination.id, })); @@ -422,7 +424,6 @@ export class CombinationsService { data: { wardrobeItemId: item.wardrobeItemId, combinationId, - aiDescription: item.explanation, }, }) .catch((error) => { diff --git a/yarn.lock b/yarn.lock index 79c7eba..8a24448 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,46 +2,46 @@ # yarn lockfile v1 -"@ai-sdk/gateway@2.0.21": - version "2.0.21" - resolved "https://registry.yarnpkg.com/@ai-sdk/gateway/-/gateway-2.0.21.tgz#17eb0620352bc81e7d87ee6a8705148c9149029f" - integrity sha512-BwV7DU/lAm3Xn6iyyvZdWgVxgLu3SNXzl5y57gMvkW4nGhAOV5269IrJzQwGt03bb107sa6H6uJwWxc77zXoGA== +"@ai-sdk/gateway@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@ai-sdk/gateway/-/gateway-3.0.2.tgz#0a345ae3c7cf6e9533936dcba2fb7a4664131f19" + integrity sha512-giJEg9ob45htbu3iautK+2kvplY2JnTj7ir4wZzYSQWvqGatWfBBfDuNCU5wSJt9BCGjymM5ZS9ziD42JGCZBw== dependencies: - "@ai-sdk/provider" "2.0.0" - "@ai-sdk/provider-utils" "3.0.19" + "@ai-sdk/provider" "3.0.0" + "@ai-sdk/provider-utils" "4.0.1" "@vercel/oidc" "3.0.5" -"@ai-sdk/google@^2.0.47": - version "2.0.47" - resolved "https://registry.yarnpkg.com/@ai-sdk/google/-/google-2.0.47.tgz#fc981863930faab4b6088d35a80e6de9c3b50af7" - integrity sha512-grIlvzh+jzMoKNOnn5Xe/8fdYiJOs0ThMVetsGzqflvMkUNF3B83t5i0kf4XqiM8MwTJ8gkdOA4VeQOZKR7TkA== +"@ai-sdk/google@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@ai-sdk/google/-/google-3.0.1.tgz#e3fccf4abc08a6a757e52937f0a18b8f01ba65a7" + integrity sha512-gh7i4lEvd1CElmefkq7+RoUhNkhP2OTshzVxSt7/Vh2AV5wTPLhduKJMg1c7SFwErytqffO3el/M/LlfCsqzEw== dependencies: - "@ai-sdk/provider" "2.0.0" - "@ai-sdk/provider-utils" "3.0.19" + "@ai-sdk/provider" "3.0.0" + "@ai-sdk/provider-utils" "4.0.1" -"@ai-sdk/openai-compatible@^1.0.29": - version "1.0.29" - resolved "https://registry.yarnpkg.com/@ai-sdk/openai-compatible/-/openai-compatible-1.0.29.tgz#c3523d3f54e6367ddb3910ebc572b4623e7e6115" - integrity sha512-cZUppWzxjfpNaH1oVZ6U8yDLKKsdGbC9X0Pex8cG9CXhKWSoVLLnW1rKr6tu9jDISK5okjBIW/O1ZzfnbUrtEw== +"@ai-sdk/openai-compatible@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@ai-sdk/openai-compatible/-/openai-compatible-2.0.1.tgz#ade97084121e55778454d1ad3753eb932e21d4d4" + integrity sha512-6tfF6YAREdECPHqQ4ydZFQyY6AiwRc+MHZPbwx2HGsLBTPQXtImLO+iew/pB9XjD2G8s4un6PSNYK//Y+jWDcQ== dependencies: - "@ai-sdk/provider" "2.0.0" - "@ai-sdk/provider-utils" "3.0.19" + "@ai-sdk/provider" "3.0.0" + "@ai-sdk/provider-utils" "4.0.1" -"@ai-sdk/openai@^2.0.88": - version "2.0.88" - resolved "https://registry.yarnpkg.com/@ai-sdk/openai/-/openai-2.0.88.tgz#a03defb85f539ae5d5673fe0edcf1b932fe5736b" - integrity sha512-LlOf83haeZIiRUH1Zw1oEmqUfw5y54227CvndFoBpIkMJwQDGAB3VARUeOJ6iwAWDJjXSz06GdnEnhRU67Yatw== +"@ai-sdk/openai@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@ai-sdk/openai/-/openai-3.0.1.tgz#cff69e454a3595b7a620e9316a022478929af805" + integrity sha512-P+qxz2diOrh8OrpqLRg+E+XIFVIKM3z2kFjABcCJGHjGbXBK88AJqmuKAi87qLTvTe/xn1fhZBjklZg9bTyigw== dependencies: - "@ai-sdk/provider" "2.0.0" - "@ai-sdk/provider-utils" "3.0.19" + "@ai-sdk/provider" "3.0.0" + "@ai-sdk/provider-utils" "4.0.1" -"@ai-sdk/provider-utils@3.0.19": - version "3.0.19" - resolved "https://registry.yarnpkg.com/@ai-sdk/provider-utils/-/provider-utils-3.0.19.tgz#065e4ffe287ec536b882fdcdff0bd38c250a4873" - integrity sha512-W41Wc9/jbUVXVwCN/7bWa4IKe8MtxO3EyA0Hfhx6grnmiYlCvpI8neSYWFE0zScXJkgA/YK3BRybzgyiXuu6JA== +"@ai-sdk/provider-utils@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@ai-sdk/provider-utils/-/provider-utils-4.0.1.tgz#6102fe98138021cd7196b2cdc1ce33f7f956426b" + integrity sha512-de2v8gH9zj47tRI38oSxhQIewmNc+OZjYIOOaMoVWKL65ERSav2PYYZHPSPCrfOeLMkv+Dyh8Y0QGwkO29wMWQ== dependencies: - "@ai-sdk/provider" "2.0.0" - "@standard-schema/spec" "^1.0.0" + "@ai-sdk/provider" "3.0.0" + "@standard-schema/spec" "^1.1.0" eventsource-parser "^3.0.6" "@ai-sdk/provider-utils@^3.0.17": @@ -60,6 +60,13 @@ dependencies: json-schema "^0.4.0" +"@ai-sdk/provider@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@ai-sdk/provider/-/provider-3.0.0.tgz#de5b60ae8570177604048e79edf4a032c92851e6" + integrity sha512-m9ka3ptkPQbaHHZHqDXDF9C9B5/Mav0KTdky1k2HZ3/nrW2t1AgObxIVPyGDWQNS9FXT/FS6PIoSjpcP/No8rQ== + dependencies: + json-schema "^0.4.0" + "@ampproject/remapping@^2.2.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" @@ -556,6 +563,11 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@borewit/text-codec@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@borewit/text-codec/-/text-codec-0.1.1.tgz#7e7f27092473d5eabcffef693a849f2cc48431da" + integrity sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA== + "@cacheable/memory@^2.0.6": version "2.0.6" resolved "https://registry.yarnpkg.com/@cacheable/memory/-/memory-2.0.6.tgz#de6679d26ffcfa1674c4bb40b97815b0f67839d5" @@ -716,10 +728,10 @@ resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-3.1.1.tgz#af3aea7f1e52ec916d8b5c9dcc0f09d4c060a3fc" integrity sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw== -"@fastify/cors@11.1.0": - version "11.1.0" - resolved "https://registry.yarnpkg.com/@fastify/cors/-/cors-11.1.0.tgz#09f79748f08f147d19cfc3f1807b59791bc77cf0" - integrity sha512-sUw8ed8wP2SouWZTIbA7V2OQtMNpLj2W6qJOYhNdcmINTu6gsxVYXjQiM9mdi8UUDlcoDDJ/W2syPo1WB2QjYA== +"@fastify/cors@11.2.0": + version "11.2.0" + resolved "https://registry.yarnpkg.com/@fastify/cors/-/cors-11.2.0.tgz#82c47aff9bd7dfd40ac0a66fcd87a034113dcdd8" + integrity sha512-LbLHBuSAdGdSFZYTLVA3+Ch2t+sA6nq3Ejc6XLAKiQ6ViS2qFnvicpj0htsx03FyYeLs04HfRNBsz/a8SvbcUw== dependencies: fastify-plugin "^5.0.0" toad-cache "^3.7.0" @@ -2212,10 +2224,10 @@ "@nestjs/bull-shared" "^11.0.4" tslib "2.8.1" -"@nestjs/cache-manager@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@nestjs/cache-manager/-/cache-manager-3.0.1.tgz#893abd4fb8450d2fe6c6692bd71688c45b2d5128" - integrity sha512-4UxTnR0fsmKL5YDalU2eLFVnL+OBebWUpX+hEduKGncrVKH4PPNoiRn1kXyOCjmzb0UvWgqubpssNouc8e0MCw== +"@nestjs/cache-manager@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@nestjs/cache-manager/-/cache-manager-3.1.0.tgz#65f3be68154e48557790c0a58a55aadb92439dd0" + integrity sha512-pEIqYZrBcE8UdkJmZRduurvoUfdU+3kRPeO1R2muiMbZnRuqlki5klFFNllO9LyYWzrx98bd1j0PSPKSJk1Wbw== "@nestjs/cli@^11.0.14": version "11.0.14" @@ -2241,13 +2253,13 @@ webpack "5.103.0" webpack-node-externals "3.0.0" -"@nestjs/common@^11.1.9": - version "11.1.9" - resolved "https://registry.yarnpkg.com/@nestjs/common/-/common-11.1.9.tgz#8b8a29931040b6c65943337b3ca9cdf42dc31282" - integrity sha512-zDntUTReRbAThIfSp3dQZ9kKqI+LjgLp5YZN5c1bgNRDuoeLySAoZg46Bg1a+uV8TMgIRziHocglKGNzr6l+bQ== +"@nestjs/common@^11.1.10": + version "11.1.10" + resolved "https://registry.yarnpkg.com/@nestjs/common/-/common-11.1.10.tgz#c6cf6cc852fcb00bb4fc1e99cd7dc60358dd15e3" + integrity sha512-NoBzJFtq1bzHGia5Q5NO1pJNpx530nupbEu/auCWOFCGL5y8Zo8kiG28EXTCDfIhQgregEtn1Cs6H8WSLUC8kg== dependencies: uid "2.0.2" - file-type "21.1.0" + file-type "21.1.1" iterare "1.2.1" load-esm "1.0.3" tslib "2.8.1" @@ -2261,10 +2273,10 @@ dotenv-expand "12.0.1" lodash "4.17.21" -"@nestjs/core@^11.1.9": - version "11.1.9" - resolved "https://registry.yarnpkg.com/@nestjs/core/-/core-11.1.9.tgz#7a77ded789709e194c4f118e3d9bf5182136b076" - integrity sha512-a00B0BM4X+9z+t3UxJqIZlemIwCQdYoPKrMcM+ky4z3pkqqG1eTWexjs+YXpGObnLnjtMPVKWlcZHp3adDYvUw== +"@nestjs/core@^11.1.10": + version "11.1.10" + resolved "https://registry.yarnpkg.com/@nestjs/core/-/core-11.1.10.tgz#c07f602fe270a28a2a77cfc4c7a93badea582a70" + integrity sha512-LYpaacSb8X9dcRpeZxA7Mvi5Aozv11s6028ZNoVKY2j/fyThLd+xrkksg3u+sw7F8mipFaxS/LuVpoHQ/MrACg== dependencies: uid "2.0.2" "@nuxt/opencollective" "0.4.1" @@ -2291,23 +2303,23 @@ resolved "https://registry.yarnpkg.com/@nestjs/passport/-/passport-11.0.5.tgz#dd3e506c2fb7ddc80fd1321c01cc1a0ca6d6b609" integrity sha512-ulQX6mbjlws92PIM15Naes4F4p2JoxGnIJuUsdXQPT+Oo2sqQmENEZXM7eYuimocfHnKlcfZOuyzbA33LwUlOQ== -"@nestjs/platform-express@^11.1.9": - version "11.1.9" - resolved "https://registry.yarnpkg.com/@nestjs/platform-express/-/platform-express-11.1.9.tgz#f3a8c0e0aba6f90584812c9ec1e2025563187b50" - integrity sha512-GVd3+0lO0mJq2m1kl9hDDnVrX3Nd4oH3oDfklz0pZEVEVS0KVSp63ufHq2Lu9cyPdSBuelJr9iPm2QQ1yX+Kmw== +"@nestjs/platform-express@^11.1.10": + version "11.1.10" + resolved "https://registry.yarnpkg.com/@nestjs/platform-express/-/platform-express-11.1.10.tgz#c8f12b307d7245b595c28cc98b36290ca23974c3" + integrity sha512-B2kvhfY+pE41Y6MXuJs80T7yfYjXzqHkWVyZJ5CAa3nFN3X2OIca6RH+b+7l3wZ+4x1tgsv48Q2P8ZfrDqJWYQ== dependencies: cors "2.8.5" - express "5.1.0" + express "5.2.1" multer "2.0.2" path-to-regexp "8.3.0" tslib "2.8.1" -"@nestjs/platform-fastify@^11.1.9": - version "11.1.9" - resolved "https://registry.yarnpkg.com/@nestjs/platform-fastify/-/platform-fastify-11.1.9.tgz#150745fbe2f1af8d0ed5224e4f1ca2f1124448c3" - integrity sha512-OOCyg36CP+WrJn7KIk1E/XdCPegcIdH5zi2txwqUtQNshl6c0VWv+8qotyOncPwEFuiOgnn3fuGveQj7DPNKgA== +"@nestjs/platform-fastify@^11.1.10": + version "11.1.10" + resolved "https://registry.yarnpkg.com/@nestjs/platform-fastify/-/platform-fastify-11.1.10.tgz#c9f9347f9496783b6895aa6c63f27cf942b70ec9" + integrity sha512-9k26jaDZkq42SaH5/cCsPShd6XeCAuGFF8U63n2lQJwOA8nBmIIGjWy1RDFy+8qFVW0C0DaDdbUPQR5aL274fw== dependencies: - "@fastify/cors" "11.1.0" + "@fastify/cors" "11.2.0" "@fastify/formbody" "8.0.2" "@fastify/middie" "9.0.3" fast-querystring "1.1.2" @@ -2358,10 +2370,10 @@ boxen "5.1.2" check-disk-space "3.4.0" -"@nestjs/testing@^11.1.9": - version "11.1.9" - resolved "https://registry.yarnpkg.com/@nestjs/testing/-/testing-11.1.9.tgz#f94fbd1042936a9f1f577a32dba76dbc4fa4ec94" - integrity sha512-UFxerBDdb0RUNxQNj25pvkvNE7/vxKhXYWBt3QuwBFnYISzRIzhVlyIqLfoV5YI3zV0m0Nn4QAn1KM0zzwfEng== +"@nestjs/testing@^11.1.10": + version "11.1.10" + resolved "https://registry.yarnpkg.com/@nestjs/testing/-/testing-11.1.10.tgz#09105b13484601d79147c3bd032ce6551bd5178d" + integrity sha512-MiH1Cjtx84ceO/aCwcbuweJXnxpPzD7Qo2Ofiz2CIBy+YhH4u+NeGpGiqfoeEBOEEULQs1IaW2IbiPua7ChoYg== dependencies: tslib "2.8.1" @@ -2567,6 +2579,11 @@ resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.0.0.tgz#f193b73dc316c4170f2e82a881da0f550d551b9c" integrity sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA== +"@standard-schema/spec@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8" + integrity sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w== + "@swc/cli@^0.7.9": version "0.7.9" resolved "https://registry.yarnpkg.com/@swc/cli/-/cli-0.7.9.tgz#67615740ccd3bf2ed807ce24fffef502906ba939" @@ -2582,74 +2599,74 @@ source-map "^0.7.3" tinyglobby "^0.2.13" -"@swc/core-darwin-arm64@1.15.5": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.5.tgz#573ac681f407ba04baf2e87a52887761a97ee9ac" - integrity sha512-RvdpUcXrIz12yONzOdQrJbEnq23cOc2IHOU1eB8kPxPNNInlm4YTzZEA3zf3PusNpZZLxwArPVLCg0QsFQoTYw== - -"@swc/core-darwin-x64@1.15.5": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.5.tgz#f1a71d1ce71cf10b7cb77b9859662a4746ece5d4" - integrity sha512-ufJnz3UAff/8G5OfqZZc5cTQfGtXyXVLTB8TGT0xjkvEbfFg8jZUMDBnZT/Cn0k214JhMjiLCNl0A8aY/OKsYQ== - -"@swc/core-linux-arm-gnueabihf@1.15.5": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.5.tgz#f8e2bffcb6320bfd064e81d9f48a97ffd6266d64" - integrity sha512-Yqu92wIT0FZKLDWes+69kBykX97hc8KmnyFwNZGXJlbKUGIE0hAIhbuBbcY64FGSwey4aDWsZ7Ojk89KUu9Kzw== - -"@swc/core-linux-arm64-gnu@1.15.5": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.5.tgz#7fb5bfc010615882b49bba01786a53cf7f2cbeb7" - integrity sha512-3gR3b5V1abe/K1GpD0vVyZgqgV+ykuB5QNecDYzVroX4QuN+amCzQaNSsVM8Aj6DbShQCBTh3hGHd2f3vZ8gCw== - -"@swc/core-linux-arm64-musl@1.15.5": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.5.tgz#b2e60c531d33678b6cd2df6f4bf31770b07d23e6" - integrity sha512-Of+wmVh5h47tTpN9ghHVjfL0CJrgn99XmaJjmzWFW7agPdVY6gTDgkk6zQ6q4hcDQ7hXb0BGw6YFpuanBzNPow== - -"@swc/core-linux-x64-gnu@1.15.5": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.5.tgz#522b522a6bdde5b087660408ee08e9d71ef11228" - integrity sha512-98kuPS0lZVgjmc/2uTm39r1/OfwKM0PM13ZllOAWi5avJVjRd/j1xA9rKeUzHDWt+ocH9mTCQsAT1jjKSq45bg== - -"@swc/core-linux-x64-musl@1.15.5": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.5.tgz#d61b19ac6ae94542b8b914159fbb5878bff9b844" - integrity sha512-Rk+OtNQP3W/dZExL74LlaakXAQn6/vbrgatmjFqJPO4RZkq+nLo5g7eDUVjyojuERh7R2yhqNvZ/ZZQe8JQqqA== - -"@swc/core-win32-arm64-msvc@1.15.5": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.5.tgz#2ecfcb5f1de0719d8071b9c147c1c1769b642660" - integrity sha512-e3RTdJ769+PrN25iCAlxmsljEVu6iIWS7sE21zmlSiipftBQvSAOWuCDv2A8cH9lm5pSbZtwk8AUpIYCNsj2oQ== - -"@swc/core-win32-ia32-msvc@1.15.5": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.5.tgz#697048780658f06259fe37099c7d1ecbc551f3f3" - integrity sha512-NmOdl6kyAw6zMz36zCdopTgaK2tcLA53NhUsTRopBc/796Fp87XdsslRHglybQ1HyXIGOQOKv2Y14IUbeci4BA== - -"@swc/core-win32-x64-msvc@1.15.5": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.5.tgz#a70e269c0c07ecfcaf5e085be64d721e139ca8eb" - integrity sha512-EPXJRf0A8eOi8woXf/qgVIWRl9yeSl0oN1ykGZNCGI7oElsfxUobJFmpJFJoVqKFfd1l0c+GPmWsN2xavTFkNw== - -"@swc/core@^1.15.5": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.15.5.tgz#4c17427f615103348008173bad4756112106a1f2" - integrity sha512-VRy+AEO0zqUkwV9uOgqXtdI5tNj3y3BZI+9u28fHNjNVTtWYVNIq3uYhoGgdBOv7gdzXlqfHKuxH5a9IFAvopQ== +"@swc/core-darwin-arm64@1.15.7": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.7.tgz#b7ac4660d2d4df324f4f5a6f58a0c3d44d71ff1c" + integrity sha512-+hNVUfezUid7LeSHqnhoC6Gh3BROABxjlDNInuZ/fie1RUxaEX4qzDwdTgozJELgHhvYxyPIg1ro8ibnKtgO4g== + +"@swc/core-darwin-x64@1.15.7": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.7.tgz#4500d361b389459e32a5acacf89426d4865761c2" + integrity sha512-ZAFuvtSYZTuXPcrhanaD5eyp27H8LlDzx2NAeVyH0FchYcuXf0h5/k3GL9ZU6Jw9eQ63R1E8KBgpXEJlgRwZUQ== + +"@swc/core-linux-arm-gnueabihf@1.15.7": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.7.tgz#2f7a8dcdf1880a03f38f0a4a2814a254bdf07684" + integrity sha512-K3HTYocpqnOw8KcD8SBFxiDHjIma7G/X+bLdfWqf+qzETNBrzOub/IEkq9UaeupaJiZJkPptr/2EhEXXWryS/A== + +"@swc/core-linux-arm64-gnu@1.15.7": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.7.tgz#dba63e6a5ae6139588312049f1897208c2d94c14" + integrity sha512-HCnVIlsLnCtQ3uXcXgWrvQ6SAraskLA9QJo9ykTnqTH6TvUYqEta+TdTdGjzngD6TOE7XjlAiUs/RBtU8Z0t+Q== + +"@swc/core-linux-arm64-musl@1.15.7": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.7.tgz#f23572b6d2f6d18e691111f1f238d32861e22528" + integrity sha512-/OOp9UZBg4v2q9+x/U21Jtld0Wb8ghzBScwhscI7YvoSh4E8RALaJ1msV8V8AKkBkZH7FUAFB7Vbv0oVzZsezA== + +"@swc/core-linux-x64-gnu@1.15.7": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.7.tgz#7efa998cb3199f282583f5055ae3396daba0ba81" + integrity sha512-VBbs4gtD4XQxrHuQ2/2+TDZpPQQgrOHYRnS6SyJW+dw0Nj/OomRqH+n5Z4e/TgKRRbieufipeIGvADYC/90PYQ== + +"@swc/core-linux-x64-musl@1.15.7": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.7.tgz#d5c88a8c367baf9f6b4215e8f6c9eae680451087" + integrity sha512-kVuy2unodso6p0rMauS2zby8/bhzoGRYxBDyD6i2tls/fEYAE74oP0VPFzxIyHaIjK1SN6u5TgvV9MpyJ5xVug== + +"@swc/core-win32-arm64-msvc@1.15.7": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.7.tgz#08e175725f0796337e3299b94b701ebb7bfdc14f" + integrity sha512-uddYoo5Xmo1XKLhAnh4NBIyy5d0xk33x1sX3nIJboFySLNz878ksCFCZ3IBqrt1Za0gaoIWoOSSSk0eNhAc/sw== + +"@swc/core-win32-ia32-msvc@1.15.7": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.7.tgz#6ad4aeff1bd39f0482e905719f8390d53b072854" + integrity sha512-rqq8JjNMLx3QNlh0aPTtN/4+BGLEHC94rj9mkH1stoNRf3ra6IksNHMHy+V1HUqElEgcZyx+0yeXx3eLOTcoFw== + +"@swc/core-win32-x64-msvc@1.15.7": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.7.tgz#52f7d558144cee9a3cc43ba7e6bd8b83a8acae77" + integrity sha512-4BK06EGdPnuplgcNhmSbOIiLdRgHYX3v1nl4HXo5uo4GZMfllXaCyBUes+0ePRfwbn9OFgVhCWPcYYjMT6hycQ== + +"@swc/core@^1.15.7": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.15.7.tgz#630a90c5801c7ed3dfd25d94da6b1eab22e52971" + integrity sha512-kTGB8XI7P+pTKW83tnUEDVP4zduF951u3UAOn5eTi0vyW6MvL56A3+ggMdfuVFtDI0/DsbSzf5z34HVBbuScWw== dependencies: "@swc/counter" "^0.1.3" "@swc/types" "^0.1.25" optionalDependencies: - "@swc/core-darwin-arm64" "1.15.5" - "@swc/core-darwin-x64" "1.15.5" - "@swc/core-linux-arm-gnueabihf" "1.15.5" - "@swc/core-linux-arm64-gnu" "1.15.5" - "@swc/core-linux-arm64-musl" "1.15.5" - "@swc/core-linux-x64-gnu" "1.15.5" - "@swc/core-linux-x64-musl" "1.15.5" - "@swc/core-win32-arm64-msvc" "1.15.5" - "@swc/core-win32-ia32-msvc" "1.15.5" - "@swc/core-win32-x64-msvc" "1.15.5" + "@swc/core-darwin-arm64" "1.15.7" + "@swc/core-darwin-x64" "1.15.7" + "@swc/core-linux-arm-gnueabihf" "1.15.7" + "@swc/core-linux-arm64-gnu" "1.15.7" + "@swc/core-linux-arm64-musl" "1.15.7" + "@swc/core-linux-x64-gnu" "1.15.7" + "@swc/core-linux-x64-musl" "1.15.7" + "@swc/core-win32-arm64-msvc" "1.15.7" + "@swc/core-win32-ia32-msvc" "1.15.7" + "@swc/core-win32-x64-msvc" "1.15.7" "@swc/counter@^0.1.3": version "0.1.3" @@ -2670,14 +2687,13 @@ dependencies: defer-to-connect "^2.0.1" -"@tokenizer/inflate@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@tokenizer/inflate/-/inflate-0.3.1.tgz#f0b9162741e8e4c5fa0c56764a049355ad29e1f4" - integrity sha512-4oeoZEBQdLdt5WmP/hx1KZ6D3/Oid/0cUb2nk4F0pTDAWy+KCH3/EnAkZF/bvckWo8I33EqBm01lIPgmgc8rCA== +"@tokenizer/inflate@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@tokenizer/inflate/-/inflate-0.4.1.tgz#fa6cdb8366151b3cc8426bf9755c1ea03a2fba08" + integrity sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA== dependencies: - debug "^4.4.1" - fflate "^0.8.2" - token-types "^6.0.0" + debug "^4.4.3" + token-types "^6.1.1" "@tokenizer/token@^0.3.0": version "0.3.0" @@ -3034,100 +3050,100 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^8.50.0": - version "8.50.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.50.0.tgz#a6ce899690542e2affa9543306d2d3935740abb7" - integrity sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg== +"@typescript-eslint/eslint-plugin@^8.50.1": + version "8.50.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.50.1.tgz#b56e422fb82eb40fae04905f1444aef0298b634b" + integrity sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.50.0" - "@typescript-eslint/type-utils" "8.50.0" - "@typescript-eslint/utils" "8.50.0" - "@typescript-eslint/visitor-keys" "8.50.0" + "@typescript-eslint/scope-manager" "8.50.1" + "@typescript-eslint/type-utils" "8.50.1" + "@typescript-eslint/utils" "8.50.1" + "@typescript-eslint/visitor-keys" "8.50.1" ignore "^7.0.0" natural-compare "^1.4.0" ts-api-utils "^2.1.0" -"@typescript-eslint/parser@^8.50.0": - version "8.50.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.50.0.tgz#c35b28f686dbe08e81b9d6208ebc08912549f4ba" - integrity sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q== +"@typescript-eslint/parser@^8.50.1": + version "8.50.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.50.1.tgz#9772760c0c4090ba3e8b43c796128ff88aff345c" + integrity sha512-hM5faZwg7aVNa819m/5r7D0h0c9yC4DUlWAOvHAtISdFTc8xB86VmX5Xqabrama3wIPJ/q9RbGS1worb6JfnMg== dependencies: - "@typescript-eslint/scope-manager" "8.50.0" - "@typescript-eslint/types" "8.50.0" - "@typescript-eslint/typescript-estree" "8.50.0" - "@typescript-eslint/visitor-keys" "8.50.0" + "@typescript-eslint/scope-manager" "8.50.1" + "@typescript-eslint/types" "8.50.1" + "@typescript-eslint/typescript-estree" "8.50.1" + "@typescript-eslint/visitor-keys" "8.50.1" debug "^4.3.4" -"@typescript-eslint/project-service@8.50.0": - version "8.50.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.50.0.tgz#1422366b7cc11fef8c6d87770884e608093423a4" - integrity sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ== +"@typescript-eslint/project-service@8.50.1": + version "8.50.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.50.1.tgz#3176e55ac2907638f4b8d43da486c864934adc8d" + integrity sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg== dependencies: - "@typescript-eslint/tsconfig-utils" "^8.50.0" - "@typescript-eslint/types" "^8.50.0" + "@typescript-eslint/tsconfig-utils" "^8.50.1" + "@typescript-eslint/types" "^8.50.1" debug "^4.3.4" -"@typescript-eslint/scope-manager@8.50.0": - version "8.50.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.50.0.tgz#e0d6c838dc9044bc679724611b138cb34c81bddf" - integrity sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A== +"@typescript-eslint/scope-manager@8.50.1": + version "8.50.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.50.1.tgz#4a7cd64bcd45990865bdb2bedcacbfeccbd08193" + integrity sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw== dependencies: - "@typescript-eslint/types" "8.50.0" - "@typescript-eslint/visitor-keys" "8.50.0" + "@typescript-eslint/types" "8.50.1" + "@typescript-eslint/visitor-keys" "8.50.1" -"@typescript-eslint/tsconfig-utils@8.50.0", "@typescript-eslint/tsconfig-utils@^8.50.0": - version "8.50.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.50.0.tgz#5c17537ad4c8a13bf6d7393035edaf91a1e13191" - integrity sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w== +"@typescript-eslint/tsconfig-utils@8.50.1", "@typescript-eslint/tsconfig-utils@^8.50.1": + version "8.50.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.50.1.tgz#ee4894bec14ef13db305d0323b14b109d996f116" + integrity sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw== -"@typescript-eslint/type-utils@8.50.0": - version "8.50.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.50.0.tgz#feb6f54f876980a258b14f1cb033f54fc545d37b" - integrity sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw== +"@typescript-eslint/type-utils@8.50.1": + version "8.50.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.50.1.tgz#7bbc79baa03aee6e3b3faf14bb0b8a78badb2370" + integrity sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg== dependencies: - "@typescript-eslint/types" "8.50.0" - "@typescript-eslint/typescript-estree" "8.50.0" - "@typescript-eslint/utils" "8.50.0" + "@typescript-eslint/types" "8.50.1" + "@typescript-eslint/typescript-estree" "8.50.1" + "@typescript-eslint/utils" "8.50.1" debug "^4.3.4" ts-api-utils "^2.1.0" -"@typescript-eslint/types@8.50.0", "@typescript-eslint/types@^8.50.0": - version "8.50.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.50.0.tgz#ad8f1ad88ae0096f548c9cdf60da9b92832db96e" - integrity sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w== +"@typescript-eslint/types@8.50.1", "@typescript-eslint/types@^8.50.1": + version "8.50.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.50.1.tgz#43d19e99613788e0715f799a29f139981bcd8385" + integrity sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA== -"@typescript-eslint/typescript-estree@8.50.0": - version "8.50.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.50.0.tgz#2871d36617f81a127db905fa91b16d1a0251411b" - integrity sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ== +"@typescript-eslint/typescript-estree@8.50.1": + version "8.50.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.50.1.tgz#ce273e584694fa5bd34514fcfbea51fe1d79e271" + integrity sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ== dependencies: - "@typescript-eslint/project-service" "8.50.0" - "@typescript-eslint/tsconfig-utils" "8.50.0" - "@typescript-eslint/types" "8.50.0" - "@typescript-eslint/visitor-keys" "8.50.0" + "@typescript-eslint/project-service" "8.50.1" + "@typescript-eslint/tsconfig-utils" "8.50.1" + "@typescript-eslint/types" "8.50.1" + "@typescript-eslint/visitor-keys" "8.50.1" debug "^4.3.4" minimatch "^9.0.4" semver "^7.6.0" tinyglobby "^0.2.15" ts-api-utils "^2.1.0" -"@typescript-eslint/utils@8.50.0": - version "8.50.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.50.0.tgz#107f20a5747eab5db988c5f6ad462b59851cdd1f" - integrity sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg== +"@typescript-eslint/utils@8.50.1": + version "8.50.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.50.1.tgz#054db870952e7526c3cf2162a2ff6e9434e544d0" + integrity sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ== dependencies: "@eslint-community/eslint-utils" "^4.7.0" - "@typescript-eslint/scope-manager" "8.50.0" - "@typescript-eslint/types" "8.50.0" - "@typescript-eslint/typescript-estree" "8.50.0" + "@typescript-eslint/scope-manager" "8.50.1" + "@typescript-eslint/types" "8.50.1" + "@typescript-eslint/typescript-estree" "8.50.1" -"@typescript-eslint/visitor-keys@8.50.0": - version "8.50.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.50.0.tgz#79d1c95474e08f844dbe13370715cfb9b7e21363" - integrity sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q== +"@typescript-eslint/visitor-keys@8.50.1": + version "8.50.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.50.1.tgz#13b9d43b7567862faca69527580b9adda1a5c9fd" + integrity sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ== dependencies: - "@typescript-eslint/types" "8.50.0" + "@typescript-eslint/types" "8.50.1" eslint-visitor-keys "^4.2.1" "@ungap/structured-clone@^1.3.0": @@ -3511,14 +3527,14 @@ acorn@^8.15.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== -ai@^5.0.114: - version "5.0.114" - resolved "https://registry.yarnpkg.com/ai/-/ai-5.0.114.tgz#6a41fc4a49c5c94ef535cbbeda2787a341936304" - integrity sha512-q/lxcJA6avYn/TXTaE41VX6p9lN245mDU9bIGuPpfk6WxDMvmMoUKUIS0/aXAPYN3UmkUn/r9rvq/8C98RoCWw== +ai@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/ai/-/ai-6.0.3.tgz#6fa7f59a0cac12ca46b3abea5ca1cdf57c3b43bf" + integrity sha512-OOo+/C+sEyscoLnbY3w42vjQDICioVNyS+F+ogwq6O5RJL/vgWGuiLzFwuP7oHTeni/MkmX8tIge48GTdaV7QQ== dependencies: - "@ai-sdk/gateway" "2.0.21" - "@ai-sdk/provider" "2.0.0" - "@ai-sdk/provider-utils" "3.0.19" + "@ai-sdk/gateway" "3.0.2" + "@ai-sdk/provider" "3.0.0" + "@ai-sdk/provider-utils" "4.0.1" "@opentelemetry/api" "1.9.0" ajv-formats@3.0.1, ajv-formats@^3.0.1: @@ -3819,20 +3835,20 @@ block-stream2@^2.1.0: dependencies: readable-stream "^3.4.0" -body-parser@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-2.2.0.tgz#f7a9656de305249a715b549b7b8fd1ab9dfddcfa" - integrity sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg== +body-parser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-2.2.1.tgz#6df606b0eb0a6e3f783dde91dde182c24c82438c" + integrity sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw== dependencies: bytes "^3.1.2" content-type "^1.0.5" - debug "^4.4.0" + debug "^4.4.3" http-errors "^2.0.0" - iconv-lite "^0.6.3" + iconv-lite "^0.7.0" on-finished "^2.4.1" qs "^6.14.0" - raw-body "^3.0.0" - type-is "^2.0.0" + raw-body "^3.0.1" + type-is "^2.0.1" boxen@5.1.2: version "5.1.2" @@ -3938,18 +3954,18 @@ buffer@^5.2.1, buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -bullmq@^5.66.0: - version "5.66.0" - resolved "https://registry.yarnpkg.com/bullmq/-/bullmq-5.66.0.tgz#44a988f16c9b07b0530a42a7085661f6e7ec28a1" - integrity sha512-LSe8yEiVTllOOq97Q0C/EhczKS5Yd0AUJleGJCIh0cyJE5nWUqEpGC/uZQuuAYniBSoMT8LqwrxE7N5MZVrLoQ== +bullmq@^5.66.4: + version "5.66.4" + resolved "https://registry.yarnpkg.com/bullmq/-/bullmq-5.66.4.tgz#879e4a361267c69c4abd86c52983338e50505dcb" + integrity sha512-y2VRk2z7d1YNI2JQDD7iThoD0X/0iZZ3VEp8lqT5s5U0XDl9CIjXp1LQgmE9EKy6ReHtzmYXS1f328PnUbZGtQ== dependencies: - cron-parser "^4.9.0" - ioredis "^5.8.2" - msgpackr "^1.11.2" - node-abort-controller "^3.1.1" - semver "^7.5.4" - tslib "^2.0.0" - uuid "^11.1.0" + cron-parser "4.9.0" + ioredis "5.8.2" + msgpackr "1.11.5" + node-abort-controller "3.1.1" + semver "7.7.3" + tslib "2.8.1" + uuid "11.1.0" busboy@^1.6.0: version "1.6.0" @@ -3958,7 +3974,7 @@ busboy@^1.6.0: dependencies: streamsearch "^1.1.0" -bytes@3.1.2, bytes@^3.1.2: +bytes@^3.1.2, bytes@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== @@ -4409,7 +4425,7 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cron-parser@^4.9.0: +cron-parser@4.9.0: version "4.9.0" resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-4.9.0.tgz#0340694af3e46a0894978c6f52a6dbb5c0f11ad5" integrity sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q== @@ -4432,7 +4448,7 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3 dependencies: ms "^2.1.3" -debug@^4.3.7, debug@^4.4.1: +debug@^4.3.7, debug@^4.4.3: version "4.4.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== @@ -4512,7 +4528,7 @@ denque@^2.1.0: resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== -depd@2.0.0, depd@^2.0.0: +depd@2.0.0, depd@^2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== @@ -4928,18 +4944,19 @@ expect@30.2.0, expect@^30.0.0: jest-mock "30.2.0" jest-util "30.2.0" -express@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/express/-/express-5.1.0.tgz#d31beaf715a0016f0d53f47d3b4d7acf28c75cc9" - integrity sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA== +express@5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/express/-/express-5.2.1.tgz#8f21d15b6d327f92b4794ecf8cb08a72f956ac04" + integrity sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw== dependencies: accepts "^2.0.0" - body-parser "^2.2.0" + body-parser "^2.2.1" content-disposition "^1.0.0" content-type "^1.0.5" cookie "^0.7.1" cookie-signature "^1.2.1" debug "^4.4.0" + depd "^2.0.0" encodeurl "^2.0.0" escape-html "^1.0.3" etag "^1.8.1" @@ -5125,11 +5142,6 @@ fecha@^4.2.0: resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== -fflate@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea" - integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A== - file-entry-cache@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" @@ -5137,14 +5149,14 @@ file-entry-cache@^8.0.0: dependencies: flat-cache "^4.0.0" -file-type@21.1.0: - version "21.1.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-21.1.0.tgz#fb659aca041d3313bf2ae5336eeb008a2e0aa229" - integrity sha512-boU4EHmP3JXkwDo4uhyBhTt5pPstxB6eEXKJBu2yu2l7aAMMm7QQYQEzssJmKReZYrFdFOJS8koVo6bXIBGDqA== +file-type@21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-21.1.1.tgz#79be659d9a29e72bd32bdaf9ac2c83d203a58ca0" + integrity sha512-ifJXo8zUqbQ/bLbl9sFoqHNTNWbnPY1COImFfM6CCy7z+E+jC1eY9YfOKkx0fckIg+VljAy2/87T61fp0+eEkg== dependencies: - "@tokenizer/inflate" "^0.3.1" - strtok3 "^10.3.1" - token-types "^6.0.0" + "@tokenizer/inflate" "^0.4.1" + strtok3 "^10.3.4" + token-types "^6.1.1" uint8array-extras "^1.4.0" file-type@^19.0.0: @@ -5633,7 +5645,7 @@ http-cache-semantics@^4.1.1: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== -http-errors@2.0.0, http-errors@^2.0.0: +http-errors@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== @@ -5644,6 +5656,17 @@ http-errors@2.0.0, http-errors@^2.0.0: statuses "2.0.1" toidentifier "1.0.1" +http-errors@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b" + integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== + dependencies: + depd "~2.0.0" + inherits "~2.0.4" + setprototypeof "~1.2.0" + statuses "~2.0.2" + toidentifier "~1.0.1" + http-parser-js@>=0.5.1: version "0.5.9" resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.9.tgz#b817b3ca0edea6236225000d795378707c169cec" @@ -5662,13 +5685,6 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -iconv-lite@0.6.3, iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -5683,6 +5699,13 @@ iconv-lite@^0.7.0: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +iconv-lite@~0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.7.1.tgz#d4af1d2092f2bb05aab6296e5e7cd286d2f15432" + integrity sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + idb@7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" @@ -5732,7 +5755,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -5744,7 +5767,7 @@ inspect-with-kind@^1.0.5: dependencies: kind-of "^6.0.2" -ioredis@^5.8.2: +ioredis@5.8.2: version "5.8.2" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.8.2.tgz#c7a228a26cf36f17a5a8011148836877780e2e14" integrity sha512-C6uC+kleiIMmjViJINWk80sOQw5lEzse1ZmvD+S/s8p8CWapftSaC+kocGTx6xrbrJ4WmYQGC08ffHLr6ToR6Q== @@ -6897,10 +6920,10 @@ msgpackr-extract@^3.0.2: "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.3" "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.3" -msgpackr@^1.11.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.11.2.tgz#4463b7f7d68f2e24865c395664973562ad24473d" - integrity sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g== +msgpackr@1.11.5: + version "1.11.5" + resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.11.5.tgz#edf0b9d9cb7d8ed6897dd0e42cfb865a2f4b602e" + integrity sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA== optionalDependencies: msgpackr-extract "^3.0.2" @@ -6949,7 +6972,7 @@ nest-winston@^1.10.2: dependencies: fast-safe-stringify "^2.1.1" -node-abort-controller@^3.0.1, node-abort-controller@^3.1.1: +node-abort-controller@3.1.1, node-abort-controller@^3.0.1: version "3.1.1" resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== @@ -7573,15 +7596,15 @@ range-parser@^1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-3.0.0.tgz#25b3476f07a51600619dae3fe82ddc28a36e5e0f" - integrity sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g== +raw-body@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-3.0.2.tgz#3e3ada5ae5568f9095d84376fd3a49b8fb000a51" + integrity sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA== dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.6.3" - unpipe "1.0.0" + bytes "~3.1.2" + http-errors "~2.0.1" + iconv-lite "~0.7.0" + unpipe "~1.0.0" rc9@^2.1.2: version "2.1.2" @@ -7825,6 +7848,11 @@ semver-truncate@^3.0.0: dependencies: semver "^7.3.5" +semver@7.7.3, semver@^7.7.3: + version "7.7.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" + integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== + semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" @@ -7840,11 +7868,6 @@ semver@^7.7.2: resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== -semver@^7.7.3: - version "7.7.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" - integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== - send@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/send/-/send-1.1.0.tgz#4efe6ff3bb2139b0e5b2648d8b18d4dec48fc9c5" @@ -7914,7 +7937,7 @@ set-function-length@^1.2.2: gopd "^1.0.1" has-property-descriptors "^1.0.2" -setprototypeof@1.2.0: +setprototypeof@1.2.0, setprototypeof@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== @@ -8104,6 +8127,11 @@ statuses@2.0.1, statuses@^2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +statuses@~2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" + integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== + stream-chain@^2.2.5: version "2.2.5" resolved "https://registry.yarnpkg.com/stream-chain/-/stream-chain-2.2.5.tgz#b30967e8f14ee033c5b9a19bbe8a2cba90ba0d09" @@ -8233,7 +8261,7 @@ strnum@^1.1.1: resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4" integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA== -strtok3@^10.3.1: +strtok3@^10.3.4: version "10.3.4" resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-10.3.4.tgz#793ebd0d59df276a085586134b73a406e60be9c1" integrity sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg== @@ -8421,7 +8449,7 @@ toad-cache@^3.7.0: resolved "https://registry.yarnpkg.com/toad-cache/-/toad-cache-3.7.0.tgz#b9b63304ea7c45ec34d91f1d2fa513517025c441" integrity sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw== -toidentifier@1.0.1: +toidentifier@1.0.1, toidentifier@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== @@ -8434,6 +8462,15 @@ token-types@^6.0.0: "@tokenizer/token" "^0.3.0" ieee754 "^1.2.1" +token-types@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-6.1.1.tgz#85bd0ada82939b9178ecd5285881a538c4c00fdd" + integrity sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ== + dependencies: + "@borewit/text-codec" "^0.1.0" + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" + triple-beam@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" @@ -8508,7 +8545,7 @@ tsconfig-paths@4.2.0, tsconfig-paths@^4.1.2, tsconfig-paths@^4.2.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@2.8.1, tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0: +tslib@2.8.1, tslib@^2.1.0, tslib@^2.4.0: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -8548,15 +8585,6 @@ type-is@^1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type-is@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-2.0.0.tgz#7d249c2e2af716665cc149575dadb8b3858653af" - integrity sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw== - dependencies: - content-type "^1.0.5" - media-typer "^1.1.0" - mime-types "^3.0.0" - type-is@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/type-is/-/type-is-2.0.1.tgz#64f6cf03f92fce4015c2b224793f6bdd4b068c97" @@ -8616,7 +8644,7 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@1.0.0: +unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -8692,7 +8720,7 @@ utils-merge@^1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^11.1.0: +uuid@11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.0.tgz#9549028be1753bb934fc96e2bca09bb4105ae912" integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==