diff --git a/.github/ISSUE_TEMPLATE/-en--bug-report.yaml b/.github/ISSUE_TEMPLATE/-en--bug-report.yaml
index fc220e3d46..0349f036e2 100644
--- a/.github/ISSUE_TEMPLATE/-en--bug-report.yaml
+++ b/.github/ISSUE_TEMPLATE/-en--bug-report.yaml
@@ -13,15 +13,11 @@ body:
label: Welcome!
description: |
The issue tracker is only for reporting bugs and feature requests.
- For user-related support questions, please visit:
- - [Discord](https://evolution-api.com/discord)
- - [WhatsApp Group](https://evolution-api.com/whatsapp)
-
**DO NOT OPEN AN ISSUE FOR GENERAL SUPPORT QUESTIONS.**
options:
- - label: Yes, I have searched for similar issues on [GitHub](https://github.com/EvolutionAPI/evolution-api/issues) and found none.
+ - label: Yes, I have searched for similar issues on [GitHub](https://github.com/jeandgardany/evolution-api/issues) and found none.
required: true
- type: textarea
diff --git a/.github/ISSUE_TEMPLATE/-pt--reportar-bug.yaml b/.github/ISSUE_TEMPLATE/-pt--reportar-bug.yaml
index 60387af1d5..719df55d4e 100644
--- a/.github/ISSUE_TEMPLATE/-pt--reportar-bug.yaml
+++ b/.github/ISSUE_TEMPLATE/-pt--reportar-bug.yaml
@@ -13,15 +13,11 @@ body:
label: Bem-vido!
description: |
O rastreador de problemas é apenas para relatar bugs e solicitações de recursos.
- Para perguntas de suporte relacionadas ao usuário final, acesse:
- - [Discord](https://evolution-api.com/discord)
- - [Grupo do WhatsApp](https://evolution-api.com/whatsapp)
-
**NÃO ABRA UM PROBLEMA PARA PERGUNTAS GERAIS DE SUPORTE.**
options:
- - label: Sim, pesquisei problemas semelhantes no [GitHub](https://github.com/EvolutionAPI/evolution-api/issues) e não encontrei nenhum.
+ - label: Sim, pesquisei problemas semelhantes no [GitHub](https://github.com/jeandgardany/evolution-api/issues) e não encontrei nenhum.
required: true
- type: textarea
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000000..80105b901c
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,68 @@
+# Dependabot config — Evolution API (self-maintained fork)
+# Docs: https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
+
+version: 2
+updates:
+ # ----------------------------------------------------------------------
+ # npm — application dependencies
+ # ----------------------------------------------------------------------
+ - package-ecosystem: "npm"
+ directory: "/"
+ schedule:
+ interval: "weekly"
+ day: "monday"
+ time: "09:00"
+ timezone: "America/Fortaleza"
+ open-pull-requests-limit: 10
+ labels:
+ - "dependencies"
+ commit-message:
+ prefix: "chore(deps)"
+ prefix-development: "chore(deps-dev)"
+ include: "scope"
+ groups:
+ # Group all non-security minor/patch updates into one PR per week
+ minor-and-patch:
+ applies-to: version-updates
+ update-types:
+ - "minor"
+ - "patch"
+ exclude-patterns:
+ - "baileys"
+ - "@whiskeysockets/baileys"
+ # Security updates always come as individual PRs (no grouping)
+ ignore:
+ # Baileys: manual control — protocol-sensitive, never auto-bump
+ - dependency-name: "baileys"
+ - dependency-name: "@whiskeysockets/baileys"
+ # Prisma: major bumps require schema migration review
+ - dependency-name: "@prisma/client"
+ update-types: ["version-update:semver-major"]
+ - dependency-name: "prisma"
+ update-types: ["version-update:semver-major"]
+
+ # ----------------------------------------------------------------------
+ # GitHub Actions — keep workflow actions current (security)
+ # ----------------------------------------------------------------------
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "monthly"
+ labels:
+ - "dependencies"
+ - "github-actions"
+ commit-message:
+ prefix: "ci"
+
+ # ----------------------------------------------------------------------
+ # Docker — base image updates for the Dockerfile
+ # ----------------------------------------------------------------------
+ - package-ecosystem: "docker"
+ directory: "/"
+ schedule:
+ interval: "monthly"
+ labels:
+ - "dependencies"
+ - "docker"
+ commit-message:
+ prefix: "chore(docker)"
diff --git a/.github/workflows/check_code_quality.yml b/.github/workflows/check_code_quality.yml
index df156f2117..647b634dea 100644
--- a/.github/workflows/check_code_quality.yml
+++ b/.github/workflows/check_code_quality.yml
@@ -31,7 +31,14 @@ jobs:
- name: Install packages
run: npm ci
-
+
+ # Fails CI only on CRITICAL CVEs. High/moderate are surfaced in logs but
+ # do not block the build — most remaining items are pinned by Baileys and
+ # resolve only when Baileys upgrades. Tighten to --audit-level=high after
+ # next major Baileys upgrade.
+ - name: Security audit
+ run: npm audit --audit-level=critical --omit=dev
+
- name: Check linting
run: npm run lint:check
diff --git a/.github/workflows/publish_docker_image.yml b/.github/workflows/publish_docker_image.yml
deleted file mode 100644
index c5a3996edb..0000000000
--- a/.github/workflows/publish_docker_image.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-name: Build Docker image
-
-on:
- push:
- tags:
- - "*.*.*"
-
-jobs:
- build_deploy:
- name: Build and Deploy
- runs-on: ubuntu-latest
- permissions:
- contents: read
- packages: write
- steps:
- - name: Checkout
- uses: actions/checkout@v5
- with:
- submodules: recursive
-
- - name: Docker meta
- id: meta
- uses: docker/metadata-action@v5
- with:
- images: evoapicloud/evolution-api
- tags: type=semver,pattern=v{{version}}
-
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
-
- - name: Login to GitHub Container Registry
- uses: docker/login-action@v3
- with:
- username: ${{ secrets.DOCKER_USERNAME }}
- password: ${{ secrets.DOCKER_PASSWORD }}
-
- - name: Build and push
- id: docker_build
- uses: docker/build-push-action@v6
- with:
- platforms: linux/amd64,linux/arm64
- push: true
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
-
- - name: Image digest
- run: echo ${{ steps.docker_build.outputs.digest }}
\ No newline at end of file
diff --git a/.github/workflows/publish_docker_image_homolog.yml b/.github/workflows/publish_docker_image_homolog.yml
deleted file mode 100644
index a76e1008be..0000000000
--- a/.github/workflows/publish_docker_image_homolog.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-name: Build Docker image
-
-on:
- push:
- branches:
- - develop
-
-jobs:
- build_deploy:
- name: Build and Deploy
- runs-on: ubuntu-latest
- permissions:
- contents: read
- packages: write
- steps:
- - name: Checkout
- uses: actions/checkout@v5
- with:
- submodules: recursive
-
- - name: Docker meta
- id: meta
- uses: docker/metadata-action@v5
- with:
- images: evoapicloud/evolution-api
- tags: homolog
-
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
-
- - name: Login to Docker Hub
- uses: docker/login-action@v3
- with:
- username: ${{ secrets.DOCKER_USERNAME }}
- password: ${{ secrets.DOCKER_PASSWORD }}
-
- - name: Build and push
- id: docker_build
- uses: docker/build-push-action@v6
- with:
- platforms: linux/amd64,linux/arm64
- push: true
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
-
- - name: Image digest
- run: echo ${{ steps.docker_build.outputs.digest }}
diff --git a/.github/workflows/publish_docker_image_latest.yml b/.github/workflows/publish_docker_image_latest.yml
deleted file mode 100644
index f73fe80e4e..0000000000
--- a/.github/workflows/publish_docker_image_latest.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-name: Build Docker image
-
-on:
- push:
- branches:
- - main
-
-jobs:
- build_deploy:
- name: Build and Deploy
- runs-on: ubuntu-latest
- permissions:
- contents: read
- packages: write
- steps:
- - name: Checkout
- uses: actions/checkout@v5
- with:
- submodules: recursive
-
- - name: Docker meta
- id: meta
- uses: docker/metadata-action@v5
- with:
- images: evoapicloud/evolution-api
- tags: latest
-
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
-
- - name: Login to Docker Hub
- uses: docker/login-action@v3
- with:
- username: ${{ secrets.DOCKER_USERNAME }}
- password: ${{ secrets.DOCKER_PASSWORD }}
-
- - name: Build and push
- id: docker_build
- uses: docker/build-push-action@v6
- with:
- platforms: linux/amd64,linux/arm64
- push: true
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
-
- - name: Image digest
- run: echo ${{ steps.docker_build.outputs.digest }}
diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 0000000000..209e3ef4b6
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+20
diff --git a/AGENTS.md b/AGENTS.md
index 143e6c748e..9c3d4509a5 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -317,7 +317,7 @@ export DATABASE_PROVIDER=postgresql # or mysql
### Vulnerability Reporting
- See `SECURITY.md` for security vulnerability reporting process
-- Contact: `contato@evolution-api.com`
+- Contact: `jeandgardany@hotmail.com`
## Communication Standards
diff --git a/CLAUDE.md b/CLAUDE.md
index 7c0e87a040..2857e2f8b7 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -1,223 +1,303 @@
-# CLAUDE.md
+# Evolution API — Briefing para Claude Code
+> Manutenção, Bugfixes e Extensão do Projeto | v2.3.7 | Fevereiro 2026
-This file provides comprehensive guidance to Claude AI when working with the Evolution API codebase.
+---
-## Project Overview
+## 1. Contexto e Objetivo
-**Evolution API** is a powerful, production-ready REST API for WhatsApp communication that supports multiple WhatsApp providers:
-- **Baileys** (WhatsApp Web) - Open-source WhatsApp Web client
-- **Meta Business API** - Official WhatsApp Business API
-- **Evolution API** - Custom WhatsApp integration
+Este projeto é a **Evolution API** instalada nesta VM. O time original parou o desenvolvimento ativo em Dezembro de 2025 (última release: v2.3.7, 5 Dez 2025). O objetivo é manter a API funcionando, aplicar bugfixes críticos da comunidade e estender funcionalidades para N8N.
-Built with **Node.js 20+**, **TypeScript 5+**, and **Express.js**, it provides extensive integrations with chatbots, CRM systems, and messaging platforms in a **multi-tenant architecture**.
+Esta API é o backbone de atendimento ao cliente da **DGGirl** (e-commerce de moda feminina, Nordeste do Brasil). Os workflows N8N processam mensagens de clientes, acionam agentes de IA com **Google Gemini** para responder sobre produtos, rastrear pedidos e processar pagamentos PIX. Qualquer downtime impacta diretamente o atendimento ao cliente em tempo real.
-## Common Development Commands
+---
-### Build and Run
-```bash
-# Development
-npm run dev:server # Run in development with hot reload (tsx watch)
+## 2. Stack Tecnológico
+
+- **Runtime:** Node.js (CommonJS)
+- **Linguagem:** TypeScript (strict)
+- **Framework:** Express.js
+- **ORM:** Prisma (PostgreSQL ou MySQL)
+- **WhatsApp:** Baileys (`@whiskeysockets/baileys`)
+- **Cache:** Redis + local cache
+- **Storage:** S3 / MinIO
+- **Message Queue:** RabbitMQ / SQS
+- **Process Manager:** PM2 (`pm2 restart ApiEvolution`)
+- **Build:** tsup + tsc
+- **Lint:** ESLint
+- **Commits:** Commitizen (`npm run commit`)
+
+---
+
+## 3. Arquitetura do Código
-# Production
-npm run build # TypeScript check + tsup build
-npm run start:prod # Run production build
+### 3.1 Estrutura de Diretórios
-# Direct execution
-npm start # Run with tsx
+```
+evolution-api/
+├── src/
+│ ├── main.ts # Entry point — inicializa Express na porta 8080
+│ ├── api/
+│ │ ├── server.module.ts # DI container — instancia todos os serviços
+│ │ ├── routes/index.router.ts # 14 routers organizados por domínio
+│ │ ├── guards/
+│ │ │ ├── auth.guard.ts # Valida API key global + token por instância
+│ │ │ └── instance.guard.ts # Verifica se instância existe e conectada
+│ │ ├── controllers/ # Thin layer HTTP — recebe req, chama service
+│ │ ├── services/
+│ │ │ ├── monitor.service.ts # WAMonitoringService — mapa waInstances
+│ │ │ └── channel.service.ts # ChannelStartupService — classe base abstrata
+│ │ ├── dto/ # Data Transfer Objects (class-validator)
+│ │ ├── integrations/
+│ │ │ ├── channel/whatsapp/
+│ │ │ │ └── whatsapp.baileys.service.ts # ★ ARQUIVO MAIS CRÍTICO
+│ │ │ ├── chatbot/ # OpenAI, Dify, Typebot, Chatwoot
+│ │ │ ├── event/event.manager.ts # Distribui eventos: Webhook/RabbitMQ/SQS/WS
+│ │ │ └── storage/ # S3, MinIO
+│ │ └── repository/ # Prisma ORM — data access layer
+│ ├── config/ # Configuração via .env
+│ ├── cache/ # Redis + local cache
+│ └── exceptions/ # Classes de exceção HTTP
+├── prisma/
+│ ├── postgresql-schema.prisma
+│ └── mysql-schema.prisma
+├── CLAUDE.md # ★ Este arquivo
+├── package.json
+└── tsconfig.json
```
-### Code Quality
-```bash
-npm run lint # ESLint with auto-fix
-npm run lint:check # ESLint check only
-npm run commit # Interactive commit with commitizen
+### 3.2 Fluxo — Mensagem Recebida
+
+```
+WhatsApp (protocolo WebSocket)
+ ↓ Baileys Library
+ ↓ BaileysStartupService (whatsapp.baileys.service.ts)
+ ↓ BaileysMessageProcessor (retry logic + deduplicação)
+ ↓ EventManager (event.manager.ts)
+ ↓ ↓ ↓ ↓
+Webhook WebSocket RabbitMQ SQS
+ ↓
+N8N (processa, chama IA, responde)
```
-### Database Management
-```bash
-# Set database provider first
-export DATABASE_PROVIDER=postgresql # or mysql
+### 3.3 Fluxo — Envio de Mensagem via N8N
+
+```
+N8N (trigger workflow)
+ ↓ HTTP POST → Evolution API :8080
+ ↓ authGuard → instanceExistsGuard → instanceLoggedGuard
+ ↓ Controller (roteia) → Service (lógica)
+ ↓ BaileysStartupService.sendMessage()
+ ↓ WhatsApp (entrega ao destinatário)
+```
-# Generate Prisma client (automatically uses DATABASE_PROVIDER env)
-npm run db:generate
+---
-# Deploy migrations (production)
-npm run db:deploy # Unix/Mac
-npm run db:deploy:win # Windows
+## 4. Bugs Conhecidos e PRs Pendentes
-# Development migrations (with sync to provider folder)
-npm run db:migrate:dev # Unix/Mac
-npm run db:migrate:dev:win # Windows
+### 4.1 Bug CRÍTICO — Loop Infinito de QR Code (PR #2365)
-# Open Prisma Studio
-npm run db:studio
+**Arquivo:** `src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts`
+**Método:** `connectionUpdate()` — aproximadamente linhas 421-440
-# Development migrations
-npm run db:migrate:dev # Unix/Mac
-npm run db:migrate:dev:win # Windows
+**Fix — adicionar ANTES da lógica de reconexão existente:**
+```typescript
+const isInitialConnection = !this.instance.wuid && this.instance.qrcode.count === 0;
+if (isInitialConnection) {
+ this.logger.info('Initial connection closed, waiting for QR code generation...');
+ return; // Impede o loop infinito
+}
+// ... lógica de reconexão existente para instâncias autenticadas continua abaixo
+```
+
+### 4.2 Bug CRÍTICO — LID (Linked Identity Device)
+
+**Sintoma no log:**
+```
+{ remoteJid: '28952559136882@lid', remoteJidAlt: '5519989881838@s.whatsapp.net' }
+ERROR: { jid: '28952559136882@s.whatsapp.net', exists: false }
```
-### Testing
+**Estratégia de fix:** Sempre que encontrar `@lid`, usar `remoteJidAlt` (`@s.whatsapp.net`) para operações de envio e verificação de número.
+
+**Arquivos a inspecionar:**
+- `src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts`
+- `src/api/services/channel.service.ts`
+- `src/api/integrations/chatbot/` — todos os services de chatbot
+
+### 4.3 Bug MÉDIO — Multi-Device: Desconexão com Android Ativo (PR #2332)
+
+Investigar desconexões quando dispositivo Android está ativo simultaneamente.
+
+### 4.4 Bug MÉDIO — findContacts (PR #2120)
+
+Aplicar se a busca de contatos não estiver funcionando.
+
+---
+
+## 5. Comandos Essenciais
+
```bash
-npm test # Run tests with watch mode
+# Rebuild da imagem Docker a partir do código-fonte local (obrigatório após qualquer mudança no src/)
+docker compose build api && docker compose up -d api
+
+# Desenvolvimento (hot reload)
+npm run dev:server
+
+# Build TypeScript (tsc --noEmit tem erro pré-existente em terminateCall — usar tsup direto)
+./node_modules/.bin/tsup
+
+# Iniciar produção
+npm run start:prod
+
+# Lint + fix automático
+npm run lint
+
+# Verificar lint sem alterar
+npm run lint:check
+
+# Commit semântico interativo
+npm run commit
+
+# Após alterar schema Prisma
+npx prisma migrate dev
+npx prisma generate
+
+# Verificar status do serviço
+pm2 status
+pm2 logs ApiEvolution --err --lines 100
+
+# Reiniciar em produção
+pm2 restart ApiEvolution
```
-## Architecture Overview
+---
+
+## 6. Workflow para Aplicar um Bugfix
+
+1. Identificar o arquivo exato pelo mapa da Seção 3
+2. Criar branch: `git checkout -b fix/nome-do-bug`
+3. Aplicar o fix — **mínimo de alterações necessárias**
+4. Build: `npm run build`
+5. Lint: `npm run lint`
+6. Commit: `npm run commit` (escolha `fix:` ou `feat:`)
+7. Reiniciar: `pm2 restart ApiEvolution`
+
+---
+
+## 7. Integração com N8N
+
+### 7.1 Endpoints Mais Usados
+
+- `POST /message/sendText/{instanceName}` — Enviar texto
+- `POST /message/sendMedia/{instanceName}` — Enviar mídia
+- `POST /message/sendButtons/{instanceName}` — Enviar botões
+- `GET /instance/connectionState/{instanceName}` — Status da conexão
+- `GET /chat/findContacts/{instanceName}` — Buscar contatos
+
+### 7.2 Configuração do Webhook para N8N
-### Core Structure
-- **Multi-tenant SaaS**: Complete instance isolation with per-tenant authentication
-- **Multi-provider database**: PostgreSQL and MySQL via Prisma ORM with provider-specific schemas and migrations
-- **WhatsApp integrations**: Baileys, Meta Business API, and Evolution API with unified interface
-- **Event-driven architecture**: EventEmitter2 for internal events + WebSocket, RabbitMQ, SQS, NATS, Pusher for external events
-- **Microservices pattern**: Modular integrations for chatbots, storage, and external services
+```http
+POST http://localhost:8080/webhook/set/{instanceName}
+Headers: { apikey: SUA_API_KEY }
+```
-### Directory Layout
+```json
+{
+ "enabled": true,
+ "url": "https://seu-n8n.dominio.com/webhook/evolution",
+ "webhookByEvents": false,
+ "webhookBase64": false,
+ "events": [
+ "MESSAGES_UPSERT",
+ "MESSAGES_UPDATE",
+ "CONNECTION_UPDATE",
+ "SEND_MESSAGE"
+ ]
+}
```
-src/
-├── api/
-│ ├── controllers/ # HTTP route handlers (thin layer)
-│ ├── services/ # Business logic (core functionality)
-│ ├── repository/ # Data access layer (Prisma)
-│ ├── dto/ # Data Transfer Objects (simple classes)
-│ ├── guards/ # Authentication/authorization middleware
-│ ├── integrations/ # External service integrations
-│ │ ├── channel/ # WhatsApp providers (Baileys, Business API, Evolution)
-│ │ ├── chatbot/ # AI/Bot integrations (OpenAI, Dify, Typebot, Chatwoot)
-│ │ ├── event/ # Event systems (WebSocket, RabbitMQ, SQS, NATS, Pusher)
-│ │ └── storage/ # File storage (S3, MinIO)
-│ ├── routes/ # Express route definitions (RouterBroker pattern)
-│ └── types/ # TypeScript type definitions
-├── config/ # Environment and app configuration
-├── cache/ # Redis and local cache implementations
-├── exceptions/ # Custom HTTP exception classes
-├── utils/ # Shared utilities and helpers
-└── validate/ # JSONSchema7 validation schemas
+
+### 7.3 Padrão para Novo Endpoint
+
+```typescript
+// 1. DTO em: src/api/dto/meu-recurso.dto.ts
+export class MeuRecursoDto {
+ instanceName: string;
+ parametro: string;
+}
+
+// 2. Service em: src/api/services/meu-recurso.service.ts
+// Nunca coloque lógica no Controller
+export class MeuRecursoService {
+ constructor(private readonly prismaRepository: PrismaRepository) {}
+ async meuMetodo(instance: string, data: MeuRecursoDto) {
+ // lógica aqui — use this.logger, nunca console.log
+ }
+}
+
+// 3. Controller em: src/api/controllers/meu-recurso.controller.ts
+// Thin layer — só roteia e trata exceções
+
+// 4. Registrar em: src/api/routes/index.router.ts
```
-### Key Integration Points
-
-**Channel Integrations** (`src/api/integrations/channel/`):
-- **Baileys**: WhatsApp Web client with QR code authentication
-- **Business API**: Official Meta WhatsApp Business API
-- **Evolution API**: Custom WhatsApp integration
-- Connection lifecycle management per instance with automatic reconnection
-
-**Chatbot Integrations** (`src/api/integrations/chatbot/`):
-- **EvolutionBot**: Native chatbot with trigger system
-- **Chatwoot**: Customer service platform integration
-- **Typebot**: Visual chatbot flow builder
-- **OpenAI**: AI capabilities including GPT and Whisper (audio transcription)
-- **Dify**: AI agent workflow platform
-- **Flowise**: LangChain visual builder
-- **N8N**: Workflow automation platform
-- **EvoAI**: Custom AI integration
-
-**Event Integrations** (`src/api/integrations/event/`):
-- **WebSocket**: Real-time Socket.io connections
-- **RabbitMQ**: Message queue for async processing
-- **Amazon SQS**: Cloud-based message queuing
-- **NATS**: High-performance messaging system
-- **Pusher**: Real-time push notifications
-
-**Storage Integrations** (`src/api/integrations/storage/`):
-- **AWS S3**: Cloud object storage
-- **MinIO**: Self-hosted S3-compatible storage
-- Media file management and URL generation
-
-### Database Schema Management
-- Separate schema files: `postgresql-schema.prisma` and `mysql-schema.prisma`
-- Environment variable `DATABASE_PROVIDER` determines active database
-- Migration folders are provider-specific and auto-selected during deployment
-
-### Authentication & Security
-- **API key-based authentication** via `apikey` header (global or per-instance)
-- **Instance-specific tokens** for WhatsApp connection authentication
-- **Guards system** for route protection and authorization
-- **Input validation** using JSONSchema7 with RouterBroker `dataValidate`
-- **Rate limiting** and security middleware
-- **Webhook signature validation** for external integrations
-
-## Important Implementation Details
-
-### WhatsApp Instance Management
-- Each WhatsApp connection is an "instance" with unique name
-- Instance data stored in database with connection state
-- Session persistence in database or file system (configurable)
-- Automatic reconnection handling with exponential backoff
-
-### Message Queue Architecture
-- Supports RabbitMQ, Amazon SQS, and WebSocket for events
-- Event types: message.received, message.sent, connection.update, etc.
-- Configurable per instance which events to send
-
-### Media Handling
-- Local storage or S3/Minio for media files
-- Automatic media download from WhatsApp
-- Media URL generation for external access
-- Support for audio transcription via OpenAI
-
-### Multi-tenancy Support
-- Instance isolation at database level
-- Separate webhook configurations per instance
-- Independent integration settings per instance
-
-## Environment Configuration
-
-Key environment variables are defined in `.env.example`. The system uses a strongly-typed configuration system via `src/config/env.config.ts`.
-
-Critical configurations:
-- `DATABASE_PROVIDER`: postgresql or mysql
-- `DATABASE_CONNECTION_URI`: Database connection string
-- `AUTHENTICATION_API_KEY`: Global API authentication
-- `REDIS_ENABLED`: Enable Redis cache
-- `RABBITMQ_ENABLED`/`SQS_ENABLED`: Message queue options
-
-## Development Guidelines
-
-The project follows comprehensive development standards defined in `.cursor/rules/`:
-
-### Core Principles
-- **Always respond in Portuguese (PT-BR)** for user communication
-- **Follow established architecture patterns** (Service Layer, RouterBroker, etc.)
-- **Robust error handling** with retry logic and graceful degradation
-- **Multi-database compatibility** (PostgreSQL and MySQL)
-- **Security-first approach** with input validation and rate limiting
-- **Performance optimizations** with Redis caching and connection pooling
-
-### Code Standards
-- **TypeScript strict mode** with full type coverage
-- **JSONSchema7** for input validation (not class-validator)
-- **Conventional Commits** enforced by commitlint
-- **ESLint + Prettier** for code formatting
-- **Service Object pattern** for business logic
-- **RouterBroker pattern** for route handling with `dataValidate`
-
-### Architecture Patterns
-- **Multi-tenant isolation** at database and instance level
-- **Event-driven communication** with EventEmitter2
-- **Microservices integration** pattern for external services
-- **Connection pooling** and lifecycle management
-- **Caching strategy** with Redis primary and Node-cache fallback
-
-## Testing Approach
-
-Currently, the project has minimal formal testing infrastructure:
-- **Manual testing** is the primary approach
-- **Integration testing** in development environment
-- **No unit test suite** currently implemented
-- Test files can be placed in `test/` directory as `*.test.ts`
-- Run `npm test` for watch mode development testing
-
-### Recommended Testing Strategy
-- Focus on **critical business logic** in services
-- **Mock external dependencies** (WhatsApp APIs, databases)
-- **Integration tests** for API endpoints
-- **Manual testing** for WhatsApp connection flows
-
-## Deployment Considerations
-
-- Docker support with `Dockerfile` and `docker-compose.yaml`
-- Graceful shutdown handling for connections
-- Health check endpoints for monitoring
-- Sentry integration for error tracking
-- Telemetry for usage analytics (non-sensitive data only)
\ No newline at end of file
+---
+
+## 8. Regras de Desenvolvimento
+
+### Fazer
+- Seguir o padrão **Controller → Service → Repository** sem exceções
+- Usar `this.logger` — nunca `console.log` em código de produção
+- Manter tipagem TypeScript estrita — evitar `any`
+- Commits via `npm run commit` (commitizen)
+- Após alterar schema Prisma: `npx prisma migrate dev && npx prisma generate`
+- Sempre `npm run build` antes de aplicar em produção
+- **Mínimo de alterações necessárias** — não refatorar o que não está quebrando
+
+### Não Fazer
+- Não alterar o `.env` diretamente — documentar as variáveis necessárias
+- Não colocar lógica de negócio nos controllers
+- Não quebrar compatibilidade de API — os contratos existentes são usados pelo N8N
+- Não atualizar Baileys sem verificar breaking changes no CHANGELOG da lib
+- Não remover campos de DTOs existentes — apenas adicionar novos
+- Não desabilitar o `authGuard` — toda rota precisa de autenticação
+- Não usar `console.log` — usar `this.logger` do projeto
+
+---
+
+## 9. Checklist de Manutenção Prioritária
+
+### Verificação Inicial
+- [ ] `pm2 status` — checar se o serviço está rodando
+- [ ] `pm2 logs ApiEvolution --err --lines 100` — ver erros recentes
+- [ ] `cat package.json | grep baileys` — checar versão do Baileys
+- [ ] Verificar se há erros `@lid` nos logs
+
+### Bugs para Aplicar (Por Prioridade)
+- [ ] **[CRÍTICO]** Fix loop infinito QR Code — PR #2365
+- [ ] **[CRÍTICO]** Fix LID — garantir uso de `remoteJidAlt` para envio
+- [ ] **[MÉDIO]** Fix Multi-Device — PR #2332 se houver desconexões
+- [ ] **[MÉDIO]** Fix findContacts — PR #2120 se busca não funciona
+- [ ] **[BAIXO]** Atualizar Baileys para versão estável mais recente
+
+---
+
+## 10. Como Atualizar o Baileys
+
+```bash
+# Ver versão atual
+cat package.json | grep baileys
+
+# Atualizar para versão mais recente
+npm install @whiskeysockets/baileys@latest
+
+# OU usar o fork da EvolutionAPI (patches específicos)
+npm install github:EvolutionAPI/Baileys
+
+# Após atualizar — verificar breaking changes no build
+npm run build
+# Corrigir erros TypeScript antes de testar em produção
+```
+
+---
+
+*Evolution API Briefing — Jean Lima / DGGirl — Fevereiro 2026*
diff --git a/Dockerfile b/Dockerfile
index 24c4e3bc7f..02277d0af0 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,19 +1,17 @@
FROM node:24-alpine AS builder
RUN apk update && \
- apk add --no-cache git ffmpeg wget curl bash openssl
+ apk add git ffmpeg wget curl bash
-LABEL version="2.3.1" description="Api to control whatsapp features through http requests."
-LABEL maintainer="Davidson Gomes" git="https://github.com/DavidsonGomes"
-LABEL contact="contato@evolution-api.com"
+LABEL version="2.3.7" description="Api to control whatsapp features through http requests."
+LABEL maintainer="Jean Lima" git="https://github.com/jeandgardany"
+LABEL contact="jeandgardany@hotmail.com"
WORKDIR /evolution
-COPY ./package*.json ./
-COPY ./tsconfig.json ./
-COPY ./tsup.config.ts ./
+COPY ./package.json ./package-lock.json ./tsconfig.json ./
-RUN npm ci --silent
+RUN npm ci --silent --ignore-scripts
COPY ./src ./src
COPY ./public ./public
@@ -21,6 +19,7 @@ COPY ./prisma ./prisma
COPY ./manager ./manager
COPY ./.env.example ./.env
COPY ./runWithProvider.js ./
+COPY ./tsup.config.ts ./
COPY ./Docker ./Docker
@@ -28,15 +27,14 @@ RUN chmod +x ./Docker/scripts/* && dos2unix ./Docker/scripts/*
RUN ./Docker/scripts/generate_database.sh
-RUN npm run build
+RUN ./node_modules/.bin/tsup
FROM node:24-alpine AS final
RUN apk update && \
- apk add tzdata ffmpeg bash openssl
+ apk add tzdata ffmpeg bash openssl openssl-dev libc6-compat
-ENV TZ=America/Sao_Paulo
-ENV DOCKER_ENV=true
+ENV TZ=America/Fortaleza
WORKDIR /evolution
@@ -57,4 +55,4 @@ ENV DOCKER_ENV=true
EXPOSE 8080
-ENTRYPOINT ["/bin/bash", "-c", ". ./Docker/scripts/deploy_database.sh && npm run start:prod" ]
+ENTRYPOINT ["/bin/bash", "-c", ". ./Docker/scripts/deploy_database.sh && npm run start:prod" ]
\ No newline at end of file
diff --git a/README.md b/README.md
index eb7e638c16..88f28cd458 100644
--- a/README.md
+++ b/README.md
@@ -2,17 +2,8 @@
-[](https://hub.docker.com/r/evoapicloud/evolution-api)
-[](https://evolution-api.com/whatsapp)
-[](https://evolution-api.com/discord)
-[](https://evolution-api.com/postman)
-[](https://doc.evolution-api.com)
-[](https://evolutionapi.canny.io/feature-requests)
-[](https://evolutionapi.canny.io/feature-requests)
-[](https://evolutionapi.canny.io/changelog)
[](./LICENSE)
-[](https://app.picpay.com/user/davidsongomes1998)
-[](https://github.com/sponsors/EvolutionAPI)
+[](https://github.com/jeandgardany/evolution-api)
@@ -24,8 +15,9 @@ Evolution API began as a WhatsApp controller API based on [CodeChat](https://git
Today, Evolution API is not limited to WhatsApp. It integrates with various platforms such as Typebot, Chatwoot, Dify, and OpenAI, offering a broad array of functionalities beyond messaging. Evolution API supports both the Baileys-based WhatsApp API and the official WhatsApp Business API, with upcoming support for Instagram and Messenger.
-## Looking for a Lightweight Version?
-For those who need a more streamlined and performance-optimized version, check out [Evolution API Lite](https://github.com/EvolutionAPI/evolution-api-lite). It's designed specifically for microservices, focusing solely on connectivity without integrations or audio conversion features. Ideal for environments that prioritize simplicity and efficiency.
+## Fork Notice
+
+This repository is a self-maintained fork of [EvolutionAPI/evolution-api](https://github.com/EvolutionAPI/evolution-api), continued after upstream development stopped (last upstream release: v2.3.7, December 2025). Maintained by Jean Lima.
## Types of Connections
@@ -73,39 +65,15 @@ Evolution API supports various integrations to enhance its functionality. Below
- Amazon S3 / Minio:
- Store media files received in [Amazon S3](https://aws.amazon.com/pt/s3/) or [Minio](https://min.io/).
-## Community & Feedback
-
-We value community input and feedback to continuously improve Evolution API:
-
-### 🚀 Feature Requests & Roadmap
-- **[Feature Requests](https://evolutionapi.canny.io/feature-requests)**: Submit new feature ideas and vote on community proposals
-- **[Roadmap](https://evolutionapi.canny.io/feature-requests)**: View planned features and development progress
-- **[Changelog](https://evolutionapi.canny.io/changelog)**: Stay updated with the latest releases and improvements
+## Support
-### 💬 Community Support
-- **[WhatsApp Group](https://evolution-api.com/whatsapp)**: Join our community for support and discussions
-- **[Discord Community](https://evolution-api.com/discord)**: Real-time chat with developers and users
-- **[GitHub Issues](https://github.com/EvolutionAPI/evolution-api/issues)**: Report bugs and technical issues
-
-### 🔒 Security
+- **[GitHub Issues](https://github.com/jeandgardany/evolution-api/issues)**: Report bugs and technical issues
- **[Security Policy](./SECURITY.md)**: Guidelines for reporting security vulnerabilities
-- **Security Contact**: contato@evolution-api.com
+- **Security Contact**: jeandgardany@hotmail.com
## Telemetry Notice
-To continuously improve our services, we have implemented telemetry that collects data on the routes used, the most accessed routes, and the version of the API in use. We would like to assure you that no sensitive or personal data is collected during this process. The telemetry helps us identify improvements and provide a better experience for users.
-
-## Evolution Support Premium
-
-Join our Evolution Pro community for expert support and a weekly call to answer questions. Visit the link below to learn more and subscribe:
-
-[Click here to learn more](https://evolution-api.com/suporte-pro)
-
-# Donate to the project.
-
-#### Github Sponsors
-
-https://github.com/sponsors/EvolutionAPI
+Telemetry is disabled by default in this fork. If `TELEMETRY_ENABLED=true` and `TELEMETRY_URL` is set in your environment, only the requested route, API version, and timestamp are sent to the configured URL — no payload, no personal data. Leave `TELEMETRY_URL` empty to keep telemetry off.
# Content Creator Partners
@@ -137,8 +105,8 @@ Evolution API is licensed under the Apache License 2.0, with the following addit
2. **Usage Notification Requirement**: If Evolution API is used as part of any project, including closed-source systems (e.g., proprietary software), the user is required to display a clear notification within the system that Evolution API is being utilized. This notification should be visible to system administrators and accessible from the system's documentation or settings page. Failure to comply with this requirement may result in the necessity for a commercial license, as determined by the producer.
-Please contact contato@evolution-api.com to inquire about licensing matters.
+Please contact jeandgardany@hotmail.com to inquire about licensing matters.
Apart from the specific conditions mentioned above, all other rights and restrictions follow the Apache License 2.0. Detailed information about the Apache License 2.0 can be found at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0).
-© 2025 Evolution API
+© 2025 Evolution API contributors — fork maintained by Jean Lima
diff --git a/SECURITY.md b/SECURITY.md
index 0e3189d2fb..dd79a9b484 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -21,7 +21,7 @@ We take security vulnerabilities seriously. If you discover a security vulnerabi
Instead, please report security vulnerabilities via email to:
-**📧 contato@evolution-api.com**
+**📧 jeandgardany@hotmail.com**
### 📋 What to Include
@@ -92,7 +92,7 @@ Security updates will be:
For any questions about this security policy, please contact:
-- **Email**: contato@evolution-api.com
+- **Email**: jeandgardany@hotmail.com
---
diff --git a/docker-compose.yaml b/docker-compose.yaml
index e0edee6569..554a37ba4c 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -1,84 +1,60 @@
-version: "3.8"
-
services:
api:
container_name: evolution_api
- image: evoapicloud/evolution-api:latest
+ build:
+ context: .
+ dockerfile: Dockerfile
restart: always
depends_on:
- redis
- - evolution-postgres
+ - postgres
ports:
- - "127.0.0.1:8080:8080"
+ - 8080:8080
volumes:
- evolution_instances:/evolution/instances
networks:
- evolution-net
- - dokploy-network
env_file:
- .env
expose:
- - "8080"
-
- frontend:
- container_name: evolution_frontend
- image: evoapicloud/evolution-manager:latest
- restart: always
- ports:
- - "3000:80"
- networks:
- - evolution-net
+ - 8080
redis:
- container_name: evolution_redis
image: redis:latest
- restart: always
+ networks:
+ - evolution-net
+ container_name: redis
command: >
redis-server --port 6379 --appendonly yes
volumes:
- evolution_redis:/data
- networks:
- evolution-net:
- aliases:
- - evolution-redis
- dokploy-network:
- aliases:
- - evolution-redis
- expose:
- - "6379"
+ ports:
+ - 6379:6379
+ restart: always
- evolution-postgres:
- container_name: evolution_postgres
+ postgres:
+ container_name: postgres
image: postgres:15
+ networks:
+ - evolution-net
+ command: ["postgres", "-c", "max_connections=1000"]
restart: always
- env_file:
- - .env
- command:
- - postgres
- - -c
- - max_connections=1000
- - -c
- - listen_addresses=*
+ ports:
+ - 5432:5432
environment:
- - POSTGRES_DB=${POSTGRES_DATABASE}
- - POSTGRES_USER=${POSTGRES_USERNAME}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
- networks:
- - evolution-net
- - dokploy-network
expose:
- - "5432"
+ - 5432
volumes:
evolution_instances:
evolution_redis:
postgres_data:
+
networks:
evolution-net:
name: evolution-net
driver: bridge
- dokploy-network:
- external: true
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index c45e8fef38..e72f57f2a5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -106,28 +106,23 @@
"integrity": "sha512-yprSnAtj80/VKuDqRcFFLDYltoNV8tChNwFfIgcf6PGD4sjzWIBgs08pRuTqGH5mk5wgL6PBRSsMCZqtZwzFEw==",
"license": "MIT"
},
- "node_modules/@apm-js-collab/code-transformer": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/@apm-js-collab/code-transformer/-/code-transformer-0.8.2.tgz",
- "integrity": "sha512-YRjJjNq5KFSjDUoqu5pFUWrrsvGOxl6c3bu+uMFc9HNNptZ2rNU/TI2nLw4jnhQNtka972Ee2m3uqbvDQtPeCA==",
- "license": "Apache-2.0"
- },
- "node_modules/@apm-js-collab/tracing-hooks": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@apm-js-collab/tracing-hooks/-/tracing-hooks-0.3.1.tgz",
- "integrity": "sha512-Vu1CbmPURlN5fTboVuKMoJjbO5qcq9fA5YXpskx3dXe/zTBvjODFoerw+69rVBlRLrJpwPqSDqEuJDEKIrTldw==",
- "license": "Apache-2.0",
+ "node_modules/@aws-crypto/crc32": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz",
+ "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==",
"dependencies": {
- "@apm-js-collab/code-transformer": "^0.8.0",
- "debug": "^4.4.1",
- "module-details-from-path": "^1.0.4"
+ "@aws-crypto/util": "^5.2.0",
+ "@aws-sdk/types": "^3.222.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-crypto/sha256-browser": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz",
"integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==",
- "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-js": "^5.2.0",
"@aws-crypto/supports-web-crypto": "^5.2.0",
@@ -138,49 +133,10 @@
"tslib": "^2.6.2"
}
},
- "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
- "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
- "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/is-array-buffer": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
- "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/util-buffer-from": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/@aws-crypto/sha256-js": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz",
"integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==",
- "license": "Apache-2.0",
"dependencies": {
"@aws-crypto/util": "^5.2.0",
"@aws-sdk/types": "^3.222.0",
@@ -194,7 +150,6 @@
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz",
"integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==",
- "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
}
@@ -203,593 +158,297 @@
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz",
"integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==",
- "license": "Apache-2.0",
"dependencies": {
"@aws-sdk/types": "^3.222.0",
"@smithy/util-utf8": "^2.0.0",
"tslib": "^2.6.2"
}
},
- "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
- "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
- "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/is-array-buffer": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
- "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/util-buffer-from": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/@aws-sdk/client-sqs": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.936.0.tgz",
- "integrity": "sha512-JDYdeGV8L+zXr9Ce7gVeleQB2z0F3YWWmNvbE6cS20fR9E0XVIsYw5Grymjw9/3AG4wbOIQJ5Nayy+HgxKANjA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/sha256-browser": "5.2.0",
- "@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.936.0",
- "@aws-sdk/credential-provider-node": "3.936.0",
- "@aws-sdk/middleware-host-header": "3.936.0",
- "@aws-sdk/middleware-logger": "3.936.0",
- "@aws-sdk/middleware-recursion-detection": "3.936.0",
- "@aws-sdk/middleware-sdk-sqs": "3.936.0",
- "@aws-sdk/middleware-user-agent": "3.936.0",
- "@aws-sdk/region-config-resolver": "3.936.0",
- "@aws-sdk/types": "3.936.0",
- "@aws-sdk/util-endpoints": "3.936.0",
- "@aws-sdk/util-user-agent-browser": "3.936.0",
- "@aws-sdk/util-user-agent-node": "3.936.0",
- "@smithy/config-resolver": "^4.4.3",
- "@smithy/core": "^3.18.5",
- "@smithy/fetch-http-handler": "^5.3.6",
- "@smithy/hash-node": "^4.2.5",
- "@smithy/invalid-dependency": "^4.2.5",
- "@smithy/md5-js": "^4.2.5",
- "@smithy/middleware-content-length": "^4.2.5",
- "@smithy/middleware-endpoint": "^4.3.12",
- "@smithy/middleware-retry": "^4.4.12",
- "@smithy/middleware-serde": "^4.2.6",
- "@smithy/middleware-stack": "^4.2.5",
- "@smithy/node-config-provider": "^4.3.5",
- "@smithy/node-http-handler": "^4.4.5",
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/smithy-client": "^4.9.8",
- "@smithy/types": "^4.9.0",
- "@smithy/url-parser": "^4.2.5",
- "@smithy/util-base64": "^4.3.0",
- "@smithy/util-body-length-browser": "^4.2.0",
- "@smithy/util-body-length-node": "^4.2.1",
- "@smithy/util-defaults-mode-browser": "^4.3.11",
- "@smithy/util-defaults-mode-node": "^4.2.14",
- "@smithy/util-endpoints": "^3.2.5",
- "@smithy/util-middleware": "^4.2.5",
- "@smithy/util-retry": "^4.2.5",
- "@smithy/util-utf8": "^4.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/client-sso": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.936.0.tgz",
- "integrity": "sha512-0G73S2cDqYwJVvqL08eakj79MZG2QRaB56Ul8/Ps9oQxllr7DMI1IQ/N3j3xjxgpq/U36pkoFZ8aK1n7Sbr3IQ==",
- "license": "Apache-2.0",
+ "version": "3.1049.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.1049.0.tgz",
+ "integrity": "sha512-AiYaJS3uqH/u6uxxNOuCP9B7pUBDvsrf2LG6HTp7wGFbio3GxcJchUHpSBtbD0j2ZaGyZpOJyuPJ1/4sY5Z20Q==",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.936.0",
- "@aws-sdk/middleware-host-header": "3.936.0",
- "@aws-sdk/middleware-logger": "3.936.0",
- "@aws-sdk/middleware-recursion-detection": "3.936.0",
- "@aws-sdk/middleware-user-agent": "3.936.0",
- "@aws-sdk/region-config-resolver": "3.936.0",
- "@aws-sdk/types": "3.936.0",
- "@aws-sdk/util-endpoints": "3.936.0",
- "@aws-sdk/util-user-agent-browser": "3.936.0",
- "@aws-sdk/util-user-agent-node": "3.936.0",
- "@smithy/config-resolver": "^4.4.3",
- "@smithy/core": "^3.18.5",
- "@smithy/fetch-http-handler": "^5.3.6",
- "@smithy/hash-node": "^4.2.5",
- "@smithy/invalid-dependency": "^4.2.5",
- "@smithy/middleware-content-length": "^4.2.5",
- "@smithy/middleware-endpoint": "^4.3.12",
- "@smithy/middleware-retry": "^4.4.12",
- "@smithy/middleware-serde": "^4.2.6",
- "@smithy/middleware-stack": "^4.2.5",
- "@smithy/node-config-provider": "^4.3.5",
- "@smithy/node-http-handler": "^4.4.5",
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/smithy-client": "^4.9.8",
- "@smithy/types": "^4.9.0",
- "@smithy/url-parser": "^4.2.5",
- "@smithy/util-base64": "^4.3.0",
- "@smithy/util-body-length-browser": "^4.2.0",
- "@smithy/util-body-length-node": "^4.2.1",
- "@smithy/util-defaults-mode-browser": "^4.3.11",
- "@smithy/util-defaults-mode-node": "^4.2.14",
- "@smithy/util-endpoints": "^3.2.5",
- "@smithy/util-middleware": "^4.2.5",
- "@smithy/util-retry": "^4.2.5",
- "@smithy/util-utf8": "^4.2.0",
+ "@aws-sdk/core": "^3.974.12",
+ "@aws-sdk/credential-provider-node": "^3.972.43",
+ "@aws-sdk/middleware-sdk-sqs": "^3.972.24",
+ "@aws-sdk/types": "^3.973.8",
+ "@smithy/core": "^3.24.2",
+ "@smithy/fetch-http-handler": "^5.4.2",
+ "@smithy/node-http-handler": "^4.7.2",
+ "@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=20.0.0"
}
},
"node_modules/@aws-sdk/core": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz",
- "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.936.0",
- "@aws-sdk/xml-builder": "3.930.0",
- "@smithy/core": "^3.18.5",
- "@smithy/node-config-provider": "^4.3.5",
- "@smithy/property-provider": "^4.2.5",
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/signature-v4": "^5.3.5",
- "@smithy/smithy-client": "^4.9.8",
- "@smithy/types": "^4.9.0",
- "@smithy/util-base64": "^4.3.0",
- "@smithy/util-middleware": "^4.2.5",
- "@smithy/util-utf8": "^4.2.0",
+ "version": "3.974.12",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.12.tgz",
+ "integrity": "sha512-qrqgioqYFjwR6LatVNS1L2Vk++EwRIxqSQXPKNv5Ofux2D8UNgqMQ1znnMyEImXquVPTtbf71fc128pvmU6y9A==",
+ "dependencies": {
+ "@aws-sdk/types": "^3.973.8",
+ "@aws-sdk/xml-builder": "^3.972.24",
+ "@aws/lambda-invoke-store": "^0.2.2",
+ "@smithy/core": "^3.24.2",
+ "@smithy/signature-v4": "^5.4.2",
+ "@smithy/types": "^4.14.1",
+ "bowser": "^2.11.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=20.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.936.0.tgz",
- "integrity": "sha512-dKajFuaugEA5i9gCKzOaVy9uTeZcApE+7Z5wdcZ6j40523fY1a56khDAUYkCfwqa7sHci4ccmxBkAo+fW1RChA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "3.936.0",
- "@aws-sdk/types": "3.936.0",
- "@smithy/property-provider": "^4.2.5",
- "@smithy/types": "^4.9.0",
+ "version": "3.972.38",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.38.tgz",
+ "integrity": "sha512-m3WjZEgPtioMhPmwqUt+DhlTJ2i9ufR6DhfkyXojb9puEvfR+ur2U5shavu5/Cc9WHHsDCvALi6UFHgcqjhQ5w==",
+ "dependencies": {
+ "@aws-sdk/core": "^3.974.12",
+ "@aws-sdk/types": "^3.973.8",
+ "@smithy/core": "^3.24.2",
+ "@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=20.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-http": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.936.0.tgz",
- "integrity": "sha512-5FguODLXG1tWx/x8fBxH+GVrk7Hey2LbXV5h9SFzYCx/2h50URBm0+9hndg0Rd23+xzYe14F6SI9HA9c1sPnjg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "3.936.0",
- "@aws-sdk/types": "3.936.0",
- "@smithy/fetch-http-handler": "^5.3.6",
- "@smithy/node-http-handler": "^4.4.5",
- "@smithy/property-provider": "^4.2.5",
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/smithy-client": "^4.9.8",
- "@smithy/types": "^4.9.0",
- "@smithy/util-stream": "^4.5.6",
+ "version": "3.972.40",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.40.tgz",
+ "integrity": "sha512-D78L/m2Dr6cJnnSvWoAudPhQmCwmJ7j6APXsPYmFpPaKfQTfCSu0rdm8j14Np+VmXF9z8Aj8HE3xFpsrwtfgeg==",
+ "dependencies": {
+ "@aws-sdk/core": "^3.974.12",
+ "@aws-sdk/types": "^3.973.8",
+ "@smithy/core": "^3.24.2",
+ "@smithy/fetch-http-handler": "^5.4.2",
+ "@smithy/node-http-handler": "^4.7.2",
+ "@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=20.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.936.0.tgz",
- "integrity": "sha512-TbUv56ERQQujoHcLMcfL0Q6bVZfYF83gu/TjHkVkdSlHPOIKaG/mhE2XZSQzXv1cud6LlgeBbfzVAxJ+HPpffg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "3.936.0",
- "@aws-sdk/credential-provider-env": "3.936.0",
- "@aws-sdk/credential-provider-http": "3.936.0",
- "@aws-sdk/credential-provider-login": "3.936.0",
- "@aws-sdk/credential-provider-process": "3.936.0",
- "@aws-sdk/credential-provider-sso": "3.936.0",
- "@aws-sdk/credential-provider-web-identity": "3.936.0",
- "@aws-sdk/nested-clients": "3.936.0",
- "@aws-sdk/types": "3.936.0",
- "@smithy/credential-provider-imds": "^4.2.5",
- "@smithy/property-provider": "^4.2.5",
- "@smithy/shared-ini-file-loader": "^4.4.0",
- "@smithy/types": "^4.9.0",
+ "version": "3.972.42",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.42.tgz",
+ "integrity": "sha512-Mu5ESvFXeinafVM8jTIvRqcvK2Ehj4kz3auT39yUcHwu1Vfxo6xRlmUafdKLW4tusjAJukQwK09sCSMgOm7OKg==",
+ "dependencies": {
+ "@aws-sdk/core": "^3.974.12",
+ "@aws-sdk/credential-provider-env": "^3.972.38",
+ "@aws-sdk/credential-provider-http": "^3.972.40",
+ "@aws-sdk/credential-provider-login": "^3.972.42",
+ "@aws-sdk/credential-provider-process": "^3.972.38",
+ "@aws-sdk/credential-provider-sso": "^3.972.42",
+ "@aws-sdk/credential-provider-web-identity": "^3.972.42",
+ "@aws-sdk/nested-clients": "^3.997.10",
+ "@aws-sdk/types": "^3.973.8",
+ "@smithy/core": "^3.24.2",
+ "@smithy/credential-provider-imds": "^4.3.2",
+ "@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=20.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-login": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.936.0.tgz",
- "integrity": "sha512-8DVrdRqPyUU66gfV7VZNToh56ZuO5D6agWrkLQE/xbLJOm2RbeRgh6buz7CqV8ipRd6m+zCl9mM4F3osQLZn8Q==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "3.936.0",
- "@aws-sdk/nested-clients": "3.936.0",
- "@aws-sdk/types": "3.936.0",
- "@smithy/property-provider": "^4.2.5",
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/shared-ini-file-loader": "^4.4.0",
- "@smithy/types": "^4.9.0",
+ "version": "3.972.42",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.42.tgz",
+ "integrity": "sha512-O6WkZga3kf0yqyJYd1dbeJqVhEgJx/x1UaLgtbR+XuL/YP+K5y6QTxQKL7ka9z3jnQASESKGAPnRyt4D5hQrxA==",
+ "dependencies": {
+ "@aws-sdk/core": "^3.974.12",
+ "@aws-sdk/nested-clients": "^3.997.10",
+ "@aws-sdk/types": "^3.973.8",
+ "@smithy/core": "^3.24.2",
+ "@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=20.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.936.0.tgz",
- "integrity": "sha512-rk/2PCtxX9xDsQW8p5Yjoca3StqmQcSfkmD7nQ61AqAHL1YgpSQWqHE+HjfGGiHDYKG7PvE33Ku2GyA7lEIJAw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/credential-provider-env": "3.936.0",
- "@aws-sdk/credential-provider-http": "3.936.0",
- "@aws-sdk/credential-provider-ini": "3.936.0",
- "@aws-sdk/credential-provider-process": "3.936.0",
- "@aws-sdk/credential-provider-sso": "3.936.0",
- "@aws-sdk/credential-provider-web-identity": "3.936.0",
- "@aws-sdk/types": "3.936.0",
- "@smithy/credential-provider-imds": "^4.2.5",
- "@smithy/property-provider": "^4.2.5",
- "@smithy/shared-ini-file-loader": "^4.4.0",
- "@smithy/types": "^4.9.0",
+ "version": "3.972.43",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.43.tgz",
+ "integrity": "sha512-D/DJmbrWRP5BXEO3FH+ar4el+2n6OlGofiud7dQun2jES+AQEJjczenp1jBb4MBN7CpGpS8nsWGQLtuzc9tQbA==",
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "^3.972.38",
+ "@aws-sdk/credential-provider-http": "^3.972.40",
+ "@aws-sdk/credential-provider-ini": "^3.972.42",
+ "@aws-sdk/credential-provider-process": "^3.972.38",
+ "@aws-sdk/credential-provider-sso": "^3.972.42",
+ "@aws-sdk/credential-provider-web-identity": "^3.972.42",
+ "@aws-sdk/types": "^3.973.8",
+ "@smithy/core": "^3.24.2",
+ "@smithy/credential-provider-imds": "^4.3.2",
+ "@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=20.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.936.0.tgz",
- "integrity": "sha512-GpA4AcHb96KQK2PSPUyvChvrsEKiLhQ5NWjeef2IZ3Jc8JoosiedYqp6yhZR+S8cTysuvx56WyJIJc8y8OTrLA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "3.936.0",
- "@aws-sdk/types": "3.936.0",
- "@smithy/property-provider": "^4.2.5",
- "@smithy/shared-ini-file-loader": "^4.4.0",
- "@smithy/types": "^4.9.0",
+ "version": "3.972.38",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.38.tgz",
+ "integrity": "sha512-EnbYVajGgbkb24s0K1eo4VNAPV5mHIET7LSvirTaFCwkfrfaOJxtSE+wY/tJdKDS21cEYkZs2ruCaAm+W4iblg==",
+ "dependencies": {
+ "@aws-sdk/core": "^3.974.12",
+ "@aws-sdk/types": "^3.973.8",
+ "@smithy/core": "^3.24.2",
+ "@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=20.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.936.0.tgz",
- "integrity": "sha512-wHlEAJJvtnSyxTfNhN98JcU4taA1ED2JvuI2eePgawqBwS/Tzi0mhED1lvNIaWOkjfLd+nHALwszGrtJwEq4yQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/client-sso": "3.936.0",
- "@aws-sdk/core": "3.936.0",
- "@aws-sdk/token-providers": "3.936.0",
- "@aws-sdk/types": "3.936.0",
- "@smithy/property-provider": "^4.2.5",
- "@smithy/shared-ini-file-loader": "^4.4.0",
- "@smithy/types": "^4.9.0",
+ "version": "3.972.42",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.42.tgz",
+ "integrity": "sha512-RVV/9NbFwI8ZHEH5dn39lGyFmSbSVj1+orZdr6QsOe1mW9DCglmlen0cFaNZmCcqkqc7erNRHNBduxbeZuHAnw==",
+ "dependencies": {
+ "@aws-sdk/core": "^3.974.12",
+ "@aws-sdk/nested-clients": "^3.997.10",
+ "@aws-sdk/token-providers": "3.1049.0",
+ "@aws-sdk/types": "^3.973.8",
+ "@smithy/core": "^3.24.2",
+ "@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=20.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.936.0.tgz",
- "integrity": "sha512-v3qHAuoODkoRXsAF4RG+ZVO6q2P9yYBT4GMpMEfU9wXVNn7AIfwZgTwzSUfnjNiGva5BKleWVpRpJ9DeuLFbUg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "3.936.0",
- "@aws-sdk/nested-clients": "3.936.0",
- "@aws-sdk/types": "3.936.0",
- "@smithy/property-provider": "^4.2.5",
- "@smithy/shared-ini-file-loader": "^4.4.0",
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.936.0.tgz",
- "integrity": "sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.936.0",
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-logger": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.936.0.tgz",
- "integrity": "sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.936.0",
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.936.0.tgz",
- "integrity": "sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.936.0",
- "@aws/lambda-invoke-store": "^0.2.0",
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/types": "^4.9.0",
+ "version": "3.972.42",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.42.tgz",
+ "integrity": "sha512-/67fXX0ddllD4u2Nujc5PvT4byHgpMUfz6+RxIKi/0nFIckeorm7JvXgzBuDyVKw0s58EbofmETDWUf9vTEuHQ==",
+ "dependencies": {
+ "@aws-sdk/core": "^3.974.12",
+ "@aws-sdk/nested-clients": "^3.997.10",
+ "@aws-sdk/types": "^3.973.8",
+ "@smithy/core": "^3.24.2",
+ "@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=20.0.0"
}
},
"node_modules/@aws-sdk/middleware-sdk-sqs": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.936.0.tgz",
- "integrity": "sha512-39WohFCCPeD6LV8zLQq7CyYbIieetEDDNLsEPeGJSh2Uv9qpY9r6zJRSTjb8hTuQbHDSEOGntHMYKpLoHdoxdQ==",
- "license": "Apache-2.0",
+ "version": "3.972.24",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.972.24.tgz",
+ "integrity": "sha512-ej3vwWFzTP2B0FxlU2JelMaxplEncflFv2ARsoMQ9TXI/yfmsPEZw8zkOdsQp3rMEJ/vN7iKTYDYIcpeMmDRoQ==",
"dependencies": {
- "@aws-sdk/types": "3.936.0",
- "@smithy/smithy-client": "^4.9.8",
- "@smithy/types": "^4.9.0",
- "@smithy/util-hex-encoding": "^4.2.0",
- "@smithy/util-utf8": "^4.2.0",
+ "@aws-sdk/types": "^3.973.8",
+ "@smithy/core": "^3.24.2",
+ "@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.936.0.tgz",
- "integrity": "sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "3.936.0",
- "@aws-sdk/types": "3.936.0",
- "@aws-sdk/util-endpoints": "3.936.0",
- "@smithy/core": "^3.18.5",
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
+ "node": ">=20.0.0"
}
},
"node_modules/@aws-sdk/nested-clients": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.936.0.tgz",
- "integrity": "sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==",
- "license": "Apache-2.0",
+ "version": "3.997.10",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.10.tgz",
+ "integrity": "sha512-FtQ/Bt327peZJuyo4WZSOLVUTw9ujRxntepiC7L65FxA2P82Xlq0g14T22BuqBUeMjDoxa9nvwiMHjLIfP3eUg==",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.936.0",
- "@aws-sdk/middleware-host-header": "3.936.0",
- "@aws-sdk/middleware-logger": "3.936.0",
- "@aws-sdk/middleware-recursion-detection": "3.936.0",
- "@aws-sdk/middleware-user-agent": "3.936.0",
- "@aws-sdk/region-config-resolver": "3.936.0",
- "@aws-sdk/types": "3.936.0",
- "@aws-sdk/util-endpoints": "3.936.0",
- "@aws-sdk/util-user-agent-browser": "3.936.0",
- "@aws-sdk/util-user-agent-node": "3.936.0",
- "@smithy/config-resolver": "^4.4.3",
- "@smithy/core": "^3.18.5",
- "@smithy/fetch-http-handler": "^5.3.6",
- "@smithy/hash-node": "^4.2.5",
- "@smithy/invalid-dependency": "^4.2.5",
- "@smithy/middleware-content-length": "^4.2.5",
- "@smithy/middleware-endpoint": "^4.3.12",
- "@smithy/middleware-retry": "^4.4.12",
- "@smithy/middleware-serde": "^4.2.6",
- "@smithy/middleware-stack": "^4.2.5",
- "@smithy/node-config-provider": "^4.3.5",
- "@smithy/node-http-handler": "^4.4.5",
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/smithy-client": "^4.9.8",
- "@smithy/types": "^4.9.0",
- "@smithy/url-parser": "^4.2.5",
- "@smithy/util-base64": "^4.3.0",
- "@smithy/util-body-length-browser": "^4.2.0",
- "@smithy/util-body-length-node": "^4.2.1",
- "@smithy/util-defaults-mode-browser": "^4.3.11",
- "@smithy/util-defaults-mode-node": "^4.2.14",
- "@smithy/util-endpoints": "^3.2.5",
- "@smithy/util-middleware": "^4.2.5",
- "@smithy/util-retry": "^4.2.5",
- "@smithy/util-utf8": "^4.2.0",
+ "@aws-sdk/core": "^3.974.12",
+ "@aws-sdk/signature-v4-multi-region": "^3.996.27",
+ "@aws-sdk/types": "^3.973.8",
+ "@smithy/core": "^3.24.2",
+ "@smithy/fetch-http-handler": "^5.4.2",
+ "@smithy/node-http-handler": "^4.7.2",
+ "@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=20.0.0"
}
},
- "node_modules/@aws-sdk/region-config-resolver": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.936.0.tgz",
- "integrity": "sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==",
- "license": "Apache-2.0",
+ "node_modules/@aws-sdk/signature-v4-multi-region": {
+ "version": "3.996.27",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.27.tgz",
+ "integrity": "sha512-0Phbz4t6HI3D3skxvG2uI+VWU034/nSIw1T8d+FPzzQG9EQTrw94o9mOKO2Gv3n3Oc8P7JD7RAUxkoneLWv5Eg==",
"dependencies": {
- "@aws-sdk/types": "3.936.0",
- "@smithy/config-resolver": "^4.4.3",
- "@smithy/node-config-provider": "^4.3.5",
- "@smithy/types": "^4.9.0",
+ "@aws-sdk/types": "^3.973.8",
+ "@smithy/core": "^3.24.2",
+ "@smithy/signature-v4": "^5.4.2",
+ "@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=20.0.0"
}
},
"node_modules/@aws-sdk/token-providers": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.936.0.tgz",
- "integrity": "sha512-vvw8+VXk0I+IsoxZw0mX9TMJawUJvEsg3EF7zcCSetwhNPAU8Xmlhv7E/sN/FgSmm7b7DsqKoW6rVtQiCs1PWQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "3.936.0",
- "@aws-sdk/nested-clients": "3.936.0",
- "@aws-sdk/types": "3.936.0",
- "@smithy/property-provider": "^4.2.5",
- "@smithy/shared-ini-file-loader": "^4.4.0",
- "@smithy/types": "^4.9.0",
+ "version": "3.1049.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1049.0.tgz",
+ "integrity": "sha512-r7+d0lQMTHKypkmaF5jRTBYLYHCUHzt3gaVoN9SidLhQeWhCmHk3AKrboDTpPF5b7Pt7vKu3+oeMjznM2Eu1ow==",
+ "dependencies": {
+ "@aws-sdk/core": "^3.974.12",
+ "@aws-sdk/nested-clients": "^3.997.10",
+ "@aws-sdk/types": "^3.973.8",
+ "@smithy/core": "^3.24.2",
+ "@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=20.0.0"
}
},
"node_modules/@aws-sdk/types": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.936.0.tgz",
- "integrity": "sha512-uz0/VlMd2pP5MepdrHizd+T+OKfyK4r3OA9JI+L/lPKg0YFQosdJNCKisr6o70E3dh8iMpFYxF1UN/4uZsyARg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/util-endpoints": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.936.0.tgz",
- "integrity": "sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==",
- "license": "Apache-2.0",
+ "version": "3.973.8",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz",
+ "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==",
"dependencies": {
- "@aws-sdk/types": "3.936.0",
- "@smithy/types": "^4.9.0",
- "@smithy/url-parser": "^4.2.5",
- "@smithy/util-endpoints": "^3.2.5",
+ "@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=20.0.0"
}
},
"node_modules/@aws-sdk/util-locate-window": {
- "version": "3.893.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz",
- "integrity": "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==",
- "license": "Apache-2.0",
+ "version": "3.965.5",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz",
+ "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.936.0.tgz",
- "integrity": "sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.936.0",
- "@smithy/types": "^4.9.0",
- "bowser": "^2.11.0",
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.936.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.936.0.tgz",
- "integrity": "sha512-XOEc7PF9Op00pWV2AYCGDSu5iHgYjIO53Py2VUQTIvP7SRCaCsXmA33mjBvC2Ms6FhSyWNa4aK4naUGIz0hQcw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/middleware-user-agent": "3.936.0",
- "@aws-sdk/types": "3.936.0",
- "@smithy/node-config-provider": "^4.3.5",
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- },
- "peerDependencies": {
- "aws-crt": ">=1.0.0"
- },
- "peerDependenciesMeta": {
- "aws-crt": {
- "optional": true
- }
+ "node": ">=20.0.0"
}
},
"node_modules/@aws-sdk/xml-builder": {
- "version": "3.930.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.930.0.tgz",
- "integrity": "sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==",
- "license": "Apache-2.0",
+ "version": "3.972.24",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.24.tgz",
+ "integrity": "sha512-V8z5YcDPfsvzrBlj0xR1vhRtocblhYbqdreCJB/voGd4Sr5zjNAeWxexbnqVtskTJe0vFb5KMqbSL++ePl+zRw==",
"dependencies": {
- "@smithy/types": "^4.9.0",
- "fast-xml-parser": "5.2.5",
+ "@nodable/entities": "2.1.0",
+ "@smithy/types": "^4.14.1",
+ "fast-xml-parser": "5.7.3",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=20.0.0"
}
},
"node_modules/@aws/lambda-invoke-store": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.1.tgz",
- "integrity": "sha512-sIyFcoPZkTtNu9xFeEoynMef3bPJIAbOfUh+ueYcfhVl6xm2VRtMcMclSxmZCMnHHd4hlYKJeq/aggmBEWynww==",
- "license": "Apache-2.0",
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz",
+ "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==",
"engines": {
"node": ">=18.0.0"
}
@@ -829,10 +488,9 @@
}
},
"node_modules/@borewit/text-codec": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.0.tgz",
- "integrity": "sha512-X999CKBxGwX8wW+4gFibsbiNdwqmdQEXmUejIWaIqdrHBgS5ARIOOeyiQbHjP9G58xVEPcuvP6VwwH3A0OFTOA==",
- "license": "MIT",
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.2.tgz",
+ "integrity": "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Borewit"
@@ -1617,11 +1275,10 @@
}
},
"node_modules/@eslint/eslintrc/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz",
+ "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -1634,11 +1291,10 @@
}
},
"node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
"dev": true,
- "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -1662,11 +1318,10 @@
"license": "MIT"
},
"node_modules/@eslint/eslintrc/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
- "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -1684,22 +1339,117 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
- "node_modules/@ffmpeg-installer/darwin-arm64": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@ffmpeg-installer/darwin-arm64/-/darwin-arm64-4.1.5.tgz",
- "integrity": "sha512-hYqTiP63mXz7wSQfuqfFwfLOfwwFChUedeCVKkBtl/cliaTM7/ePI9bVzfZ2c+dWu3TqCwLDRWNSJ5pqZl8otA==",
- "cpu": [
- "arm64"
+ "node_modules/@fastify/otel": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/@fastify/otel/-/otel-0.18.0.tgz",
+ "integrity": "sha512-3TASCATfw+ctICSb4ymrv7iCm0qJ0N9CarB+CZ7zIJ7KqNbwI5JjyDL1/sxoC0ccTO1Zyd1iQ+oqncPg5FJXaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
],
- "hasInstallScript": true,
- "license": "https://git.ffmpeg.org/gitweb/ffmpeg.git/blob_plain/HEAD:/LICENSE.md",
- "optional": true,
- "os": [
- "darwin"
- ]
+ "dependencies": {
+ "@opentelemetry/core": "^2.0.0",
+ "@opentelemetry/instrumentation": "^0.212.0",
+ "@opentelemetry/semantic-conventions": "^1.28.0",
+ "minimatch": "^10.2.4"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.9.0"
+ }
},
- "node_modules/@ffmpeg-installer/darwin-x64": {
- "version": "4.1.0",
+ "node_modules/@fastify/otel/node_modules/@opentelemetry/api-logs": {
+ "version": "0.212.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.212.0.tgz",
+ "integrity": "sha512-TEEVrLbNROUkYY51sBJGk7lO/OLjuepch8+hmpM6ffMJQ2z/KVCjdHuCFX6fJj8OkJP2zckPjrJzQtXU3IAsFg==",
+ "dependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation": {
+ "version": "0.212.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.212.0.tgz",
+ "integrity": "sha512-IyXmpNnifNouMOe0I/gX7ENfv2ZCNdYTF0FpCsoBcpbIHzk81Ww9rQTYTnvghszCg7qGrIhNvWC8dhEifgX9Jg==",
+ "dependencies": {
+ "@opentelemetry/api-logs": "0.212.0",
+ "import-in-the-middle": "^2.0.6",
+ "require-in-the-middle": "^8.0.0"
+ },
+ "engines": {
+ "node": "^18.19.0 || >=20.6.0"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.3.0"
+ }
+ },
+ "node_modules/@fastify/otel/node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/@fastify/otel/node_modules/brace-expansion": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
+ "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/@fastify/otel/node_modules/import-in-the-middle": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-2.0.6.tgz",
+ "integrity": "sha512-3vZV3jX0XRFW3EJDTwzWoZa+RH1b8eTTx6YOCjglrLyPuepwoBti1k3L2dKwdCUrnVEfc5CuRuGstaC/uQJJaw==",
+ "dependencies": {
+ "acorn": "^8.15.0",
+ "acorn-import-attributes": "^1.9.5",
+ "cjs-module-lexer": "^2.2.0",
+ "module-details-from-path": "^1.0.4"
+ }
+ },
+ "node_modules/@fastify/otel/node_modules/minimatch": {
+ "version": "10.2.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
+ "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
+ "dependencies": {
+ "brace-expansion": "^5.0.5"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@ffmpeg-installer/darwin-arm64": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/@ffmpeg-installer/darwin-arm64/-/darwin-arm64-4.1.5.tgz",
+ "integrity": "sha512-hYqTiP63mXz7wSQfuqfFwfLOfwwFChUedeCVKkBtl/cliaTM7/ePI9bVzfZ2c+dWu3TqCwLDRWNSJ5pqZl8otA==",
+ "cpu": [
+ "arm64"
+ ],
+ "hasInstallScript": true,
+ "license": "https://git.ffmpeg.org/gitweb/ffmpeg.git/blob_plain/HEAD:/LICENSE.md",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@ffmpeg-installer/darwin-x64": {
+ "version": "4.1.0",
"resolved": "https://registry.npmjs.org/@ffmpeg-installer/darwin-x64/-/darwin-x64-4.1.0.tgz",
"integrity": "sha512-Z4EyG3cIFjdhlY8wI9aLUXuH8nVt7E9SlMVZtWvSPnm2sm37/yC2CwjUzyCQbJbySnef1tQwGG2Sx+uWhd9IAw==",
"cpu": [
@@ -1861,22 +1611,20 @@
}
},
"node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
"dev": true,
- "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
- "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -2372,17 +2120,16 @@
}
},
"node_modules/@jimp/core": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/core/-/core-1.6.0.tgz",
- "integrity": "sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/core/-/core-1.6.1.tgz",
+ "integrity": "sha512-+BoKC5G6hkrSy501zcJ2EpfnllP+avPevcBfRcZe/CW+EwEfY6X1EZ8QWyT7NpDIvEEJb1fdJnMMfUnFkxmw9A==",
"dependencies": {
- "@jimp/file-ops": "1.6.0",
- "@jimp/types": "1.6.0",
- "@jimp/utils": "1.6.0",
+ "@jimp/file-ops": "1.6.1",
+ "@jimp/types": "1.6.1",
+ "@jimp/utils": "1.6.1",
"await-to-js": "^3.0.0",
"exif-parser": "^0.1.12",
- "file-type": "^16.0.0",
+ "file-type": "^21.3.3",
"mime": "3"
},
"engines": {
@@ -2393,7 +2140,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
"integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
- "license": "MIT",
"bin": {
"mime": "cli.js"
},
@@ -2402,14 +2148,13 @@
}
},
"node_modules/@jimp/diff": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/diff/-/diff-1.6.0.tgz",
- "integrity": "sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/diff/-/diff-1.6.1.tgz",
+ "integrity": "sha512-YkKDPdHjLgo1Api3+Bhc0GLAygldlpt97NfOKoNg1U6IUNXA6X2MgosCjPfSBiSvJvrrz1fsIR+/4cfYXBI/HQ==",
"dependencies": {
- "@jimp/plugin-resize": "1.6.0",
- "@jimp/types": "1.6.0",
- "@jimp/utils": "1.6.0",
+ "@jimp/plugin-resize": "1.6.1",
+ "@jimp/types": "1.6.1",
+ "@jimp/utils": "1.6.1",
"pixelmatch": "^5.3.0"
},
"engines": {
@@ -2417,23 +2162,21 @@
}
},
"node_modules/@jimp/file-ops": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.6.0.tgz",
- "integrity": "sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.6.1.tgz",
+ "integrity": "sha512-T+gX6osHjprbDRad0/B71Evyre7ZdVY1z/gFGEG9Z8KOtZPKboWvPeP2UjbZYWQLy9UKCPQX1FNAnDiOPkJL7w==",
"engines": {
"node": ">=18"
}
},
"node_modules/@jimp/js-bmp": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.6.0.tgz",
- "integrity": "sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.6.1.tgz",
+ "integrity": "sha512-xzWzNT4/u5zGrTT3Tme9sGU7YzIKxi13+BCQwLqACbt5DXf9SAfdzRkopZQnmDko+6In5nqaT89Gjs43/WdnYQ==",
"dependencies": {
- "@jimp/core": "1.6.0",
- "@jimp/types": "1.6.0",
- "@jimp/utils": "1.6.0",
+ "@jimp/core": "1.6.1",
+ "@jimp/types": "1.6.1",
+ "@jimp/utils": "1.6.1",
"bmp-ts": "^1.0.9"
},
"engines": {
@@ -2441,13 +2184,12 @@
}
},
"node_modules/@jimp/js-gif": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.6.0.tgz",
- "integrity": "sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.6.1.tgz",
+ "integrity": "sha512-YjY2W26rQa05XhanYhRZ7dingCiNN+T2Ymb1JiigIbABY0B28wHE3v3Cf1/HZPWGu0hOg36ylaKgV5KxF2M58w==",
"dependencies": {
- "@jimp/core": "1.6.0",
- "@jimp/types": "1.6.0",
+ "@jimp/core": "1.6.1",
+ "@jimp/types": "1.6.1",
"gifwrap": "^0.10.1",
"omggif": "^1.0.10"
},
@@ -2456,13 +2198,12 @@
}
},
"node_modules/@jimp/js-jpeg": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.6.0.tgz",
- "integrity": "sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.6.1.tgz",
+ "integrity": "sha512-HT9H3yOmlOFzYmdI15IYdfy6ggQhSRIaHeA+OTJSEORXBqEo97sUZu/DsgHIcX5NJ7TkJBTgZ9BZXsV6UbsyMg==",
"dependencies": {
- "@jimp/core": "1.6.0",
- "@jimp/types": "1.6.0",
+ "@jimp/core": "1.6.1",
+ "@jimp/types": "1.6.1",
"jpeg-js": "^0.4.4"
},
"engines": {
@@ -2470,13 +2211,12 @@
}
},
"node_modules/@jimp/js-png": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.6.0.tgz",
- "integrity": "sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.6.1.tgz",
+ "integrity": "sha512-SZ/KVhI5UjcSzzlXsXdIi/LhJ7UShf2NkMOtVrbZQcGzsqNtynAelrOXeoTxcanfVqmNhAoVHg8yR2cYoqrYjA==",
"dependencies": {
- "@jimp/core": "1.6.0",
- "@jimp/types": "1.6.0",
+ "@jimp/core": "1.6.1",
+ "@jimp/types": "1.6.1",
"pngjs": "^7.0.0"
},
"engines": {
@@ -2484,13 +2224,12 @@
}
},
"node_modules/@jimp/js-tiff": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.6.0.tgz",
- "integrity": "sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.6.1.tgz",
+ "integrity": "sha512-jDG/eJquID1M4MBlKMmDRBmz2TpXMv7TUyu2nIRUxhlUc2ogC82T+VQUkca9GJH1BBJ9dx5sSE5dGkWNjIbZxw==",
"dependencies": {
- "@jimp/core": "1.6.0",
- "@jimp/types": "1.6.0",
+ "@jimp/core": "1.6.1",
+ "@jimp/types": "1.6.1",
"utif2": "^4.1.0"
},
"engines": {
@@ -2498,13 +2237,12 @@
}
},
"node_modules/@jimp/plugin-blit": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.6.0.tgz",
- "integrity": "sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.6.1.tgz",
+ "integrity": "sha512-MwnI7C7K81uWddY9FLw1fCOIy6SsPIUftUz36Spt7jisCn8/40DhQMlSxpxTNelnZb/2SnloFimQfRZAmHLOqQ==",
"dependencies": {
- "@jimp/types": "1.6.0",
- "@jimp/utils": "1.6.0",
+ "@jimp/types": "1.6.1",
+ "@jimp/utils": "1.6.1",
"zod": "^3.23.8"
},
"engines": {
@@ -2512,25 +2250,23 @@
}
},
"node_modules/@jimp/plugin-blur": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.6.0.tgz",
- "integrity": "sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.6.1.tgz",
+ "integrity": "sha512-lIo7Tzp5jQu30EFFSK/phXANK3citKVEjepDjQ6ljHoIFtuMRrnybnmI2Md24ulvWlDaz+hh3n6qrMb8ydwhZQ==",
"dependencies": {
- "@jimp/core": "1.6.0",
- "@jimp/utils": "1.6.0"
+ "@jimp/core": "1.6.1",
+ "@jimp/utils": "1.6.1"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@jimp/plugin-circle": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.6.0.tgz",
- "integrity": "sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.6.1.tgz",
+ "integrity": "sha512-kK1PavY6cKHNNKce37vdV4Tmpc1/zDKngGoeOV3j+EMatoHFZUinV3s6F9aWryPs3A0xhCLZgdJ6Zeea1d5LCQ==",
"dependencies": {
- "@jimp/types": "1.6.0",
+ "@jimp/types": "1.6.1",
"zod": "^3.23.8"
},
"engines": {
@@ -2538,14 +2274,13 @@
}
},
"node_modules/@jimp/plugin-color": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.6.0.tgz",
- "integrity": "sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.6.1.tgz",
+ "integrity": "sha512-LtUN1vAP+LRlZAtTNVhDRSiXx+26Kbz3zJaG6a5k59gQ95jgT5mknnF8lxkHcqJthM4MEk3/tPxkdJpEybyF/A==",
"dependencies": {
- "@jimp/core": "1.6.0",
- "@jimp/types": "1.6.0",
- "@jimp/utils": "1.6.0",
+ "@jimp/core": "1.6.1",
+ "@jimp/types": "1.6.1",
+ "@jimp/utils": "1.6.1",
"tinycolor2": "^1.6.0",
"zod": "^3.23.8"
},
@@ -2554,16 +2289,15 @@
}
},
"node_modules/@jimp/plugin-contain": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.6.0.tgz",
- "integrity": "sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ==",
- "license": "MIT",
- "dependencies": {
- "@jimp/core": "1.6.0",
- "@jimp/plugin-blit": "1.6.0",
- "@jimp/plugin-resize": "1.6.0",
- "@jimp/types": "1.6.0",
- "@jimp/utils": "1.6.0",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.6.1.tgz",
+ "integrity": "sha512-m0qhrfA8jkTqretGv4w+T/ADFR4GwBpE0sCOC2uJ0dzr44/ddOMsIdrpi89kabqYiPYIrxkgdCVCLm3zn1Vkkg==",
+ "dependencies": {
+ "@jimp/core": "1.6.1",
+ "@jimp/plugin-blit": "1.6.1",
+ "@jimp/plugin-resize": "1.6.1",
+ "@jimp/types": "1.6.1",
+ "@jimp/utils": "1.6.1",
"zod": "^3.23.8"
},
"engines": {
@@ -2571,15 +2305,14 @@
}
},
"node_modules/@jimp/plugin-cover": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.6.0.tgz",
- "integrity": "sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.6.1.tgz",
+ "integrity": "sha512-hZytnsth0zoll6cPf434BrT+p/v569Wr5tyO6Dp0dH1IDPhzhB5F38sZGMLDo7bzQiN9JFVB3fxkcJ/WYCJ3Mg==",
"dependencies": {
- "@jimp/core": "1.6.0",
- "@jimp/plugin-crop": "1.6.0",
- "@jimp/plugin-resize": "1.6.0",
- "@jimp/types": "1.6.0",
+ "@jimp/core": "1.6.1",
+ "@jimp/plugin-crop": "1.6.1",
+ "@jimp/plugin-resize": "1.6.1",
+ "@jimp/types": "1.6.1",
"zod": "^3.23.8"
},
"engines": {
@@ -2587,14 +2320,13 @@
}
},
"node_modules/@jimp/plugin-crop": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.6.0.tgz",
- "integrity": "sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.6.1.tgz",
+ "integrity": "sha512-EerRSLlclXyKDnYc/H9w/1amZW7b7v3OGi/VlerPd2M/pAu5X8TkyYWtfqYCXnNp1Ixtd8oCo9zGfY9zoXT4rg==",
"dependencies": {
- "@jimp/core": "1.6.0",
- "@jimp/types": "1.6.0",
- "@jimp/utils": "1.6.0",
+ "@jimp/core": "1.6.1",
+ "@jimp/types": "1.6.1",
+ "@jimp/utils": "1.6.1",
"zod": "^3.23.8"
},
"engines": {
@@ -2602,13 +2334,12 @@
}
},
"node_modules/@jimp/plugin-displace": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.6.0.tgz",
- "integrity": "sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.6.1.tgz",
+ "integrity": "sha512-K07QVl7xQwIfD6KfxRV/c3E9e7ZBXxUXdWuvoTWcKHL2qV48MOF5Nqbz/aJW4ThnQARIsxvYlZjPFiqkCjlU+g==",
"dependencies": {
- "@jimp/types": "1.6.0",
- "@jimp/utils": "1.6.0",
+ "@jimp/types": "1.6.1",
+ "@jimp/utils": "1.6.1",
"zod": "^3.23.8"
},
"engines": {
@@ -2616,25 +2347,23 @@
}
},
"node_modules/@jimp/plugin-dither": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.6.0.tgz",
- "integrity": "sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.6.1.tgz",
+ "integrity": "sha512-+2V+GCV2WycMoX1/z977TkZ8Zq/4MVSKElHYatgUqtwXMi2fDK2gKYU2g9V39IqFvTJsTIsK0+58VFz/ROBVew==",
"dependencies": {
- "@jimp/types": "1.6.0"
+ "@jimp/types": "1.6.1"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@jimp/plugin-fisheye": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.6.0.tgz",
- "integrity": "sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.6.1.tgz",
+ "integrity": "sha512-XtS5ZyoZ0vxZxJ6gkqI63SivhtI58vX95foMPM+cyzYkRsJXMOYCr8DScxF5bp4Xr003NjYm/P+7+08tibwzHA==",
"dependencies": {
- "@jimp/types": "1.6.0",
- "@jimp/utils": "1.6.0",
+ "@jimp/types": "1.6.1",
+ "@jimp/utils": "1.6.1",
"zod": "^3.23.8"
},
"engines": {
@@ -2642,12 +2371,11 @@
}
},
"node_modules/@jimp/plugin-flip": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.6.0.tgz",
- "integrity": "sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.6.1.tgz",
+ "integrity": "sha512-ws38W/sGj7LobNRayQ83garxiktOyWxM5vO/y4a/2cy9v65SLEUzVkrj+oeAaUSSObdz4HcCEla7XtGlnAGAaA==",
"dependencies": {
- "@jimp/types": "1.6.0",
+ "@jimp/types": "1.6.1",
"zod": "^3.23.8"
},
"engines": {
@@ -2655,20 +2383,19 @@
}
},
"node_modules/@jimp/plugin-hash": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.6.0.tgz",
- "integrity": "sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q==",
- "license": "MIT",
- "dependencies": {
- "@jimp/core": "1.6.0",
- "@jimp/js-bmp": "1.6.0",
- "@jimp/js-jpeg": "1.6.0",
- "@jimp/js-png": "1.6.0",
- "@jimp/js-tiff": "1.6.0",
- "@jimp/plugin-color": "1.6.0",
- "@jimp/plugin-resize": "1.6.0",
- "@jimp/types": "1.6.0",
- "@jimp/utils": "1.6.0",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.6.1.tgz",
+ "integrity": "sha512-sZt6ZcMX6i8vFWb4GYnw0pR/o9++ef0dTVcboTB5B/g7nrxCODIB4wfEkJ/YqZM5wUvol77K1qeS0/rVO6z21A==",
+ "dependencies": {
+ "@jimp/core": "1.6.1",
+ "@jimp/js-bmp": "1.6.1",
+ "@jimp/js-jpeg": "1.6.1",
+ "@jimp/js-png": "1.6.1",
+ "@jimp/js-tiff": "1.6.1",
+ "@jimp/plugin-color": "1.6.1",
+ "@jimp/plugin-resize": "1.6.1",
+ "@jimp/types": "1.6.1",
+ "@jimp/utils": "1.6.1",
"any-base": "^1.1.0"
},
"engines": {
@@ -2676,12 +2403,11 @@
}
},
"node_modules/@jimp/plugin-mask": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.6.0.tgz",
- "integrity": "sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.6.1.tgz",
+ "integrity": "sha512-SIG0/FcmEj3tkwFxc7fAGLO8o4uNzMpSOdQOhbCgxefQKq5wOVMk9BQx/sdMPBwtMLr9WLq0GzLA/rk6t2v20A==",
"dependencies": {
- "@jimp/types": "1.6.0",
+ "@jimp/types": "1.6.1",
"zod": "^3.23.8"
},
"engines": {
@@ -2689,16 +2415,15 @@
}
},
"node_modules/@jimp/plugin-print": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.6.0.tgz",
- "integrity": "sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A==",
- "license": "MIT",
- "dependencies": {
- "@jimp/core": "1.6.0",
- "@jimp/js-jpeg": "1.6.0",
- "@jimp/js-png": "1.6.0",
- "@jimp/plugin-blit": "1.6.0",
- "@jimp/types": "1.6.0",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.6.1.tgz",
+ "integrity": "sha512-BYVz/X3Xzv8XYilVeDy11NOp0h7BTDjlOtu0BekIFHP1yHVd24AXNzbOy52XlzYZWQ0Dl36HOHEpl/nSNrzc6w==",
+ "dependencies": {
+ "@jimp/core": "1.6.1",
+ "@jimp/js-jpeg": "1.6.1",
+ "@jimp/js-png": "1.6.1",
+ "@jimp/plugin-blit": "1.6.1",
+ "@jimp/types": "1.6.1",
"parse-bmfont-ascii": "^1.0.6",
"parse-bmfont-binary": "^1.0.6",
"parse-bmfont-xml": "^1.1.6",
@@ -2710,10 +2435,9 @@
}
},
"node_modules/@jimp/plugin-quantize": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-quantize/-/plugin-quantize-1.6.0.tgz",
- "integrity": "sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-quantize/-/plugin-quantize-1.6.1.tgz",
+ "integrity": "sha512-J2En9PLURfP+vwYDtuZ9T8yBW6BWYZBScydAjRiPBmJfEhTcNQqiiQODrZf7EqbbX/Sy5H6dAeRiqkgoV9N6Ww==",
"dependencies": {
"image-q": "^4.0.0",
"zod": "^3.23.8"
@@ -2723,13 +2447,12 @@
}
},
"node_modules/@jimp/plugin-resize": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.6.0.tgz",
- "integrity": "sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.6.1.tgz",
+ "integrity": "sha512-CLkrtJoIz2HdWnpYiN6p8KYcPc00rCH/SUu6o+lfZL05Q4uhecJlnvXuj9x+U6mDn3ldPmJj6aZqMHuUJzdVqg==",
"dependencies": {
- "@jimp/core": "1.6.0",
- "@jimp/types": "1.6.0",
+ "@jimp/core": "1.6.1",
+ "@jimp/types": "1.6.1",
"zod": "^3.23.8"
},
"engines": {
@@ -2737,16 +2460,15 @@
}
},
"node_modules/@jimp/plugin-rotate": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.6.0.tgz",
- "integrity": "sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw==",
- "license": "MIT",
- "dependencies": {
- "@jimp/core": "1.6.0",
- "@jimp/plugin-crop": "1.6.0",
- "@jimp/plugin-resize": "1.6.0",
- "@jimp/types": "1.6.0",
- "@jimp/utils": "1.6.0",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.6.1.tgz",
+ "integrity": "sha512-nOjVjbbj705B02ksysKnh0POAwEBXZtJ9zQ5qC+X7Tavl3JNn+P3BzQovbBxLPSbUSld6XID9z5ijin4PtOAUg==",
+ "dependencies": {
+ "@jimp/core": "1.6.1",
+ "@jimp/plugin-crop": "1.6.1",
+ "@jimp/plugin-resize": "1.6.1",
+ "@jimp/types": "1.6.1",
+ "@jimp/utils": "1.6.1",
"zod": "^3.23.8"
},
"engines": {
@@ -2754,16 +2476,15 @@
}
},
"node_modules/@jimp/plugin-threshold": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.6.0.tgz",
- "integrity": "sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w==",
- "license": "MIT",
- "dependencies": {
- "@jimp/core": "1.6.0",
- "@jimp/plugin-color": "1.6.0",
- "@jimp/plugin-hash": "1.6.0",
- "@jimp/types": "1.6.0",
- "@jimp/utils": "1.6.0",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.6.1.tgz",
+ "integrity": "sha512-JOKv9F8s6tnVLf4sB/2fF0F339EFnHvgEdFYugO6VhowKLsap0pEZmLyE/DlRnYtIj2RddHZVxVMp/eKJ04l2Q==",
+ "dependencies": {
+ "@jimp/core": "1.6.1",
+ "@jimp/plugin-color": "1.6.1",
+ "@jimp/plugin-hash": "1.6.1",
+ "@jimp/types": "1.6.1",
+ "@jimp/utils": "1.6.1",
"zod": "^3.23.8"
},
"engines": {
@@ -2771,10 +2492,9 @@
}
},
"node_modules/@jimp/types": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/types/-/types-1.6.0.tgz",
- "integrity": "sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/types/-/types-1.6.1.tgz",
+ "integrity": "sha512-leI7YbveTNi565m910XgIOwXyuu074H5qazAD1357HImJSv2hqxnWXpwxQbadGWZ7goZRYBDZy5lpqud0p7q5w==",
"dependencies": {
"zod": "^3.23.8"
},
@@ -2783,12 +2503,11 @@
}
},
"node_modules/@jimp/utils": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-1.6.0.tgz",
- "integrity": "sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA==",
- "license": "MIT",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-1.6.1.tgz",
+ "integrity": "sha512-veFPRd93FCnS7AgmCkPgARVGoDRrJ9cm1ujuNyA+UfQ5VKbED2002sm5XfFLFwTsKC8j04heTrwe+tU1dluXOw==",
"dependencies": {
- "@jimp/types": "1.6.0",
+ "@jimp/types": "1.6.1",
"tinycolor2": "^1.6.0"
},
"engines": {
@@ -2864,6 +2583,17 @@
"url": "https://paulmillr.com/funding/"
}
},
+ "node_modules/@nodable/entities": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz",
+ "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodable"
+ }
+ ]
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -2903,19 +2633,17 @@
}
},
"node_modules/@opentelemetry/api": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
- "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==",
- "license": "Apache-2.0",
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz",
+ "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==",
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/@opentelemetry/api-logs": {
- "version": "0.204.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.204.0.tgz",
- "integrity": "sha512-DqxY8yoAaiBPivoJD4UtgrMS8gEmzZ5lnaxzPojzLVHBGqPxgWm4zcuvcUHZiqQ6kRX2Klel2r9y8cA2HAtqpw==",
- "license": "Apache-2.0",
+ "version": "0.214.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.214.0.tgz",
+ "integrity": "sha512-40lSJeqYO8Uz2Yj7u94/SJWE/wONa7rmMKjI1ZcIjgf3MHNHv1OZUCrCETGuaRF62d5pQD1wKIW+L4lmSMTzZA==",
"dependencies": {
"@opentelemetry/api": "^1.3.0"
},
@@ -2923,23 +2651,10 @@
"node": ">=8.0.0"
}
},
- "node_modules/@opentelemetry/context-async-hooks": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.2.0.tgz",
- "integrity": "sha512-qRkLWiUEZNAmYapZ7KGS5C4OmBLcP/H2foXeOEaowYCR0wi89fHejrfYfbuLVCMLp/dWZXKvQusdbUEZjERfwQ==",
- "license": "Apache-2.0",
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.10.0"
- }
- },
"node_modules/@opentelemetry/core": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz",
- "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==",
- "license": "Apache-2.0",
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.7.1.tgz",
+ "integrity": "sha512-QAqIj32AtK6+pEVNG7EOVxHdE06RP+FM5qpiEJ4RtDcFIqKUZHYhl7/7UY5efhwmwNAg7j8QbJVBLxMerc0+gw==",
"dependencies": {
"@opentelemetry/semantic-conventions": "^1.29.0"
},
@@ -2951,14 +2666,13 @@
}
},
"node_modules/@opentelemetry/instrumentation": {
- "version": "0.204.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.204.0.tgz",
- "integrity": "sha512-vV5+WSxktzoMP8JoYWKeopChy6G3HKk4UQ2hESCRDUUTZqQ3+nM3u8noVG0LmNfRWwcFBnbZ71GKC7vaYYdJ1g==",
- "license": "Apache-2.0",
+ "version": "0.214.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.214.0.tgz",
+ "integrity": "sha512-MHqEX5Dk59cqVah5LiARMACku7jXSVk9iVDWOea4x3cr7VfdByeDCURK6o1lntT1JS/Tsovw01UJrBhN3/uC5w==",
"dependencies": {
- "@opentelemetry/api-logs": "0.204.0",
- "import-in-the-middle": "^1.8.1",
- "require-in-the-middle": "^7.1.1"
+ "@opentelemetry/api-logs": "0.214.0",
+ "import-in-the-middle": "^3.0.0",
+ "require-in-the-middle": "^8.0.0"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
@@ -2968,14 +2682,13 @@
}
},
"node_modules/@opentelemetry/instrumentation-amqplib": {
- "version": "0.51.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.51.0.tgz",
- "integrity": "sha512-XGmjYwjVRktD4agFnWBWQXo9SiYHKBxR6Ag3MLXwtLE4R99N3a08kGKM5SC1qOFKIELcQDGFEFT9ydXMH00Luw==",
- "license": "Apache-2.0",
+ "version": "0.61.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.61.0.tgz",
+ "integrity": "sha512-mCKoyTGfRNisge4br0NpOFSy2Z1NnEW8hbCJdUDdJFHrPqVzc4IIBPA/vX0U+LUcQqrQvJX+HMIU0dbDRe0i0Q==",
"dependencies": {
"@opentelemetry/core": "^2.0.0",
- "@opentelemetry/instrumentation": "^0.204.0",
- "@opentelemetry/semantic-conventions": "^1.27.0"
+ "@opentelemetry/instrumentation": "^0.214.0",
+ "@opentelemetry/semantic-conventions": "^1.33.0"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
@@ -2985,13 +2698,12 @@
}
},
"node_modules/@opentelemetry/instrumentation-connect": {
- "version": "0.48.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.48.0.tgz",
- "integrity": "sha512-OMjc3SFL4pC16PeK+tDhwP7MRvDPalYCGSvGqUhX5rASkI2H0RuxZHOWElYeXkV0WP+70Gw6JHWac/2Zqwmhdw==",
- "license": "Apache-2.0",
+ "version": "0.57.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.57.0.tgz",
+ "integrity": "sha512-FMEBChnI4FLN5TE9DHwfH7QpNir1JzXno1uz/TAucVdLCyrG0jTrKIcNHt/i30A0M2AunNBCkcd8Ei26dIPKdg==",
"dependencies": {
"@opentelemetry/core": "^2.0.0",
- "@opentelemetry/instrumentation": "^0.204.0",
+ "@opentelemetry/instrumentation": "^0.214.0",
"@opentelemetry/semantic-conventions": "^1.27.0",
"@types/connect": "3.4.38"
},
@@ -3003,29 +2715,11 @@
}
},
"node_modules/@opentelemetry/instrumentation-dataloader": {
- "version": "0.22.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.22.0.tgz",
- "integrity": "sha512-bXnTcwtngQsI1CvodFkTemrrRSQjAjZxqHVc+CJZTDnidT0T6wt3jkKhnsjU/Kkkc0lacr6VdRpCu2CUWa0OKw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/instrumentation": "^0.204.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-express": {
- "version": "0.53.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.53.0.tgz",
- "integrity": "sha512-r/PBafQmFYRjuxLYEHJ3ze1iBnP2GDA1nXOSS6E02KnYNZAVjj6WcDA1MSthtdAUUK0XnotHvvWM8/qz7DMO5A==",
- "license": "Apache-2.0",
+ "version": "0.31.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.31.0.tgz",
+ "integrity": "sha512-f654tZFQXS5YeLDNb9KySrwtg7SnqZN119FauD7acBoTzuLduaiGTNz88ixcVSOOMGZ+EjJu/RFtx5klObC95g==",
"dependencies": {
- "@opentelemetry/core": "^2.0.0",
- "@opentelemetry/instrumentation": "^0.204.0",
- "@opentelemetry/semantic-conventions": "^1.27.0"
+ "@opentelemetry/instrumentation": "^0.214.0"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
@@ -3035,13 +2729,12 @@
}
},
"node_modules/@opentelemetry/instrumentation-fs": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.24.0.tgz",
- "integrity": "sha512-HjIxJ6CBRD770KNVaTdMXIv29Sjz4C1kPCCK5x1Ujpc6SNnLGPqUVyJYZ3LUhhnHAqdbrl83ogVWjCgeT4Q0yw==",
- "license": "Apache-2.0",
+ "version": "0.33.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.33.0.tgz",
+ "integrity": "sha512-sCZWXGalQ01wr3tAhSR9ucqFJ0phidpAle6/17HVjD6gN8FLmZMK/8sKxdXYHy3PbnlV1P4zeiSVFNKpbFMNLA==",
"dependencies": {
"@opentelemetry/core": "^2.0.0",
- "@opentelemetry/instrumentation": "^0.204.0"
+ "@opentelemetry/instrumentation": "^0.214.0"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
@@ -3051,12 +2744,11 @@
}
},
"node_modules/@opentelemetry/instrumentation-generic-pool": {
- "version": "0.48.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.48.0.tgz",
- "integrity": "sha512-TLv/On8pufynNR+pUbpkyvuESVASZZKMlqCm4bBImTpXKTpqXaJJ3o/MUDeMlM91rpen+PEv2SeyOKcHCSlgag==",
- "license": "Apache-2.0",
+ "version": "0.57.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.57.0.tgz",
+ "integrity": "sha512-orhmlaK+ZIW9hKU+nHTbXrCSXZcH83AescTqmpamHRobRmYSQwRbD0a1odc0yAzuzOtxYiHiXAnpnIpaSSY7Ow==",
"dependencies": {
- "@opentelemetry/instrumentation": "^0.204.0"
+ "@opentelemetry/instrumentation": "^0.214.0"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
@@ -3066,12 +2758,11 @@
}
},
"node_modules/@opentelemetry/instrumentation-graphql": {
- "version": "0.52.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.52.0.tgz",
- "integrity": "sha512-3fEJ8jOOMwopvldY16KuzHbRhPk8wSsOTSF0v2psmOCGewh6ad+ZbkTx/xyUK9rUdUMWAxRVU0tFpj4Wx1vkPA==",
- "license": "Apache-2.0",
+ "version": "0.62.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.62.0.tgz",
+ "integrity": "sha512-3YNuLVPUxafXkH1jBAbGsKNsP3XVzcFDhCDCE3OqBwCwShlqQbLMRMFh1T/d5jaVZiGVmSsfof+ICKD2iOV8xg==",
"dependencies": {
- "@opentelemetry/instrumentation": "^0.204.0"
+ "@opentelemetry/instrumentation": "^0.214.0"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
@@ -3081,13 +2772,12 @@
}
},
"node_modules/@opentelemetry/instrumentation-hapi": {
- "version": "0.51.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.51.0.tgz",
- "integrity": "sha512-qyf27DaFNL1Qhbo/da+04MSCw982B02FhuOS5/UF+PMhM61CcOiu7fPuXj8TvbqyReQuJFljXE6UirlvoT/62g==",
- "license": "Apache-2.0",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.60.0.tgz",
+ "integrity": "sha512-aNljZKYrEa7obLAxd1bCEDxF7kzCLGXTuTJZ8lMR9rIVEjmuKBXN1gfqpm/OB//Zc2zP4iIve1jBp7sr3mQV6w==",
"dependencies": {
"@opentelemetry/core": "^2.0.0",
- "@opentelemetry/instrumentation": "^0.204.0",
+ "@opentelemetry/instrumentation": "^0.214.0",
"@opentelemetry/semantic-conventions": "^1.27.0"
},
"engines": {
@@ -3098,13 +2788,12 @@
}
},
"node_modules/@opentelemetry/instrumentation-http": {
- "version": "0.204.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.204.0.tgz",
- "integrity": "sha512-1afJYyGRA4OmHTv0FfNTrTAzoEjPQUYgd+8ih/lX0LlZBnGio/O80vxA0lN3knsJPS7FiDrsDrWq25K7oAzbkw==",
- "license": "Apache-2.0",
+ "version": "0.214.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.214.0.tgz",
+ "integrity": "sha512-FlkDhZDRjDJDcO2LcSCtjRpkal1NJ8y0fBqBhTvfAR3JSYY2jAIj1kSS5IjmEBt4c3aWv+u/lqLuoCDrrKCSKg==",
"dependencies": {
- "@opentelemetry/core": "2.1.0",
- "@opentelemetry/instrumentation": "0.204.0",
+ "@opentelemetry/core": "2.6.1",
+ "@opentelemetry/instrumentation": "0.214.0",
"@opentelemetry/semantic-conventions": "^1.29.0",
"forwarded-parse": "2.1.2"
},
@@ -3116,10 +2805,9 @@
}
},
"node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz",
- "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==",
- "license": "Apache-2.0",
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.6.1.tgz",
+ "integrity": "sha512-8xHSGWpJP9wBxgBpnqGL0R3PbdWQndL1Qp50qrg71+B28zK5OQmUgcDKLJgzyAAV38t4tOyLMGDD60LneR5W8g==",
"dependencies": {
"@opentelemetry/semantic-conventions": "^1.29.0"
},
@@ -3130,30 +2818,12 @@
"@opentelemetry/api": ">=1.0.0 <1.10.0"
}
},
- "node_modules/@opentelemetry/instrumentation-ioredis": {
- "version": "0.52.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.52.0.tgz",
- "integrity": "sha512-rUvlyZwI90HRQPYicxpDGhT8setMrlHKokCtBtZgYxQWRF5RBbG4q0pGtbZvd7kyseuHbFpA3I/5z7M8b/5ywg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/instrumentation": "^0.204.0",
- "@opentelemetry/redis-common": "^0.38.0",
- "@opentelemetry/semantic-conventions": "^1.27.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
"node_modules/@opentelemetry/instrumentation-kafkajs": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.14.0.tgz",
- "integrity": "sha512-kbB5yXS47dTIdO/lfbbXlzhvHFturbux4EpP0+6H78Lk0Bn4QXiZQW7rmZY1xBCY16mNcCb8Yt0mhz85hTnSVA==",
- "license": "Apache-2.0",
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.23.0.tgz",
+ "integrity": "sha512-4K+nVo+zI+aDz0Z85SObwbdixIbzS9moIuKJaYsdlzcHYnKOPtB7ya8r8Ezivy/GVIBHiKJVq4tv+BEkgOMLaQ==",
"dependencies": {
- "@opentelemetry/instrumentation": "^0.204.0",
+ "@opentelemetry/instrumentation": "^0.214.0",
"@opentelemetry/semantic-conventions": "^1.30.0"
},
"engines": {
@@ -3164,12 +2834,11 @@
}
},
"node_modules/@opentelemetry/instrumentation-knex": {
- "version": "0.49.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.49.0.tgz",
- "integrity": "sha512-NKsRRT27fbIYL4Ix+BjjP8h4YveyKc+2gD6DMZbr5R5rUeDqfC8+DTfIt3c3ex3BIc5Vvek4rqHnN7q34ZetLQ==",
- "license": "Apache-2.0",
+ "version": "0.58.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.58.0.tgz",
+ "integrity": "sha512-Hc/o8fSsaWxZ8r1Yw4rNDLwTpUopTf4X32y4W6UhlHmW8Wizz8wfhgOKIelSeqFVTKBBPIDUOsQWuIMxBmu8Bw==",
"dependencies": {
- "@opentelemetry/instrumentation": "^0.204.0",
+ "@opentelemetry/instrumentation": "^0.214.0",
"@opentelemetry/semantic-conventions": "^1.33.1"
},
"engines": {
@@ -3180,29 +2849,27 @@
}
},
"node_modules/@opentelemetry/instrumentation-koa": {
- "version": "0.52.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.52.0.tgz",
- "integrity": "sha512-JJSBYLDx/mNSy8Ibi/uQixu2rH0bZODJa8/cz04hEhRaiZQoeJ5UrOhO/mS87IdgVsHrnBOsZ6vDu09znupyuA==",
- "license": "Apache-2.0",
+ "version": "0.62.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.62.0.tgz",
+ "integrity": "sha512-uVip0VuGUQXZ+vFxkKxAUNq8qNl+VFlyHDh/U6IQ8COOEDfbEchdaHnpFrMYF3psZRUuoSIgb7xOeXj00RdwDA==",
"dependencies": {
"@opentelemetry/core": "^2.0.0",
- "@opentelemetry/instrumentation": "^0.204.0",
- "@opentelemetry/semantic-conventions": "^1.27.0"
+ "@opentelemetry/instrumentation": "^0.214.0",
+ "@opentelemetry/semantic-conventions": "^1.36.0"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
},
"peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
+ "@opentelemetry/api": "^1.9.0"
}
},
"node_modules/@opentelemetry/instrumentation-lru-memoizer": {
- "version": "0.49.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.49.0.tgz",
- "integrity": "sha512-ctXu+O/1HSadAxtjoEg2w307Z5iPyLOMM8IRNwjaKrIpNAthYGSOanChbk1kqY6zU5CrpkPHGdAT6jk8dXiMqw==",
- "license": "Apache-2.0",
+ "version": "0.58.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.58.0.tgz",
+ "integrity": "sha512-6grM3TdMyHzlGY1cUA+mwoPueB1F3dYKgKtZIH6jOFXqfHAByyLTc+6PFjGM9tKh52CFBJaDwodNlL/Td39z7Q==",
"dependencies": {
- "@opentelemetry/instrumentation": "^0.204.0"
+ "@opentelemetry/instrumentation": "^0.214.0"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
@@ -3212,13 +2879,12 @@
}
},
"node_modules/@opentelemetry/instrumentation-mongodb": {
- "version": "0.57.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.57.0.tgz",
- "integrity": "sha512-KD6Rg0KSHWDkik+qjIOWoksi1xqSpix8TSPfquIK1DTmd9OTFb5PHmMkzJe16TAPVEuElUW8gvgP59cacFcrMQ==",
- "license": "Apache-2.0",
+ "version": "0.67.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.67.0.tgz",
+ "integrity": "sha512-1WJp5N1lYfHq2IhECOTewFs5Tf2NfUOwQRqs/rZdXKTezArMlucxgzAaqcgp3A3YREXopXTpXHsxZTGHjNhMdQ==",
"dependencies": {
- "@opentelemetry/instrumentation": "^0.204.0",
- "@opentelemetry/semantic-conventions": "^1.27.0"
+ "@opentelemetry/instrumentation": "^0.214.0",
+ "@opentelemetry/semantic-conventions": "^1.33.0"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
@@ -3228,14 +2894,13 @@
}
},
"node_modules/@opentelemetry/instrumentation-mongoose": {
- "version": "0.51.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.51.0.tgz",
- "integrity": "sha512-gwWaAlhhV2By7XcbyU3DOLMvzsgeaymwP/jktDC+/uPkCmgB61zurwqOQdeiRq9KAf22Y2dtE5ZLXxytJRbEVA==",
- "license": "Apache-2.0",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.60.0.tgz",
+ "integrity": "sha512-8BahAZpKsOoc+lrZGb7Ofn4g3z8qtp5IxDfvAVpKXsEheQN7ONMH5djT5ihy6yf8yyeQJGS0gXFfpEAEeEHqQg==",
"dependencies": {
"@opentelemetry/core": "^2.0.0",
- "@opentelemetry/instrumentation": "^0.204.0",
- "@opentelemetry/semantic-conventions": "^1.27.0"
+ "@opentelemetry/instrumentation": "^0.214.0",
+ "@opentelemetry/semantic-conventions": "^1.33.0"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
@@ -3245,13 +2910,12 @@
}
},
"node_modules/@opentelemetry/instrumentation-mysql": {
- "version": "0.50.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.50.0.tgz",
- "integrity": "sha512-duKAvMRI3vq6u9JwzIipY9zHfikN20bX05sL7GjDeLKr2qV0LQ4ADtKST7KStdGcQ+MTN5wghWbbVdLgNcB3rA==",
- "license": "Apache-2.0",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.60.0.tgz",
+ "integrity": "sha512-08pO8GFPEIz2zquKDGteBZDNmwketdgH8hTe9rVYgW9kCJXq1Psj3wPQGx+VaX4ZJKCfPeoLMYup9+cxHvZyVQ==",
"dependencies": {
- "@opentelemetry/instrumentation": "^0.204.0",
- "@opentelemetry/semantic-conventions": "^1.27.0",
+ "@opentelemetry/instrumentation": "^0.214.0",
+ "@opentelemetry/semantic-conventions": "^1.33.0",
"@types/mysql": "2.15.27"
},
"engines": {
@@ -3262,14 +2926,13 @@
}
},
"node_modules/@opentelemetry/instrumentation-mysql2": {
- "version": "0.51.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.51.0.tgz",
- "integrity": "sha512-zT2Wg22Xn43RyfU3NOUmnFtb5zlDI0fKcijCj9AcK9zuLZ4ModgtLXOyBJSSfO+hsOCZSC1v/Fxwj+nZJFdzLQ==",
- "license": "Apache-2.0",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.60.0.tgz",
+ "integrity": "sha512-m/5d3bxQALllCzezYDk/6vajh0tj5OijMMvOZGr+qN1NMXm1dzMNwyJ0gNZW7Fo3YFRyj/jJMxIw+W7d525dlw==",
"dependencies": {
- "@opentelemetry/instrumentation": "^0.204.0",
- "@opentelemetry/semantic-conventions": "^1.27.0",
- "@opentelemetry/sql-common": "^0.41.0"
+ "@opentelemetry/instrumentation": "^0.214.0",
+ "@opentelemetry/semantic-conventions": "^1.33.0",
+ "@opentelemetry/sql-common": "^0.41.2"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
@@ -3279,17 +2942,16 @@
}
},
"node_modules/@opentelemetry/instrumentation-pg": {
- "version": "0.57.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.57.0.tgz",
- "integrity": "sha512-dWLGE+r5lBgm2A8SaaSYDE3OKJ/kwwy5WLyGyzor8PLhUL9VnJRiY6qhp4njwhnljiLtzeffRtG2Mf/YyWLeTw==",
- "license": "Apache-2.0",
+ "version": "0.66.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.66.0.tgz",
+ "integrity": "sha512-KxfLGXBb7k2ueaPJfq2GXBDXBly8P+SpR/4Mj410hhNgmQF3sCqwXvUBQxZQkDAmsdBAoenM+yV1LhtsMRamcA==",
"dependencies": {
"@opentelemetry/core": "^2.0.0",
- "@opentelemetry/instrumentation": "^0.204.0",
+ "@opentelemetry/instrumentation": "^0.214.0",
"@opentelemetry/semantic-conventions": "^1.34.0",
- "@opentelemetry/sql-common": "^0.41.0",
- "@types/pg": "8.15.5",
- "@types/pg-pool": "2.0.6"
+ "@opentelemetry/sql-common": "^0.41.2",
+ "@types/pg": "8.15.6",
+ "@types/pg-pool": "2.0.7"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
@@ -3298,15 +2960,14 @@
"@opentelemetry/api": "^1.3.0"
}
},
- "node_modules/@opentelemetry/instrumentation-redis": {
- "version": "0.53.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis/-/instrumentation-redis-0.53.0.tgz",
- "integrity": "sha512-WUHV8fr+8yo5RmzyU7D5BIE1zwiaNQcTyZPwtxlfr7px6NYYx7IIpSihJK7WA60npWynfxxK1T67RAVF0Gdfjg==",
- "license": "Apache-2.0",
+ "node_modules/@opentelemetry/instrumentation-tedious": {
+ "version": "0.33.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.33.0.tgz",
+ "integrity": "sha512-Q6WQwAD01MMTub31GlejoiFACYNw26J426wyjvU7by7fDIr2nZXNW4vhTGs7i7F0TnXBO3xN688g1tdUgYwJ5w==",
"dependencies": {
- "@opentelemetry/instrumentation": "^0.204.0",
- "@opentelemetry/redis-common": "^0.38.0",
- "@opentelemetry/semantic-conventions": "^1.27.0"
+ "@opentelemetry/instrumentation": "^0.214.0",
+ "@opentelemetry/semantic-conventions": "^1.33.0",
+ "@types/tedious": "^4.0.14"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
@@ -3315,97 +2976,51 @@
"@opentelemetry/api": "^1.3.0"
}
},
- "node_modules/@opentelemetry/instrumentation-tedious": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.23.0.tgz",
- "integrity": "sha512-3TMTk/9VtlRonVTaU4tCzbg4YqW+Iq/l5VnN2e5whP6JgEg/PKfrGbqQ+CxQWNLfLaQYIUgEZqAn5gk/inh1uQ==",
- "license": "Apache-2.0",
+ "node_modules/@opentelemetry/resources": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.7.1.tgz",
+ "integrity": "sha512-DeT6KKolmC4e/dRQvMQ/RwlnzhaqeiFOXY5ngoOPJ07GgVVKxZOg9EcrNZb5aTzUn+iCrJldAgOfQm1O/QfPAQ==",
"dependencies": {
- "@opentelemetry/instrumentation": "^0.204.0",
- "@opentelemetry/semantic-conventions": "^1.27.0",
- "@types/tedious": "^4.0.14"
+ "@opentelemetry/core": "2.7.1",
+ "@opentelemetry/semantic-conventions": "^1.29.0"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
},
"peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
+ "@opentelemetry/api": ">=1.3.0 <1.10.0"
}
},
- "node_modules/@opentelemetry/instrumentation-undici": {
- "version": "0.15.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.15.0.tgz",
- "integrity": "sha512-sNFGA/iCDlVkNjzTzPRcudmI11vT/WAfAguRdZY9IspCw02N4WSC72zTuQhSMheh2a1gdeM9my1imnKRvEEvEg==",
- "license": "Apache-2.0",
+ "node_modules/@opentelemetry/sdk-trace-base": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.7.1.tgz",
+ "integrity": "sha512-NAYIlsF8MPUsKqJMiDQJTMPOmlbawC1Iz/omMLygZ1C9am8fTKYjTaI+OZM+WTY3t3Glo0wnOg/6/pac6RGPPw==",
"dependencies": {
- "@opentelemetry/core": "^2.0.0",
- "@opentelemetry/instrumentation": "^0.204.0"
+ "@opentelemetry/core": "2.7.1",
+ "@opentelemetry/resources": "2.7.1",
+ "@opentelemetry/semantic-conventions": "^1.29.0"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
},
"peerDependencies": {
- "@opentelemetry/api": "^1.7.0"
+ "@opentelemetry/api": ">=1.3.0 <1.10.0"
}
},
- "node_modules/@opentelemetry/redis-common": {
- "version": "0.38.2",
- "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.38.2.tgz",
- "integrity": "sha512-1BCcU93iwSRZvDAgwUxC/DV4T/406SkMfxGqu5ojc3AvNI+I9GhV7v0J1HljsczuuhcnFLYqD5VmwVXfCGHzxA==",
- "license": "Apache-2.0",
+ "node_modules/@opentelemetry/semantic-conventions": {
+ "version": "1.41.1",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.41.1.tgz",
+ "integrity": "sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==",
"engines": {
- "node": "^18.19.0 || >=20.6.0"
+ "node": ">=14"
}
},
- "node_modules/@opentelemetry/resources": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz",
- "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==",
- "license": "Apache-2.0",
+ "node_modules/@opentelemetry/sql-common": {
+ "version": "0.41.2",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.41.2.tgz",
+ "integrity": "sha512-4mhWm3Z8z+i508zQJ7r6Xi7y4mmoJpdvH0fZPFRkWrdp5fq7hhZ2HhYokEOLkfqSMgPR4Z9EyB3DBkbKGOqZiQ==",
"dependencies": {
- "@opentelemetry/core": "2.2.0",
- "@opentelemetry/semantic-conventions": "^1.29.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.3.0 <1.10.0"
- }
- },
- "node_modules/@opentelemetry/sdk-trace-base": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz",
- "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/core": "2.2.0",
- "@opentelemetry/resources": "2.2.0",
- "@opentelemetry/semantic-conventions": "^1.29.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.3.0 <1.10.0"
- }
- },
- "node_modules/@opentelemetry/semantic-conventions": {
- "version": "1.38.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.38.0.tgz",
- "integrity": "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==",
- "license": "Apache-2.0",
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@opentelemetry/sql-common": {
- "version": "0.41.2",
- "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.41.2.tgz",
- "integrity": "sha512-4mhWm3Z8z+i508zQJ7r6Xi7y4mmoJpdvH0fZPFRkWrdp5fq7hhZ2HhYokEOLkfqSMgPR4Z9EyB3DBkbKGOqZiQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/core": "^2.0.0"
+ "@opentelemetry/core": "^2.0.0"
},
"engines": {
"node": "^18.19.0 || >=20.6.0"
@@ -3465,106 +3080,105 @@
}
},
"node_modules/@prisma/config": {
- "version": "6.19.0",
- "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.19.0.tgz",
- "integrity": "sha512-zwCayme+NzI/WfrvFEtkFhhOaZb/hI+X8TTjzjJ252VbPxAl2hWHK5NMczmnG9sXck2lsXrxIZuK524E25UNmg==",
- "license": "Apache-2.0",
+ "version": "6.19.3",
+ "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.19.3.tgz",
+ "integrity": "sha512-CBPT44BjlQxEt8kiMEauji2WHTDoVBOKl7UlewXmUgBPnr/oPRZC3psci5chJnYmH0ivEIog2OU9PGWoki3DLQ==",
"dependencies": {
"c12": "3.1.0",
"deepmerge-ts": "7.1.5",
- "effect": "3.18.4",
+ "effect": "3.21.0",
"empathic": "2.0.0"
}
},
"node_modules/@prisma/debug": {
- "version": "6.19.0",
- "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.19.0.tgz",
- "integrity": "sha512-8hAdGG7JmxrzFcTzXZajlQCidX0XNkMJkpqtfbLV54wC6LSSX6Vni25W/G+nAANwLnZ2TmwkfIuWetA7jJxJFA==",
- "license": "Apache-2.0"
+ "version": "6.19.3",
+ "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.19.3.tgz",
+ "integrity": "sha512-ljkJ+SgpXNktLG0Q/n4JGYCkKf0f8oYLyjImS2I8e2q2WCfdRRtWER062ZV/ixaNP2M2VKlWXVJiGzZaUgbKZw=="
},
"node_modules/@prisma/engines": {
- "version": "6.19.0",
- "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.19.0.tgz",
- "integrity": "sha512-pMRJ+1S6NVdXoB8QJAPIGpKZevFjxhKt0paCkRDTZiczKb7F4yTgRP8M4JdVkpQwmaD4EoJf6qA+p61godDokw==",
+ "version": "6.19.3",
+ "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.19.3.tgz",
+ "integrity": "sha512-RSYxtlYFl5pJ8ZePgMv0lZ9IzVCOdTPOegrs2qcbAEFrBI1G33h6wyC9kjQvo0DnYEhEVY0X4LsuFHXLKQk88g==",
"hasInstallScript": true,
- "license": "Apache-2.0",
"dependencies": {
- "@prisma/debug": "6.19.0",
- "@prisma/engines-version": "6.19.0-26.2ba551f319ab1df4bc874a89965d8b3641056773",
- "@prisma/fetch-engine": "6.19.0",
- "@prisma/get-platform": "6.19.0"
+ "@prisma/debug": "6.19.3",
+ "@prisma/engines-version": "7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7",
+ "@prisma/fetch-engine": "6.19.3",
+ "@prisma/get-platform": "6.19.3"
}
},
"node_modules/@prisma/engines-version": {
- "version": "6.19.0-26.2ba551f319ab1df4bc874a89965d8b3641056773",
- "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.19.0-26.2ba551f319ab1df4bc874a89965d8b3641056773.tgz",
- "integrity": "sha512-gV7uOBQfAFlWDvPJdQxMT1aSRur3a0EkU/6cfbAC5isV67tKDWUrPauyaHNpB+wN1ebM4A9jn/f4gH+3iHSYSQ==",
- "license": "Apache-2.0"
+ "version": "7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7",
+ "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7.tgz",
+ "integrity": "sha512-03bgb1VD5gvuumNf+7fVGBzfpJPjmqV423l/WxsWk2cNQ42JD0/SsFBPhN6z8iAvdHs07/7ei77SKu7aZfq8bA=="
},
"node_modules/@prisma/fetch-engine": {
- "version": "6.19.0",
- "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.19.0.tgz",
- "integrity": "sha512-OOx2Lda0DGrZ1rodADT06ZGqHzr7HY7LNMaFE2Vp8dp146uJld58sRuasdX0OiwpHgl8SqDTUKHNUyzEq7pDdQ==",
- "license": "Apache-2.0",
+ "version": "6.19.3",
+ "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.19.3.tgz",
+ "integrity": "sha512-tKtl/qco9Nt7LU5iKhpultD8O4vMCZcU2CHjNTnRrL1QvSUr5W/GcyFPjNL87GtRrwBc7ubXXD9xy4EvLvt8JA==",
"dependencies": {
- "@prisma/debug": "6.19.0",
- "@prisma/engines-version": "6.19.0-26.2ba551f319ab1df4bc874a89965d8b3641056773",
- "@prisma/get-platform": "6.19.0"
+ "@prisma/debug": "6.19.3",
+ "@prisma/engines-version": "7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7",
+ "@prisma/get-platform": "6.19.3"
}
},
"node_modules/@prisma/get-platform": {
- "version": "6.19.0",
- "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.19.0.tgz",
- "integrity": "sha512-ym85WDO2yDhC3fIXHWYpG3kVMBA49cL1XD2GCsCF8xbwoy2OkDQY44gEbAt2X46IQ4Apq9H6g0Ex1iFfPqEkHA==",
- "license": "Apache-2.0",
+ "version": "6.19.3",
+ "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.19.3.tgz",
+ "integrity": "sha512-xFj1VcJ1N3MKooOQAGO0W5tsd0W2QzIvW7DD7c/8H14Zmp4jseeWAITm+w2LLoLrlhoHdPPh0NMZ8mfL6puoHA==",
"dependencies": {
- "@prisma/debug": "6.19.0"
+ "@prisma/debug": "6.19.3"
}
},
"node_modules/@prisma/instrumentation": {
- "version": "6.15.0",
- "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-6.15.0.tgz",
- "integrity": "sha512-6TXaH6OmDkMOQvOxwLZ8XS51hU2v4A3vmE2pSijCIiGRJYyNeMcL6nMHQMyYdZRD8wl7LF3Wzc+AMPMV/9Oo7A==",
- "license": "Apache-2.0",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-7.6.0.tgz",
+ "integrity": "sha512-ZPW2gRiwpPzEfgeZgaekhqXrbW+Y2RJKHVqUmlhZhKzRNCcvR6DykzylDrynpArKKRQtLxoZy36fK7U0p3pdgQ==",
"dependencies": {
- "@opentelemetry/instrumentation": "^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0"
+ "@opentelemetry/instrumentation": "^0.207.0"
},
"peerDependencies": {
"@opentelemetry/api": "^1.8"
}
},
"node_modules/@prisma/instrumentation/node_modules/@opentelemetry/api-logs": {
- "version": "0.57.2",
- "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz",
- "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==",
- "license": "Apache-2.0",
+ "version": "0.207.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.207.0.tgz",
+ "integrity": "sha512-lAb0jQRVyleQQGiuuvCOTDVspc14nx6XJjP4FspJ1sNARo3Regq4ZZbrc3rN4b1TYSuUCvgH+UXUPug4SLOqEQ==",
"dependencies": {
"@opentelemetry/api": "^1.3.0"
},
"engines": {
- "node": ">=14"
+ "node": ">=8.0.0"
}
},
"node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation": {
- "version": "0.57.2",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz",
- "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==",
- "license": "Apache-2.0",
+ "version": "0.207.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.207.0.tgz",
+ "integrity": "sha512-y6eeli9+TLKnznrR8AZlQMSJT7wILpXH+6EYq5Vf/4Ao+huI7EedxQHwRgVUOMLFbe7VFDvHJrX9/f4lcwnJsA==",
"dependencies": {
- "@opentelemetry/api-logs": "0.57.2",
- "@types/shimmer": "^1.2.0",
- "import-in-the-middle": "^1.8.1",
- "require-in-the-middle": "^7.1.1",
- "semver": "^7.5.2",
- "shimmer": "^1.2.1"
+ "@opentelemetry/api-logs": "0.207.0",
+ "import-in-the-middle": "^2.0.0",
+ "require-in-the-middle": "^8.0.0"
},
"engines": {
- "node": ">=14"
+ "node": "^18.19.0 || >=20.6.0"
},
"peerDependencies": {
"@opentelemetry/api": "^1.3.0"
}
},
+ "node_modules/@prisma/instrumentation/node_modules/import-in-the-middle": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-2.0.6.tgz",
+ "integrity": "sha512-3vZV3jX0XRFW3EJDTwzWoZa+RH1b8eTTx6YOCjglrLyPuepwoBti1k3L2dKwdCUrnVEfc5CuRuGstaC/uQJJaw==",
+ "dependencies": {
+ "acorn": "^8.15.0",
+ "acorn-import-attributes": "^1.9.5",
+ "cjs-module-lexer": "^2.2.0",
+ "module-details-from-path": "^1.0.4"
+ }
+ },
"node_modules/@protobufjs/aspromise": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
@@ -3578,10 +3192,9 @@
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/codegen": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
- "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
- "license": "BSD-3-Clause"
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz",
+ "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g=="
},
"node_modules/@protobufjs/eventemitter": {
"version": "1.1.0",
@@ -3590,13 +3203,11 @@
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/fetch": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
- "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
- "license": "BSD-3-Clause",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz",
+ "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==",
"dependencies": {
- "@protobufjs/aspromise": "^1.1.1",
- "@protobufjs/inquire": "^1.1.0"
+ "@protobufjs/aspromise": "^1.1.1"
}
},
"node_modules/@protobufjs/float": {
@@ -3606,10 +3217,9 @@
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/inquire": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
- "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==",
- "license": "BSD-3-Clause"
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.2.tgz",
+ "integrity": "sha512-pa0vFRuws4wkvaXKK1uXZMAwAX4/t8ANaJo45iw/oQHNQ9q5xUzwgFmVJGXiga2BeN+zpX7Vf9vmsiIa2J+MUw=="
},
"node_modules/@protobufjs/path": {
"version": "1.1.2",
@@ -3624,10 +3234,9 @@
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/utf8": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
- "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
- "license": "BSD-3-Clause"
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.1.tgz",
+ "integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg=="
},
"node_modules/@redis/bloom": {
"version": "1.2.0",
@@ -3689,965 +3298,504 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz",
- "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.4.tgz",
+ "integrity": "sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ==",
"cpu": [
"arm"
],
- "license": "MIT",
"optional": true,
"os": [
"android"
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz",
- "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.4.tgz",
+ "integrity": "sha512-GxxTKApUpzRhof7poWvCJHRF51C67u1R7D6DiluBE8wKU1u5GWE8t+v81JvJYtbawoBFX1hLv5Ei4eVjkWokaw==",
"cpu": [
"arm64"
],
- "license": "MIT",
"optional": true,
"os": [
"android"
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz",
- "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.4.tgz",
+ "integrity": "sha512-tua0TaJxMOB1R0V0RS1jFZ/RpURFDJIOR2A6jWwQeawuFyS4gBW+rntLRaQd0EQ4bd6Vp44Z2rXW+YYDBsj6IA==",
"cpu": [
"arm64"
],
- "license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz",
- "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.4.tgz",
+ "integrity": "sha512-CSKq7MsP+5PFIcydhAiR1K0UhEI1A2jWXVKHPCBZ151yOutENwvnPocgVHkivu2kviURtCEB6zUQw0vs8RrhMg==",
"cpu": [
"x64"
],
- "license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz",
- "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.4.tgz",
+ "integrity": "sha512-+O8OkVdyvXMtJEciu2wS/pzm1IxntEEQx3z5TAVy4l32G0etZn+RsA48ARRrFm6Ri8fvqPQfgrvNxSjKAbnd3g==",
"cpu": [
"arm64"
],
- "license": "MIT",
"optional": true,
"os": [
"freebsd"
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz",
- "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.4.tgz",
+ "integrity": "sha512-Iw3oMskH3AfNuhU0MSN7vNbdi4me/NiYo2azqPz/Le16zHSa+3RRmliCMWWQmh4lcndccU40xcJuTYJZxNo/lw==",
"cpu": [
"x64"
],
- "license": "MIT",
"optional": true,
"os": [
"freebsd"
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz",
- "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.4.tgz",
+ "integrity": "sha512-EIPRXTVQpHyF8WOo219AD2yEltPehLTcTMz2fn6JsatLYSzQf00hj3rulF+yauOlF9/FtM2WpkT/hJh/KJFGhA==",
"cpu": [
"arm"
],
- "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz",
- "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.4.tgz",
+ "integrity": "sha512-J3Yh9PzzF1Ovah2At+lHiGQdsYgArxBbXv/zHfSyaiFQEqvNv7DcW98pCrmdjCZBrqBiKrKKe2V+aaSGWuBe/w==",
"cpu": [
"arm"
],
- "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz",
- "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.4.tgz",
+ "integrity": "sha512-BFDEZMYfUvLn37ONE1yMBojPxnMlTFsdyNoqncT0qFq1mAfllL+ATMMJd8TeuVMiX84s1KbcxcZbXInmcO2mRg==",
"cpu": [
"arm64"
],
- "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz",
- "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.4.tgz",
+ "integrity": "sha512-pc9EYOSlOgdQ2uPl1o9PF6/kLSgaUosia7gOuS8mB69IxJvlclko1MECXysjs5ryez1/5zjYqx3+xYU0TU6R1A==",
"cpu": [
"arm64"
],
- "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-loong64-gnu": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz",
- "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.4.tgz",
+ "integrity": "sha512-NxnomyxYerDh5n4iLrNa+sH+Z+U4BMEE46V2PgQ/hoB909i8gV1M5wPojWg9fk1jWpO3IQnOs20K4wyZuFLEFQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-musl": {
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.4.tgz",
+ "integrity": "sha512-nbJnQ8a3z1mtmrwImCYhc6BGpThAyYVRQxw9uKSKG4wR6aAYno9sVjJ0zaZcW9BPJX1GbrDPf+SvdWjgTuDmnw==",
"cpu": [
"loong64"
],
- "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-ppc64-gnu": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz",
- "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.4.tgz",
+ "integrity": "sha512-2EU6acNrQLd8tYvo/LXW535wupT3m6fo7HKo6lr7ktQoItxTyOL1ZCR/GfGCuXl2vR+zmfI6eRXkSemafv+iVg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-musl": {
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.4.tgz",
+ "integrity": "sha512-WeBtoMuaMxiiIrO2IYP3xs6GMWkJP2C0EoT8beTLkUPmzV1i/UcOSVw1d5r9KBODtHKilG5yFxsGRnBbK3wJ4A==",
"cpu": [
"ppc64"
],
- "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz",
- "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.4.tgz",
+ "integrity": "sha512-FJHFfqpKUI3A10WrWKiFbBZ7yVbGT4q4B5o1qKFFojqpaYoh9LrQgqWCmmcxQzVSXYtyB5bzkXrYzlHTs21MYA==",
"cpu": [
"riscv64"
],
- "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz",
- "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.4.tgz",
+ "integrity": "sha512-mcEl6CUT5IAUmQf1m9FYSmVqCJlpQ8r8eyftFUHG8i9OhY7BkBXSUdnLH5DOf0wCOjcP9v/QO93zpmF1SptCCw==",
"cpu": [
"riscv64"
],
- "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz",
- "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.4.tgz",
+ "integrity": "sha512-ynt3JxVd2w2buzoKDWIyiV1pJW93xlQic1THVLXilz429oijRpSHivZAgp65KBu+cMcgf1eVVjdnTLvPxgCuoQ==",
"cpu": [
"s390x"
],
- "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz",
- "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.4.tgz",
+ "integrity": "sha512-Boiz5+MsaROEWDf+GGEwF8VMHGhlUoQMtIPjOgA5fv4osupqTVnJteQNKJwUcnUog2G55jYXH7KZFFiJe0TEzQ==",
"cpu": [
"x64"
],
- "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz",
- "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.4.tgz",
+ "integrity": "sha512-+qfSY27qIrFfI/Hom04KYFw3GKZSGU4lXus51wsb5EuySfFlWRwjkKWoE9emgRw/ukoT4Udsj4W/+xxG8VbPKg==",
"cpu": [
"x64"
],
- "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
+ "node_modules/@rollup/rollup-openbsd-x64": {
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.4.tgz",
+ "integrity": "sha512-VpTfOPHgVXEBeeR8hZ2O0F3aSso+JDWqTWmTmzcQKted54IAdUVbxE+j/MVxUsKa8L20HJhv3vUezVPoquqWjA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "openbsd"
+ ]
+ },
"node_modules/@rollup/rollup-openharmony-arm64": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz",
- "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.4.tgz",
+ "integrity": "sha512-IPOsh5aRYuLv/nkU51X10Bf75Bsf6+gZdx1X+QP5QM6lIJFHHqbHLG0uJn/hWthzo13UAc2umiUorqZy3axoZg==",
"cpu": [
"arm64"
],
- "license": "MIT",
"optional": true,
"os": [
"openharmony"
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz",
- "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.4.tgz",
+ "integrity": "sha512-4QzE9E81OohJ/HKzHhsqU+zcYYojVOXlFMs1DdyMT6qXl/niOH7AVElmmEdUNHHS/oRkc++d5k6Vy85zFs0DEw==",
"cpu": [
"arm64"
],
- "license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz",
- "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.4.tgz",
+ "integrity": "sha512-zTPgT1YuHHcd+Tmx7h8aml0FWFVelV5N54oHow9SLj+GfoDy/huQ+UV396N/C7KpMDMiPspRktzM1/0r1usYEA==",
"cpu": [
"ia32"
],
- "license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rollup/rollup-win32-x64-gnu": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz",
- "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.4.tgz",
+ "integrity": "sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw==",
"cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz",
- "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rtsao/scc": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
- "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@scarf/scarf": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.4.0.tgz",
- "integrity": "sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==",
- "hasInstallScript": true,
- "license": "Apache-2.0"
- },
- "node_modules/@sentry/core": {
- "version": "10.26.0",
- "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.26.0.tgz",
- "integrity": "sha512-TjDe5QI37SLuV0q3nMOH8JcPZhv2e85FALaQMIhRILH9Ce6G7xW5GSjmH91NUVq8yc3XtiqYlz/EenEZActc4Q==",
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@sentry/node": {
- "version": "10.26.0",
- "resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.26.0.tgz",
- "integrity": "sha512-VUwNoKYhRpnHQSj9lty1TgooO+1wcpS1V0K87HU8sZEas5gx3Ujiouk5ocPjlgbKreoYOApgOnEEIq5W/hfQcQ==",
- "license": "MIT",
- "dependencies": {
- "@opentelemetry/api": "^1.9.0",
- "@opentelemetry/context-async-hooks": "^2.1.0",
- "@opentelemetry/core": "^2.1.0",
- "@opentelemetry/instrumentation": "^0.204.0",
- "@opentelemetry/instrumentation-amqplib": "0.51.0",
- "@opentelemetry/instrumentation-connect": "0.48.0",
- "@opentelemetry/instrumentation-dataloader": "0.22.0",
- "@opentelemetry/instrumentation-express": "0.53.0",
- "@opentelemetry/instrumentation-fs": "0.24.0",
- "@opentelemetry/instrumentation-generic-pool": "0.48.0",
- "@opentelemetry/instrumentation-graphql": "0.52.0",
- "@opentelemetry/instrumentation-hapi": "0.51.0",
- "@opentelemetry/instrumentation-http": "0.204.0",
- "@opentelemetry/instrumentation-ioredis": "0.52.0",
- "@opentelemetry/instrumentation-kafkajs": "0.14.0",
- "@opentelemetry/instrumentation-knex": "0.49.0",
- "@opentelemetry/instrumentation-koa": "0.52.0",
- "@opentelemetry/instrumentation-lru-memoizer": "0.49.0",
- "@opentelemetry/instrumentation-mongodb": "0.57.0",
- "@opentelemetry/instrumentation-mongoose": "0.51.0",
- "@opentelemetry/instrumentation-mysql": "0.50.0",
- "@opentelemetry/instrumentation-mysql2": "0.51.0",
- "@opentelemetry/instrumentation-pg": "0.57.0",
- "@opentelemetry/instrumentation-redis": "0.53.0",
- "@opentelemetry/instrumentation-tedious": "0.23.0",
- "@opentelemetry/instrumentation-undici": "0.15.0",
- "@opentelemetry/resources": "^2.1.0",
- "@opentelemetry/sdk-trace-base": "^2.1.0",
- "@opentelemetry/semantic-conventions": "^1.37.0",
- "@prisma/instrumentation": "6.15.0",
- "@sentry/core": "10.26.0",
- "@sentry/node-core": "10.26.0",
- "@sentry/opentelemetry": "10.26.0",
- "import-in-the-middle": "^1.14.2",
- "minimatch": "^9.0.0"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@sentry/node-core": {
- "version": "10.26.0",
- "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.26.0.tgz",
- "integrity": "sha512-7OrHVn8XAsq9mMVMlpL18XTKQEVcLOJSo0n2M7QGKfFk/OfVtSFMcUWGqN1qhYtT9aMTr2bjtR5+BI33djnNTQ==",
- "license": "MIT",
- "dependencies": {
- "@apm-js-collab/tracing-hooks": "^0.3.1",
- "@sentry/core": "10.26.0",
- "@sentry/opentelemetry": "10.26.0",
- "import-in-the-middle": "^1.14.2"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.9.0",
- "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0",
- "@opentelemetry/core": "^1.30.1 || ^2.1.0",
- "@opentelemetry/instrumentation": ">=0.57.1 <1",
- "@opentelemetry/resources": "^1.30.1 || ^2.1.0",
- "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0",
- "@opentelemetry/semantic-conventions": "^1.37.0"
- }
- },
- "node_modules/@sentry/opentelemetry": {
- "version": "10.26.0",
- "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.26.0.tgz",
- "integrity": "sha512-ASJdOwn6NwMH2ZeBrnGJI+l/xkJp1AOiQ5FWkvTqLc/vHX+r3PDMO7c+koecY+LiZxSzZF4IV8sALXfOh6UnwA==",
- "license": "MIT",
- "dependencies": {
- "@sentry/core": "10.26.0"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.9.0",
- "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0",
- "@opentelemetry/core": "^1.30.1 || ^2.1.0",
- "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0",
- "@opentelemetry/semantic-conventions": "^1.37.0"
- }
- },
- "node_modules/@smithy/abort-controller": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz",
- "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/config-resolver": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz",
- "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/node-config-provider": "^4.3.5",
- "@smithy/types": "^4.9.0",
- "@smithy/util-config-provider": "^4.2.0",
- "@smithy/util-endpoints": "^3.2.5",
- "@smithy/util-middleware": "^4.2.5",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/core": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.5.tgz",
- "integrity": "sha512-6gnIz3h+PEPQGDj8MnRSjDvKBah042jEoPgjFGJ4iJLBE78L4lY/n98x14XyPF4u3lN179Ub/ZKFY5za9GeLQw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/middleware-serde": "^4.2.6",
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/types": "^4.9.0",
- "@smithy/util-base64": "^4.3.0",
- "@smithy/util-body-length-browser": "^4.2.0",
- "@smithy/util-middleware": "^4.2.5",
- "@smithy/util-stream": "^4.5.6",
- "@smithy/util-utf8": "^4.2.0",
- "@smithy/uuid": "^1.1.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/credential-provider-imds": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz",
- "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/node-config-provider": "^4.3.5",
- "@smithy/property-provider": "^4.2.5",
- "@smithy/types": "^4.9.0",
- "@smithy/url-parser": "^4.2.5",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/fetch-http-handler": {
- "version": "5.3.6",
- "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz",
- "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/querystring-builder": "^4.2.5",
- "@smithy/types": "^4.9.0",
- "@smithy/util-base64": "^4.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/hash-node": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz",
- "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.9.0",
- "@smithy/util-buffer-from": "^4.2.0",
- "@smithy/util-utf8": "^4.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/invalid-dependency": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz",
- "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/is-array-buffer": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz",
- "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/md5-js": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.5.tgz",
- "integrity": "sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.9.0",
- "@smithy/util-utf8": "^4.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/middleware-content-length": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz",
- "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/middleware-endpoint": {
- "version": "4.3.12",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.12.tgz",
- "integrity": "sha512-9pAX/H+VQPzNbouhDhkW723igBMLgrI8OtX+++M7iKJgg/zY/Ig3i1e6seCcx22FWhE6Q/S61BRdi2wXBORT+A==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/core": "^3.18.5",
- "@smithy/middleware-serde": "^4.2.6",
- "@smithy/node-config-provider": "^4.3.5",
- "@smithy/shared-ini-file-loader": "^4.4.0",
- "@smithy/types": "^4.9.0",
- "@smithy/url-parser": "^4.2.5",
- "@smithy/util-middleware": "^4.2.5",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/middleware-retry": {
- "version": "4.4.12",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.12.tgz",
- "integrity": "sha512-S4kWNKFowYd0lID7/DBqWHOQxmxlsf0jBaos9chQZUWTVOjSW1Ogyh8/ib5tM+agFDJ/TCxuCTvrnlc+9cIBcQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/node-config-provider": "^4.3.5",
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/service-error-classification": "^4.2.5",
- "@smithy/smithy-client": "^4.9.8",
- "@smithy/types": "^4.9.0",
- "@smithy/util-middleware": "^4.2.5",
- "@smithy/util-retry": "^4.2.5",
- "@smithy/uuid": "^1.1.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/middleware-serde": {
- "version": "4.2.6",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.6.tgz",
- "integrity": "sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/middleware-stack": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz",
- "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/node-config-provider": {
- "version": "4.3.5",
- "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz",
- "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/property-provider": "^4.2.5",
- "@smithy/shared-ini-file-loader": "^4.4.0",
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/node-http-handler": {
- "version": "4.4.5",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz",
- "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/abort-controller": "^4.2.5",
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/querystring-builder": "^4.2.5",
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/property-provider": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz",
- "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/protocol-http": {
- "version": "5.3.5",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz",
- "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/querystring-builder": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz",
- "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.9.0",
- "@smithy/util-uri-escape": "^4.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/querystring-parser": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz",
- "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/service-error-classification": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz",
- "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.9.0"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/shared-ini-file-loader": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz",
- "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
- "node_modules/@smithy/signature-v4": {
- "version": "5.3.5",
- "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz",
- "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/is-array-buffer": "^4.2.0",
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/types": "^4.9.0",
- "@smithy/util-hex-encoding": "^4.2.0",
- "@smithy/util-middleware": "^4.2.5",
- "@smithy/util-uri-escape": "^4.2.0",
- "@smithy/util-utf8": "^4.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.4.tgz",
+ "integrity": "sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
- "node_modules/@smithy/smithy-client": {
- "version": "4.9.8",
- "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.8.tgz",
- "integrity": "sha512-8xgq3LgKDEFoIrLWBho/oYKyWByw9/corz7vuh1upv7ZBm0ZMjGYBhbn6v643WoIqA9UTcx5A5htEp/YatUwMA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/core": "^3.18.5",
- "@smithy/middleware-endpoint": "^4.3.12",
- "@smithy/middleware-stack": "^4.2.5",
- "@smithy/protocol-http": "^5.3.5",
- "@smithy/types": "^4.9.0",
- "@smithy/util-stream": "^4.5.6",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
+ "node_modules/@rtsao/scc": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
+ "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==",
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/@smithy/types": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz",
- "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
+ "node_modules/@scarf/scarf": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.4.0.tgz",
+ "integrity": "sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==",
+ "hasInstallScript": true,
+ "license": "Apache-2.0"
},
- "node_modules/@smithy/url-parser": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz",
- "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/querystring-parser": "^4.2.5",
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
- },
+ "node_modules/@sentry/core": {
+ "version": "10.53.1",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.53.1.tgz",
+ "integrity": "sha512-XG4ezlkyuAPjBC5+9kXC94rXXuqYTw9NRhfaDHssbTFaGnqBR8vQX2UUgZfY7ucbeelRDGfBu1sywoU+mB04uA==",
"engines": {
- "node": ">=18.0.0"
+ "node": ">=18"
}
},
- "node_modules/@smithy/util-base64": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz",
- "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/util-buffer-from": "^4.2.0",
- "@smithy/util-utf8": "^4.2.0",
- "tslib": "^2.6.2"
+ "node_modules/@sentry/node": {
+ "version": "10.53.1",
+ "resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.53.1.tgz",
+ "integrity": "sha512-rxHVil0tJAmz+keFcZCj1LaUdgdkK66E/l0gqh2p1209PNCGoD3lnClFr6vusy1aF3zF8O9JPtuMEJzXOKhs+w==",
+ "dependencies": {
+ "@fastify/otel": "0.18.0",
+ "@opentelemetry/api": "^1.9.1",
+ "@opentelemetry/core": "^2.6.1",
+ "@opentelemetry/instrumentation": "^0.214.0",
+ "@opentelemetry/instrumentation-amqplib": "0.61.0",
+ "@opentelemetry/instrumentation-connect": "0.57.0",
+ "@opentelemetry/instrumentation-dataloader": "0.31.0",
+ "@opentelemetry/instrumentation-fs": "0.33.0",
+ "@opentelemetry/instrumentation-generic-pool": "0.57.0",
+ "@opentelemetry/instrumentation-graphql": "0.62.0",
+ "@opentelemetry/instrumentation-hapi": "0.60.0",
+ "@opentelemetry/instrumentation-http": "0.214.0",
+ "@opentelemetry/instrumentation-kafkajs": "0.23.0",
+ "@opentelemetry/instrumentation-knex": "0.58.0",
+ "@opentelemetry/instrumentation-koa": "0.62.0",
+ "@opentelemetry/instrumentation-lru-memoizer": "0.58.0",
+ "@opentelemetry/instrumentation-mongodb": "0.67.0",
+ "@opentelemetry/instrumentation-mongoose": "0.60.0",
+ "@opentelemetry/instrumentation-mysql": "0.60.0",
+ "@opentelemetry/instrumentation-mysql2": "0.60.0",
+ "@opentelemetry/instrumentation-pg": "0.66.0",
+ "@opentelemetry/instrumentation-tedious": "0.33.0",
+ "@opentelemetry/sdk-trace-base": "^2.6.1",
+ "@opentelemetry/semantic-conventions": "^1.40.0",
+ "@prisma/instrumentation": "7.6.0",
+ "@sentry/core": "10.53.1",
+ "@sentry/node-core": "10.53.1",
+ "@sentry/opentelemetry": "10.53.1",
+ "import-in-the-middle": "^3.0.0"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=18"
}
},
- "node_modules/@smithy/util-body-length-browser": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz",
- "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==",
- "license": "Apache-2.0",
+ "node_modules/@sentry/node-core": {
+ "version": "10.53.1",
+ "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.53.1.tgz",
+ "integrity": "sha512-iH7SMcM/7jPbN+t7+7ussQOiIqI4BMOGt4VYWlV71/z7k0pY+YPaSvlfVkNXfISiDzFAKv0ecCY3BmsLMu1xDQ==",
"dependencies": {
- "tslib": "^2.6.2"
+ "@sentry/core": "10.53.1",
+ "@sentry/opentelemetry": "10.53.1",
+ "import-in-the-middle": "^3.0.0"
},
"engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-body-length-node": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz",
- "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.6.2"
+ "node": ">=18"
},
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-buffer-from": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz",
- "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/is-array-buffer": "^4.2.0",
- "tslib": "^2.6.2"
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.9.0",
+ "@opentelemetry/core": "^1.30.1 || ^2.1.0",
+ "@opentelemetry/exporter-trace-otlp-http": ">=0.57.0 <1",
+ "@opentelemetry/instrumentation": ">=0.57.1 <1",
+ "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0",
+ "@opentelemetry/semantic-conventions": "^1.39.0"
},
- "engines": {
- "node": ">=18.0.0"
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "@opentelemetry/core": {
+ "optional": true
+ },
+ "@opentelemetry/exporter-trace-otlp-http": {
+ "optional": true
+ },
+ "@opentelemetry/instrumentation": {
+ "optional": true
+ },
+ "@opentelemetry/sdk-trace-base": {
+ "optional": true
+ },
+ "@opentelemetry/semantic-conventions": {
+ "optional": true
+ }
}
},
- "node_modules/@smithy/util-config-provider": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz",
- "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==",
- "license": "Apache-2.0",
+ "node_modules/@sentry/opentelemetry": {
+ "version": "10.53.1",
+ "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.53.1.tgz",
+ "integrity": "sha512-Zok6UXla0mFOjd1YnVb1TZtQNOry9v93fXUqx8jmDaygwWM2BwvP8rBQabLz0/OZXo8+35oge+Vmw+QY5aesnA==",
"dependencies": {
- "tslib": "^2.6.2"
+ "@sentry/core": "10.53.1"
},
"engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@smithy/util-defaults-mode-browser": {
- "version": "4.3.11",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.11.tgz",
- "integrity": "sha512-yHv+r6wSQXEXTPVCIQTNmXVWs7ekBTpMVErjqZoWkYN75HIFN5y9+/+sYOejfAuvxWGvgzgxbTHa/oz61YTbKw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/property-provider": "^4.2.5",
- "@smithy/smithy-client": "^4.9.8",
- "@smithy/types": "^4.9.0",
- "tslib": "^2.6.2"
+ "node": ">=18"
},
- "engines": {
- "node": ">=18.0.0"
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.9.0",
+ "@opentelemetry/core": "^1.30.1 || ^2.1.0",
+ "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0",
+ "@opentelemetry/semantic-conventions": "^1.39.0"
}
},
- "node_modules/@smithy/util-defaults-mode-node": {
- "version": "4.2.14",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.14.tgz",
- "integrity": "sha512-ljZN3iRvaJUgulfvobIuG97q1iUuCMrvXAlkZ4msY+ZuVHQHDIqn7FKZCEj+bx8omz6kF5yQXms/xhzjIO5XiA==",
- "license": "Apache-2.0",
+ "node_modules/@smithy/core": {
+ "version": "3.24.3",
+ "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.3.tgz",
+ "integrity": "sha512-Ep/7tPamGY8mgESE3LyLKtxJyy6U52WWAqr/3wial47Sj4u3PiIF73AOGI27UyLy9duTkhZbgzodOfLV4TduZg==",
"dependencies": {
- "@smithy/config-resolver": "^4.4.3",
- "@smithy/credential-provider-imds": "^4.2.5",
- "@smithy/node-config-provider": "^4.3.5",
- "@smithy/property-provider": "^4.2.5",
- "@smithy/smithy-client": "^4.9.8",
- "@smithy/types": "^4.9.0",
+ "@aws-crypto/crc32": "5.2.0",
+ "@smithy/types": "^4.14.2",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@smithy/util-endpoints": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz",
- "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==",
- "license": "Apache-2.0",
+ "node_modules/@smithy/credential-provider-imds": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.3.tgz",
+ "integrity": "sha512-I2Bti0DKFo2IJyN28ijCsx51BAumEYR4/1yZ1FXyBygy9MqbnMqCev4JPth/MbpRfBSRAX35hITSnAdJRo1u5w==",
"dependencies": {
- "@smithy/node-config-provider": "^4.3.5",
- "@smithy/types": "^4.9.0",
+ "@smithy/core": "^3.24.3",
+ "@smithy/types": "^4.14.2",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@smithy/util-hex-encoding": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz",
- "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==",
- "license": "Apache-2.0",
+ "node_modules/@smithy/fetch-http-handler": {
+ "version": "5.4.3",
+ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.3.tgz",
+ "integrity": "sha512-F+DRf8IJazRJgYog2A/yJK7eYVc0rqTlRzO+5ZxjJd4WkZoKz0IJRncf7G6t1pdVT3kryJcwuTFhN1c5m6N47A==",
"dependencies": {
+ "@smithy/core": "^3.24.3",
+ "@smithy/types": "^4.14.2",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@smithy/util-middleware": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz",
- "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==",
- "license": "Apache-2.0",
+ "node_modules/@smithy/is-array-buffer": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
+ "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
"dependencies": {
- "@smithy/types": "^4.9.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=14.0.0"
}
},
- "node_modules/@smithy/util-retry": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz",
- "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==",
- "license": "Apache-2.0",
+ "node_modules/@smithy/node-http-handler": {
+ "version": "4.7.3",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.3.tgz",
+ "integrity": "sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==",
"dependencies": {
- "@smithy/service-error-classification": "^4.2.5",
- "@smithy/types": "^4.9.0",
+ "@smithy/core": "^3.24.3",
+ "@smithy/types": "^4.14.2",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@smithy/util-stream": {
- "version": "4.5.6",
- "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz",
- "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==",
- "license": "Apache-2.0",
+ "node_modules/@smithy/signature-v4": {
+ "version": "5.4.3",
+ "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.3.tgz",
+ "integrity": "sha512-53+75QuPl6DL+ct6vVEB51FDO5oulXr20TPV46VvJZg76lIlXNWfxi8j+G2V/t0I2qxCBOa3vX/8bmjrpFVo9g==",
"dependencies": {
- "@smithy/fetch-http-handler": "^5.3.6",
- "@smithy/node-http-handler": "^4.4.5",
- "@smithy/types": "^4.9.0",
- "@smithy/util-base64": "^4.3.0",
- "@smithy/util-buffer-from": "^4.2.0",
- "@smithy/util-hex-encoding": "^4.2.0",
- "@smithy/util-utf8": "^4.2.0",
+ "@smithy/core": "^3.24.3",
+ "@smithy/types": "^4.14.2",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@smithy/util-uri-escape": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz",
- "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==",
- "license": "Apache-2.0",
+ "node_modules/@smithy/types": {
+ "version": "4.14.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.2.tgz",
+ "integrity": "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw==",
"dependencies": {
"tslib": "^2.6.2"
},
@@ -4655,29 +3803,28 @@
"node": ">=18.0.0"
}
},
- "node_modules/@smithy/util-utf8": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz",
- "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==",
- "license": "Apache-2.0",
+ "node_modules/@smithy/util-buffer-from": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
+ "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
"dependencies": {
- "@smithy/util-buffer-from": "^4.2.0",
+ "@smithy/is-array-buffer": "^2.2.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=14.0.0"
}
},
- "node_modules/@smithy/uuid": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz",
- "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==",
- "license": "Apache-2.0",
+ "node_modules/@smithy/util-utf8": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
+ "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
"dependencies": {
+ "@smithy/util-buffer-from": "^2.2.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=14.0.0"
}
},
"node_modules/@socket.io/component-emitter": {
@@ -4687,10 +3834,9 @@
"license": "MIT"
},
"node_modules/@standard-schema/spec": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz",
- "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==",
- "license": "MIT"
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
+ "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="
},
"node_modules/@thi.ng/bitstream": {
"version": "2.4.34",
@@ -4745,7 +3891,6 @@
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz",
"integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==",
- "license": "MIT",
"dependencies": {
"debug": "^4.4.3",
"token-types": "^6.1.1"
@@ -4758,39 +3903,10 @@
"url": "https://github.com/sponsors/Borewit"
}
},
- "node_modules/@tokenizer/inflate/node_modules/@borewit/text-codec": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.1.1.tgz",
- "integrity": "sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
- }
- },
- "node_modules/@tokenizer/inflate/node_modules/token-types": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.1.tgz",
- "integrity": "sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ==",
- "license": "MIT",
- "dependencies": {
- "@borewit/text-codec": "^0.1.0",
- "@tokenizer/token": "^0.3.0",
- "ieee754": "^1.2.1"
- },
- "engines": {
- "node": ">=14.16"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
- }
- },
"node_modules/@tokenizer/token": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
- "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==",
- "license": "MIT"
+ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="
},
"node_modules/@types/body-parser": {
"version": "1.19.6",
@@ -4895,12 +4011,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@types/long": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
- "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==",
- "license": "MIT"
- },
"node_modules/@types/mime": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-4.0.0.tgz",
@@ -4923,7 +4033,6 @@
"version": "2.15.27",
"resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.27.tgz",
"integrity": "sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==",
- "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -4955,10 +4064,9 @@
}
},
"node_modules/@types/pg": {
- "version": "8.15.5",
- "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.5.tgz",
- "integrity": "sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==",
- "license": "MIT",
+ "version": "8.15.6",
+ "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.6.tgz",
+ "integrity": "sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==",
"dependencies": {
"@types/node": "*",
"pg-protocol": "*",
@@ -4966,10 +4074,9 @@
}
},
"node_modules/@types/pg-pool": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.6.tgz",
- "integrity": "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==",
- "license": "MIT",
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.7.tgz",
+ "integrity": "sha512-U4CwmGVQcbEuqpyju8/ptOKg6gEC+Tqsvj2xS9o1g71bUh8twxnC6ZL5rZKCsGN0iyH0CwgUyc9VR5owNQF9Ng==",
"dependencies": {
"@types/pg": "*"
}
@@ -5045,17 +4152,10 @@
"@types/node": "*"
}
},
- "node_modules/@types/shimmer": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz",
- "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==",
- "license": "MIT"
- },
"node_modules/@types/tedious": {
"version": "4.0.14",
"resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz",
"integrity": "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==",
- "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -5072,6 +4172,14 @@
"integrity": "sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA==",
"license": "MIT"
},
+ "node_modules/@types/ws": {
+ "version": "8.18.1",
+ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",
+ "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.47.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.47.0.tgz",
@@ -5365,13 +4473,6 @@
"url": "https://github.com/sponsors/eshaz"
}
},
- "node_modules/@zxing/text-encoding": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz",
- "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==",
- "license": "(Unlicense OR Apache-2.0)",
- "optional": true
- },
"node_modules/abort-controller": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
@@ -5422,7 +4523,6 @@
"version": "1.9.5",
"resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
"integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
- "license": "MIT",
"peerDependencies": {
"acorn": "^8"
}
@@ -5459,11 +4559,10 @@
}
},
"node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
+ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
@@ -5541,8 +4640,7 @@
"node_modules/any-base": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz",
- "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==",
- "license": "MIT"
+ "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg=="
},
"node_modules/any-promise": {
"version": "1.3.0",
@@ -5782,6 +4880,7 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
"integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"possible-typed-array-names": "^1.0.0"
@@ -5797,20 +4896,42 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/await-to-js/-/await-to-js-3.0.0.tgz",
"integrity": "sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==",
- "license": "MIT",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/axios": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz",
- "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==",
- "license": "MIT",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.1.tgz",
+ "integrity": "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==",
+ "dependencies": {
+ "follow-redirects": "^1.16.0",
+ "form-data": "^4.0.5",
+ "https-proxy-agent": "^5.0.1",
+ "proxy-from-env": "^2.1.0"
+ }
+ },
+ "node_modules/axios/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/axios/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
"dependencies": {
- "follow-redirects": "^1.15.6",
- "form-data": "^4.0.4",
- "proxy-from-env": "^1.1.0"
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
"node_modules/baileys": {
@@ -5871,12 +4992,14 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
"license": "MIT"
},
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true,
"funding": [
{
"type": "github",
@@ -5926,27 +5049,25 @@
"node_modules/bmp-ts": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/bmp-ts/-/bmp-ts-1.0.9.tgz",
- "integrity": "sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw==",
- "license": "MIT"
+ "integrity": "sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw=="
},
"node_modules/body-parser": {
- "version": "1.20.3",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
- "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
- "license": "MIT",
+ "version": "1.20.5",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz",
+ "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==",
"dependencies": {
- "bytes": "3.1.2",
+ "bytes": "~3.1.2",
"content-type": "~1.0.5",
"debug": "2.6.9",
"depd": "2.0.0",
- "destroy": "1.2.0",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "on-finished": "2.4.1",
- "qs": "6.13.0",
- "raw-body": "2.5.2",
+ "destroy": "~1.2.0",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.4.24",
+ "on-finished": "~2.4.1",
+ "qs": "~6.15.1",
+ "raw-body": "~2.5.3",
"type-is": "~1.6.18",
- "unpipe": "1.0.0"
+ "unpipe": "~1.0.0"
},
"engines": {
"node": ">= 0.8",
@@ -5957,16 +5078,41 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
},
+ "node_modules/body-parser/node_modules/http-errors": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
"node_modules/body-parser/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "license": "MIT"
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/body-parser/node_modules/statuses": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
},
"node_modules/boolbase": {
"version": "1.0.0",
@@ -5975,15 +5121,15 @@
"license": "ISC"
},
"node_modules/bowser": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.13.0.tgz",
- "integrity": "sha512-yHAbSRuT6LTeKi6k2aS40csueHqgAsFEgmrOsfRyFpJnFv5O2hl9FYmWEUZ97gZ/dG17U4IQQcTx4YAFYPuWRQ==",
- "license": "MIT"
+ "version": "2.14.1",
+ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz",
+ "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg=="
},
"node_modules/brace-expansion": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
@@ -6099,7 +5245,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/c12/-/c12-3.1.0.tgz",
"integrity": "sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==",
- "license": "MIT",
"dependencies": {
"chokidar": "^4.0.3",
"confbox": "^0.2.2",
@@ -6159,6 +5304,7 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
"integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.0",
@@ -6299,16 +5445,14 @@
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz",
"integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==",
- "license": "MIT",
"dependencies": {
"consola": "^3.2.3"
}
},
"node_modules/cjs-module-lexer": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz",
- "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==",
- "license": "MIT"
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz",
+ "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ=="
},
"node_modules/class-validator": {
"version": "0.14.3",
@@ -6625,10 +5769,9 @@
}
},
"node_modules/confbox": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz",
- "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==",
- "license": "MIT"
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz",
+ "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ=="
},
"node_modules/consola": {
"version": "3.4.2",
@@ -7019,7 +6162,6 @@
"version": "7.1.5",
"resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz",
"integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==",
- "license": "BSD-3-Clause",
"engines": {
"node": ">=16.0.0"
}
@@ -7051,6 +6193,7 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0",
@@ -7083,10 +6226,9 @@
}
},
"node_modules/defu": {
- "version": "6.1.4",
- "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
- "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
- "license": "MIT"
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz",
+ "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ=="
},
"node_modules/delayed-stream": {
"version": "1.0.0",
@@ -7109,8 +6251,7 @@
"node_modules/destr": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz",
- "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==",
- "license": "MIT"
+ "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA=="
},
"node_modules/destroy": {
"version": "1.2.0",
@@ -7280,10 +6421,9 @@
"license": "MIT"
},
"node_modules/effect": {
- "version": "3.18.4",
- "resolved": "https://registry.npmjs.org/effect/-/effect-3.18.4.tgz",
- "integrity": "sha512-b1LXQJLe9D11wfnOKAk3PKxuqYshQ0Heez+y5pnkd3jLj1yx9QhM72zZ9uUrOQyNvrs2GZZd/3maL0ZV18YuDA==",
- "license": "MIT",
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/effect/-/effect-3.21.0.tgz",
+ "integrity": "sha512-PPN80qRokCd1f015IANNhrwOnLO7GrrMQfk4/lnZRE/8j7UPWrNNjPV0uBrZutI/nHzernbW+J0hdqQysHiSnQ==",
"dependencies": {
"@standard-schema/spec": "^1.0.0",
"fast-check": "^3.23.1"
@@ -7299,7 +6439,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz",
"integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==",
- "license": "MIT",
"engines": {
"node": ">=14"
}
@@ -7314,60 +6453,41 @@
}
},
"node_modules/engine.io": {
- "version": "6.6.4",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz",
- "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==",
- "license": "MIT",
+ "version": "6.6.7",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.7.tgz",
+ "integrity": "sha512-DgOngfDKM2EviOH3Mr9m7ks1q8roetLy/IMmYthAYzbpInMbYc/GS+fWFA3rl1gvwKVsQrVV61fo5emD1y3OJQ==",
"dependencies": {
"@types/cors": "^2.8.12",
"@types/node": ">=10.0.0",
+ "@types/ws": "^8.5.12",
"accepts": "~1.3.4",
"base64id": "2.0.0",
"cookie": "~0.7.2",
"cors": "~2.8.5",
- "debug": "~4.3.1",
+ "debug": "~4.4.1",
"engine.io-parser": "~5.2.1",
- "ws": "~8.17.1"
+ "ws": "~8.18.3"
},
"engines": {
"node": ">=10.2.0"
}
},
"node_modules/engine.io-client": {
- "version": "6.6.3",
- "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz",
- "integrity": "sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==",
- "license": "MIT",
+ "version": "6.6.4",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.4.tgz",
+ "integrity": "sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw==",
"dependencies": {
"@socket.io/component-emitter": "~3.1.0",
- "debug": "~4.3.1",
+ "debug": "~4.4.1",
"engine.io-parser": "~5.2.1",
- "ws": "~8.17.1",
+ "ws": "~8.18.3",
"xmlhttprequest-ssl": "~2.1.1"
}
},
- "node_modules/engine.io-client/node_modules/debug": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
- "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
"node_modules/engine.io-client/node_modules/ws": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
- "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
- "license": "MIT",
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
"engines": {
"node": ">=10.0.0"
},
@@ -7402,28 +6522,10 @@
"node": ">= 0.6"
}
},
- "node_modules/engine.io/node_modules/debug": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
- "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
"node_modules/engine.io/node_modules/ws": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
- "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
- "license": "MIT",
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
"engines": {
"node": ">=10.0.0"
},
@@ -7857,11 +6959,10 @@
}
},
"node_modules/eslint-plugin-import/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
"dev": true,
- "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -7904,11 +7005,10 @@
}
},
"node_modules/eslint-plugin-import/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
- "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -8021,11 +7121,10 @@
}
},
"node_modules/eslint/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz",
+ "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -8054,11 +7153,10 @@
}
},
"node_modules/eslint/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
"dev": true,
- "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -8162,11 +7260,10 @@
}
},
"node_modules/eslint/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
- "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -8336,15 +7433,6 @@
"integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
"license": "MIT"
},
- "node_modules/events": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
- "license": "MIT",
- "engines": {
- "node": ">=0.8.x"
- }
- },
"node_modules/exif-parser": {
"version": "0.1.12",
"resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz",
@@ -8364,39 +7452,38 @@
}
},
"node_modules/express": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
- "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
- "license": "MIT",
+ "version": "4.22.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz",
+ "integrity": "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.20.3",
- "content-disposition": "0.5.4",
+ "body-parser": "~1.20.5",
+ "content-disposition": "~0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.7.1",
- "cookie-signature": "1.0.6",
+ "cookie": "~0.7.1",
+ "cookie-signature": "~1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "1.3.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
+ "finalhandler": "~1.3.1",
+ "fresh": "~0.5.2",
+ "http-errors": "~2.0.0",
"merge-descriptors": "1.0.3",
"methods": "~1.1.2",
- "on-finished": "2.4.1",
+ "on-finished": "~2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.12",
+ "path-to-regexp": "~0.1.12",
"proxy-addr": "~2.0.7",
- "qs": "6.13.0",
+ "qs": "~6.15.1",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
- "send": "0.19.0",
- "serve-static": "1.16.2",
+ "send": "~0.19.0",
+ "serve-static": "~1.16.2",
"setprototypeof": "1.2.0",
- "statuses": "2.0.1",
+ "statuses": "~2.0.1",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
@@ -8436,8 +7523,7 @@
"node_modules/exsolve": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz",
- "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==",
- "license": "MIT"
+ "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA=="
},
"node_modules/external-editor": {
"version": "3.1.0",
@@ -8468,7 +7554,6 @@
"url": "https://opencollective.com/fast-check"
}
],
- "license": "MIT",
"dependencies": {
"pure-rand": "^6.1.0"
},
@@ -8535,9 +7620,9 @@
"license": "MIT"
},
"node_modules/fast-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
- "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz",
+ "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==",
"dev": true,
"funding": [
{
@@ -8548,22 +7633,38 @@
"type": "opencollective",
"url": "https://opencollective.com/fastify"
}
+ ]
+ },
+ "node_modules/fast-xml-builder": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz",
+ "integrity": "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
],
- "license": "BSD-3-Clause"
+ "dependencies": {
+ "path-expression-matcher": "^1.5.0",
+ "xml-naming": "^0.1.0"
+ }
},
"node_modules/fast-xml-parser": {
- "version": "5.2.5",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz",
- "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==",
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.3.tgz",
+ "integrity": "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
}
],
- "license": "MIT",
"dependencies": {
- "strnum": "^2.1.0"
+ "@nodable/entities": "^2.1.0",
+ "fast-xml-builder": "^1.1.7",
+ "path-expression-matcher": "^1.5.0",
+ "strnum": "^2.2.3"
},
"bin": {
"fxparser": "src/cli/cli.js"
@@ -8629,17 +7730,17 @@
}
},
"node_modules/file-type": {
- "version": "16.5.4",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz",
- "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==",
- "license": "MIT",
+ "version": "21.3.4",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.4.tgz",
+ "integrity": "sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==",
"dependencies": {
- "readable-web-to-node-stream": "^3.0.0",
- "strtok3": "^6.2.4",
- "token-types": "^4.1.1"
+ "@tokenizer/inflate": "^0.4.1",
+ "strtok3": "^10.3.4",
+ "token-types": "^6.1.1",
+ "uint8array-extras": "^1.4.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=20"
},
"funding": {
"url": "https://github.com/sindresorhus/file-type?sponsor=1"
@@ -8789,11 +7890,10 @@
}
},
"node_modules/flatted": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
- "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
- "dev": true,
- "license": "ISC"
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
+ "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==",
+ "dev": true
},
"node_modules/fluent-ffmpeg": {
"version": "2.1.3",
@@ -8822,16 +7922,15 @@
}
},
"node_modules/follow-redirects": {
- "version": "1.15.11",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
- "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
+ "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
- "license": "MIT",
"engines": {
"node": ">=4.0"
},
@@ -8845,6 +7944,7 @@
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
"integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"is-callable": "^1.2.7"
@@ -8903,8 +8003,7 @@
"node_modules/forwarded-parse": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/forwarded-parse/-/forwarded-parse-2.1.2.tgz",
- "integrity": "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==",
- "license": "MIT"
+ "integrity": "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw=="
},
"node_modules/fresh": {
"version": "0.5.2",
@@ -8996,6 +8095,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz",
"integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -9103,7 +8203,6 @@
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz",
"integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==",
- "license": "MIT",
"dependencies": {
"image-q": "^4.0.0",
"omggif": "^1.0.10"
@@ -9113,7 +8212,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz",
"integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==",
- "license": "MIT",
"dependencies": {
"citty": "^0.1.6",
"consola": "^3.4.0",
@@ -9180,22 +8278,20 @@
}
},
"node_modules/glob/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
"dev": true,
- "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/glob/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
- "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -9357,6 +8453,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0"
@@ -9593,7 +8690,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz",
"integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==",
- "license": "MIT",
"dependencies": {
"@types/node": "16.9.1"
}
@@ -9601,8 +8697,7 @@
"node_modules/image-q/node_modules/@types/node": {
"version": "16.9.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz",
- "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==",
- "license": "MIT"
+ "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g=="
},
"node_modules/import-fresh": {
"version": "3.3.1",
@@ -9632,15 +8727,17 @@
}
},
"node_modules/import-in-the-middle": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.15.0.tgz",
- "integrity": "sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==",
- "license": "Apache-2.0",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-3.0.1.tgz",
+ "integrity": "sha512-pYkiyXVL2Mf3pozdlDGV6NAObxQx13Ae8knZk1UJRJ6uRW/ZRmTGHlQYtrsSl7ubuE5F8CD1z+s1n4RHNuTtuA==",
"dependencies": {
- "acorn": "^8.14.0",
+ "acorn": "^8.15.0",
"acorn-import-attributes": "^1.9.5",
- "cjs-module-lexer": "^1.2.2",
- "module-details-from-path": "^1.0.3"
+ "cjs-module-lexer": "^2.2.0",
+ "module-details-from-path": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=18"
}
},
"node_modules/import-meta-resolve": {
@@ -9811,10 +8908,9 @@
}
},
"node_modules/ip-address": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
- "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
- "license": "MIT",
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz",
+ "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==",
"engines": {
"node": ">= 12"
}
@@ -9828,22 +8924,6 @@
"node": ">= 10"
}
},
- "node_modules/is-arguments": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz",
- "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==",
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "has-tostringtag": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-array-buffer": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
@@ -9936,6 +9016,7 @@
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
"integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -9948,6 +9029,7 @@
"version": "2.16.1",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
"integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"hasown": "^2.0.2"
@@ -10040,6 +9122,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz",
"integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.4",
@@ -10155,6 +9238,7 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
"integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
@@ -10250,6 +9334,7 @@
"version": "1.1.15",
"resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
"integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"which-typed-array": "^1.1.16"
@@ -10351,38 +9436,37 @@
"license": "ISC"
},
"node_modules/jimp": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.6.0.tgz",
- "integrity": "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==",
- "license": "MIT",
- "dependencies": {
- "@jimp/core": "1.6.0",
- "@jimp/diff": "1.6.0",
- "@jimp/js-bmp": "1.6.0",
- "@jimp/js-gif": "1.6.0",
- "@jimp/js-jpeg": "1.6.0",
- "@jimp/js-png": "1.6.0",
- "@jimp/js-tiff": "1.6.0",
- "@jimp/plugin-blit": "1.6.0",
- "@jimp/plugin-blur": "1.6.0",
- "@jimp/plugin-circle": "1.6.0",
- "@jimp/plugin-color": "1.6.0",
- "@jimp/plugin-contain": "1.6.0",
- "@jimp/plugin-cover": "1.6.0",
- "@jimp/plugin-crop": "1.6.0",
- "@jimp/plugin-displace": "1.6.0",
- "@jimp/plugin-dither": "1.6.0",
- "@jimp/plugin-fisheye": "1.6.0",
- "@jimp/plugin-flip": "1.6.0",
- "@jimp/plugin-hash": "1.6.0",
- "@jimp/plugin-mask": "1.6.0",
- "@jimp/plugin-print": "1.6.0",
- "@jimp/plugin-quantize": "1.6.0",
- "@jimp/plugin-resize": "1.6.0",
- "@jimp/plugin-rotate": "1.6.0",
- "@jimp/plugin-threshold": "1.6.0",
- "@jimp/types": "1.6.0",
- "@jimp/utils": "1.6.0"
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.6.1.tgz",
+ "integrity": "sha512-hNQh6rZtWfSVWSNVmvq87N5BPJsNH7k7I7qyrXf9DOma9xATQk3fsyHazCQe51nCjdkoWdTmh0vD7bjVSLoxxw==",
+ "dependencies": {
+ "@jimp/core": "1.6.1",
+ "@jimp/diff": "1.6.1",
+ "@jimp/js-bmp": "1.6.1",
+ "@jimp/js-gif": "1.6.1",
+ "@jimp/js-jpeg": "1.6.1",
+ "@jimp/js-png": "1.6.1",
+ "@jimp/js-tiff": "1.6.1",
+ "@jimp/plugin-blit": "1.6.1",
+ "@jimp/plugin-blur": "1.6.1",
+ "@jimp/plugin-circle": "1.6.1",
+ "@jimp/plugin-color": "1.6.1",
+ "@jimp/plugin-contain": "1.6.1",
+ "@jimp/plugin-cover": "1.6.1",
+ "@jimp/plugin-crop": "1.6.1",
+ "@jimp/plugin-displace": "1.6.1",
+ "@jimp/plugin-dither": "1.6.1",
+ "@jimp/plugin-fisheye": "1.6.1",
+ "@jimp/plugin-flip": "1.6.1",
+ "@jimp/plugin-hash": "1.6.1",
+ "@jimp/plugin-mask": "1.6.1",
+ "@jimp/plugin-print": "1.6.1",
+ "@jimp/plugin-quantize": "1.6.1",
+ "@jimp/plugin-resize": "1.6.1",
+ "@jimp/plugin-rotate": "1.6.1",
+ "@jimp/plugin-threshold": "1.6.1",
+ "@jimp/types": "1.6.1",
+ "@jimp/utils": "1.6.1"
},
"engines": {
"node": ">=18"
@@ -10409,8 +9493,7 @@
"node_modules/jpeg-js": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz",
- "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==",
- "license": "BSD-3-Clause"
+ "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg=="
},
"node_modules/js-tokens": {
"version": "4.0.0",
@@ -10562,12 +9645,11 @@
}
},
"node_modules/jws": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
- "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
- "license": "MIT",
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.3.tgz",
+ "integrity": "sha512-byiJ0FLRdLdSVSReO/U4E7RoEyOCKnEnEPMjq3HxWtvzLsV08/i5RQKsFVNkCldrCaPr2vDNAOMsfs8T/Hze7g==",
"dependencies": {
- "jwa": "^1.4.1",
+ "jwa": "^1.4.2",
"safe-buffer": "^5.0.1"
}
},
@@ -10619,44 +9701,6 @@
"protobufjs": "6.8.8"
}
},
- "node_modules/libsignal/node_modules/@types/node": {
- "version": "10.17.60",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz",
- "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==",
- "license": "MIT"
- },
- "node_modules/libsignal/node_modules/long": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
- "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==",
- "license": "Apache-2.0"
- },
- "node_modules/libsignal/node_modules/protobufjs": {
- "version": "6.8.8",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz",
- "integrity": "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==",
- "hasInstallScript": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@protobufjs/aspromise": "^1.1.2",
- "@protobufjs/base64": "^1.1.2",
- "@protobufjs/codegen": "^2.0.4",
- "@protobufjs/eventemitter": "^1.1.0",
- "@protobufjs/fetch": "^1.1.0",
- "@protobufjs/float": "^1.0.2",
- "@protobufjs/inquire": "^1.1.0",
- "@protobufjs/path": "^1.1.2",
- "@protobufjs/pool": "^1.1.0",
- "@protobufjs/utf8": "^1.1.0",
- "@types/long": "^4.0.0",
- "@types/node": "^10.1.0",
- "long": "^4.0.0"
- },
- "bin": {
- "pbjs": "bin/pbjs",
- "pbts": "bin/pbts"
- }
- },
"node_modules/lilconfig": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
@@ -11487,12 +10531,12 @@
}
},
"node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
- "license": "ISC",
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
+ "dev": true,
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "brace-expansion": "^2.0.2"
},
"engines": {
"node": ">=16 || 14 >=14.17"
@@ -11505,30 +10549,29 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/minio": {
- "version": "8.0.6",
- "resolved": "https://registry.npmjs.org/minio/-/minio-8.0.6.tgz",
- "integrity": "sha512-sOeh2/b/XprRmEtYsnNRFtOqNRTPDvYtMWh+spWlfsuCV/+IdxNeKVUMKLqI7b5Dr07ZqCPuaRGU/rB9pZYVdQ==",
- "license": "Apache-2.0",
+ "version": "8.0.7",
+ "resolved": "https://registry.npmjs.org/minio/-/minio-8.0.7.tgz",
+ "integrity": "sha512-E737MgufW8CeQAsTAtnEMrxZ9scMSf29kkhZoXzDTKj/Jszzo2SfeZUH9wbDQH2Rsq6TCtl/yQL0+XdVKZansQ==",
"dependencies": {
"async": "^3.2.4",
"block-stream2": "^2.1.0",
"browser-or-node": "^2.1.1",
"buffer-crc32": "^1.0.0",
"eventemitter3": "^5.0.1",
- "fast-xml-parser": "^4.4.1",
+ "fast-xml-parser": "^5.3.4",
"ipaddr.js": "^2.0.1",
"lodash": "^4.17.21",
"mime-types": "^2.1.35",
"query-string": "^7.1.3",
"stream-json": "^1.8.0",
"through2": "^4.0.2",
- "web-encoding": "^1.1.5",
"xml2js": "^0.5.0 || ^0.6.2"
},
"engines": {
@@ -11541,48 +10584,6 @@
"integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
"license": "MIT"
},
- "node_modules/minio/node_modules/fast-xml-parser": {
- "version": "4.5.3",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz",
- "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/NaturalIntelligence"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "strnum": "^1.1.1"
- },
- "bin": {
- "fxparser": "src/cli/cli.js"
- }
- },
- "node_modules/minio/node_modules/strnum": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz",
- "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/NaturalIntelligence"
- }
- ],
- "license": "MIT"
- },
- "node_modules/mkdirp": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
- "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "license": "MIT",
- "dependencies": {
- "minimist": "^1.2.6"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
"node_modules/mlly": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz",
@@ -11615,8 +10616,7 @@
"node_modules/module-details-from-path": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz",
- "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==",
- "license": "MIT"
+ "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w=="
},
"node_modules/mpg123-decoder": {
"version": "1.0.3",
@@ -11638,27 +10638,27 @@
"license": "MIT"
},
"node_modules/multer": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.2.tgz",
- "integrity": "sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==",
- "license": "MIT",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz",
+ "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==",
"dependencies": {
"append-field": "^1.0.0",
"busboy": "^1.6.0",
"concat-stream": "^2.0.0",
- "mkdirp": "^0.5.6",
- "object-assign": "^4.1.1",
- "type-is": "^1.6.18",
- "xtend": "^4.0.2"
+ "type-is": "^1.6.18"
},
"engines": {
"node": ">= 10.16.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/music-metadata": {
- "version": "11.10.3",
- "resolved": "https://registry.npmjs.org/music-metadata/-/music-metadata-11.10.3.tgz",
- "integrity": "sha512-j0g/x4cNNZW6I5gdcPAY+GFkJY9WHTpkFDMBJKQLxJQyvSfQbXm57fTE3haGFFuOzCgtsTd4Plwc49Sn9RacDQ==",
+ "version": "11.12.3",
+ "resolved": "https://registry.npmjs.org/music-metadata/-/music-metadata-11.12.3.tgz",
+ "integrity": "sha512-n6hSTZkuD59qWgHh6IP5dtDlDZQXoxk/bcA85Jywg8Z1iFrlNgl2+GTFgjZyn52W5UgQpV42V4XqrQZZAMbZTQ==",
"funding": [
{
"type": "github",
@@ -11669,82 +10669,20 @@
"url": "https://buymeacoffee.com/borewit"
}
],
- "license": "MIT",
"dependencies": {
- "@borewit/text-codec": "^0.2.0",
+ "@borewit/text-codec": "^0.2.2",
"@tokenizer/token": "^0.3.0",
"content-type": "^1.0.5",
"debug": "^4.4.3",
- "file-type": "^21.1.1",
+ "file-type": "^21.3.1",
"media-typer": "^1.1.0",
"strtok3": "^10.3.4",
- "token-types": "^6.1.1",
- "uint8array-extras": "^1.5.0"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/music-metadata/node_modules/file-type": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.1.1.tgz",
- "integrity": "sha512-ifJXo8zUqbQ/bLbl9sFoqHNTNWbnPY1COImFfM6CCy7z+E+jC1eY9YfOKkx0fckIg+VljAy2/87T61fp0+eEkg==",
- "license": "MIT",
- "dependencies": {
- "@tokenizer/inflate": "^0.4.1",
- "strtok3": "^10.3.4",
- "token-types": "^6.1.1",
- "uint8array-extras": "^1.4.0"
- },
- "engines": {
- "node": ">=20"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/file-type?sponsor=1"
- }
- },
- "node_modules/music-metadata/node_modules/strtok3": {
- "version": "10.3.4",
- "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz",
- "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==",
- "license": "MIT",
- "dependencies": {
- "@tokenizer/token": "^0.3.0"
+ "token-types": "^6.1.2",
+ "uint8array-extras": "^1.5.0",
+ "win-guid": "^0.2.1"
},
"engines": {
"node": ">=18"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
- }
- },
- "node_modules/music-metadata/node_modules/token-types": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.1.tgz",
- "integrity": "sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ==",
- "license": "MIT",
- "dependencies": {
- "@borewit/text-codec": "^0.1.0",
- "@tokenizer/token": "^0.3.0",
- "ieee754": "^1.2.1"
- },
- "engines": {
- "node": ">=14.16"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
- }
- },
- "node_modules/music-metadata/node_modules/token-types/node_modules/@borewit/text-codec": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.1.1.tgz",
- "integrity": "sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
}
},
"node_modules/mute-stream": {
@@ -11894,8 +10832,7 @@
"node_modules/node-fetch-native": {
"version": "1.6.7",
"resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz",
- "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==",
- "license": "MIT"
+ "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q=="
},
"node_modules/node-wav": {
"version": "0.0.2",
@@ -11919,24 +10856,26 @@
}
},
"node_modules/nypm": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.2.tgz",
- "integrity": "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==",
- "license": "MIT",
+ "version": "0.6.6",
+ "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.6.tgz",
+ "integrity": "sha512-vRyr0r4cbBapw07Xw8xrj9Teq3o7MUD35rSaTcanDbW+aK2XHDgJFiU6ZTj2GBw7Q12ysdsyFss+Vdz4hQ0Y6Q==",
"dependencies": {
- "citty": "^0.1.6",
- "consola": "^3.4.2",
+ "citty": "^0.2.2",
"pathe": "^2.0.3",
- "pkg-types": "^2.3.0",
- "tinyexec": "^1.0.1"
+ "tinyexec": "^1.1.1"
},
"bin": {
"nypm": "dist/cli.mjs"
},
"engines": {
- "node": "^14.16.0 || >=16.10.0"
+ "node": ">=18"
}
},
+ "node_modules/nypm/node_modules/citty": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.2.tgz",
+ "integrity": "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w=="
+ },
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -12061,14 +11000,12 @@
"node_modules/ohash": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz",
- "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==",
- "license": "MIT"
+ "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="
},
"node_modules/omggif": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz",
- "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==",
- "license": "MIT"
+ "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw=="
},
"node_modules/on-exit-leak-free": {
"version": "2.1.2",
@@ -12402,8 +11339,7 @@
"node_modules/pako": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
- "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
- "license": "(MIT AND Zlib)"
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
},
"node_modules/parent-module": {
"version": "1.0.1",
@@ -12421,20 +11357,17 @@
"node_modules/parse-bmfont-ascii": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz",
- "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==",
- "license": "MIT"
+ "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA=="
},
"node_modules/parse-bmfont-binary": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz",
- "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==",
- "license": "MIT"
+ "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA=="
},
"node_modules/parse-bmfont-xml": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz",
"integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==",
- "license": "MIT",
"dependencies": {
"xml-parse-from-string": "^1.0.0",
"xml2js": "^0.5.0"
@@ -12444,7 +11377,6 @@
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
"integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
- "license": "MIT",
"dependencies": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
@@ -12538,6 +11470,20 @@
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
}
},
+ "node_modules/path-expression-matcher": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz",
+ "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -12562,13 +11508,13 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true,
"license": "MIT"
},
"node_modules/path-to-regexp": {
- "version": "0.1.12",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
- "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
- "license": "MIT"
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz",
+ "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA=="
},
"node_modules/pathe": {
"version": "2.0.3",
@@ -12576,24 +11522,10 @@
"integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
"license": "MIT"
},
- "node_modules/peek-readable": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz",
- "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
- }
- },
"node_modules/perfect-debounce": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
- "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==",
- "license": "MIT"
+ "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="
},
"node_modules/pg": {
"version": "8.16.3",
@@ -12691,11 +11623,10 @@
"license": "ISC"
},
"node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=8.6"
},
@@ -12766,7 +11697,6 @@
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz",
"integrity": "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==",
- "license": "ISC",
"dependencies": {
"pngjs": "^6.0.0"
},
@@ -12778,19 +11708,17 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz",
"integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==",
- "license": "MIT",
"engines": {
"node": ">=12.13.0"
}
},
"node_modules/pkg-types": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz",
- "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==",
- "license": "MIT",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.1.tgz",
+ "integrity": "sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==",
"dependencies": {
- "confbox": "^0.2.2",
- "exsolve": "^1.0.7",
+ "confbox": "^0.2.4",
+ "exsolve": "^1.0.8",
"pathe": "^2.0.3"
}
},
@@ -12798,7 +11726,6 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz",
"integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==",
- "license": "MIT",
"engines": {
"node": ">=14.19.0"
}
@@ -12807,6 +11734,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
"integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -12933,14 +11861,13 @@
}
},
"node_modules/prisma": {
- "version": "6.19.0",
- "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.19.0.tgz",
- "integrity": "sha512-F3eX7K+tWpkbhl3l4+VkFtrwJlLXbAM+f9jolgoUZbFcm1DgHZ4cq9AgVEgUym2au5Ad/TDLN8lg83D+M10ycw==",
+ "version": "6.19.3",
+ "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.19.3.tgz",
+ "integrity": "sha512-++ZJ0ijLrDJF6hNB4t4uxg2br3fC4H9Yc9tcbjr2fcNFP3rh/SBNrAgjhsqBU4Ght8JPrVofG/ZkXfnSfnYsFg==",
"hasInstallScript": true,
- "license": "Apache-2.0",
"dependencies": {
- "@prisma/config": "6.19.0",
- "@prisma/engines": "6.19.0"
+ "@prisma/config": "6.19.3",
+ "@prisma/engines": "6.19.3"
},
"bin": {
"prisma": "build/index.js"
@@ -12957,15 +11884,6 @@
}
}
},
- "node_modules/process": {
- "version": "0.11.10",
- "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
- "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6.0"
- }
- },
"node_modules/process-warning": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz",
@@ -12983,24 +11901,23 @@
"license": "MIT"
},
"node_modules/protobufjs": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz",
- "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.0.tgz",
+ "integrity": "sha512-LtESOsMPTZgyYtwxhvdgdjGL0HmXEaRA/hVD6sol4zA60hVXXXP/SGmxnqDbgGE8gy7pYex7cym+5vYPcmaXBQ==",
"hasInstallScript": true,
- "license": "BSD-3-Clause",
"dependencies": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
- "@protobufjs/codegen": "^2.0.4",
+ "@protobufjs/codegen": "^2.0.5",
"@protobufjs/eventemitter": "^1.1.0",
- "@protobufjs/fetch": "^1.1.0",
+ "@protobufjs/fetch": "^1.1.1",
"@protobufjs/float": "^1.0.2",
- "@protobufjs/inquire": "^1.1.0",
+ "@protobufjs/inquire": "^1.1.2",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
- "@protobufjs/utf8": "^1.1.0",
+ "@protobufjs/utf8": "^1.1.1",
"@types/node": ">=13.7.0",
- "long": "^5.0.0"
+ "long": "^5.3.2"
},
"engines": {
"node": ">=12.0.0"
@@ -13029,10 +11946,12 @@
}
},
"node_modules/proxy-from-env": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
- "license": "MIT"
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz",
+ "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==",
+ "engines": {
+ "node": ">=10"
+ }
},
"node_modules/punycode": {
"version": "1.3.2",
@@ -13053,8 +11972,7 @@
"type": "opencollective",
"url": "https://opencollective.com/fast-check"
}
- ],
- "license": "MIT"
+ ]
},
"node_modules/pusher": {
"version": "5.2.0",
@@ -13289,12 +12207,11 @@
}
},
"node_modules/qs": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
- "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
- "license": "BSD-3-Clause",
+ "version": "6.15.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz",
+ "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==",
"dependencies": {
- "side-channel": "^1.0.6"
+ "side-channel": "^1.1.0"
},
"engines": {
"node": ">=0.6"
@@ -13373,25 +12290,50 @@
}
},
"node_modules/raw-body": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
- "license": "MIT",
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz",
+ "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==",
"dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
+ "bytes": "~3.1.2",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.4.24",
+ "unpipe": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
+ "node_modules/raw-body/node_modules/http-errors": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/raw-body/node_modules/statuses": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/rc9": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz",
"integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==",
- "license": "MIT",
"dependencies": {
"defu": "^6.1.4",
"destr": "^2.0.3"
@@ -13411,62 +12353,6 @@
"node": ">= 6"
}
},
- "node_modules/readable-web-to-node-stream": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.4.tgz",
- "integrity": "sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==",
- "license": "MIT",
- "dependencies": {
- "readable-stream": "^4.7.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
- }
- },
- "node_modules/readable-web-to-node-stream/node_modules/buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
- }
- },
- "node_modules/readable-web-to-node-stream/node_modules/readable-stream": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
- "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
- "license": "MIT",
- "dependencies": {
- "abort-controller": "^3.0.0",
- "buffer": "^6.0.3",
- "events": "^3.3.0",
- "process": "^0.11.10",
- "string_decoder": "^1.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
"node_modules/readdirp": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
@@ -13570,17 +12456,15 @@
}
},
"node_modules/require-in-the-middle": {
- "version": "7.5.2",
- "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.2.tgz",
- "integrity": "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==",
- "license": "MIT",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-8.0.1.tgz",
+ "integrity": "sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==",
"dependencies": {
"debug": "^4.3.5",
- "module-details-from-path": "^1.0.3",
- "resolve": "^1.22.8"
+ "module-details-from-path": "^1.0.3"
},
"engines": {
- "node": ">=8.6.0"
+ "node": ">=9.3.0 || >=8.10.0 <9.0.0"
}
},
"node_modules/require-main-filename": {
@@ -13599,6 +12483,7 @@
"version": "1.22.11",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
"integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"is-core-module": "^2.16.1",
@@ -13698,10 +12583,9 @@
}
},
"node_modules/rollup": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz",
- "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==",
- "license": "MIT",
+ "version": "4.60.4",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.4.tgz",
+ "integrity": "sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g==",
"dependencies": {
"@types/estree": "1.0.8"
},
@@ -13713,28 +12597,31 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.53.3",
- "@rollup/rollup-android-arm64": "4.53.3",
- "@rollup/rollup-darwin-arm64": "4.53.3",
- "@rollup/rollup-darwin-x64": "4.53.3",
- "@rollup/rollup-freebsd-arm64": "4.53.3",
- "@rollup/rollup-freebsd-x64": "4.53.3",
- "@rollup/rollup-linux-arm-gnueabihf": "4.53.3",
- "@rollup/rollup-linux-arm-musleabihf": "4.53.3",
- "@rollup/rollup-linux-arm64-gnu": "4.53.3",
- "@rollup/rollup-linux-arm64-musl": "4.53.3",
- "@rollup/rollup-linux-loong64-gnu": "4.53.3",
- "@rollup/rollup-linux-ppc64-gnu": "4.53.3",
- "@rollup/rollup-linux-riscv64-gnu": "4.53.3",
- "@rollup/rollup-linux-riscv64-musl": "4.53.3",
- "@rollup/rollup-linux-s390x-gnu": "4.53.3",
- "@rollup/rollup-linux-x64-gnu": "4.53.3",
- "@rollup/rollup-linux-x64-musl": "4.53.3",
- "@rollup/rollup-openharmony-arm64": "4.53.3",
- "@rollup/rollup-win32-arm64-msvc": "4.53.3",
- "@rollup/rollup-win32-ia32-msvc": "4.53.3",
- "@rollup/rollup-win32-x64-gnu": "4.53.3",
- "@rollup/rollup-win32-x64-msvc": "4.53.3",
+ "@rollup/rollup-android-arm-eabi": "4.60.4",
+ "@rollup/rollup-android-arm64": "4.60.4",
+ "@rollup/rollup-darwin-arm64": "4.60.4",
+ "@rollup/rollup-darwin-x64": "4.60.4",
+ "@rollup/rollup-freebsd-arm64": "4.60.4",
+ "@rollup/rollup-freebsd-x64": "4.60.4",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.60.4",
+ "@rollup/rollup-linux-arm-musleabihf": "4.60.4",
+ "@rollup/rollup-linux-arm64-gnu": "4.60.4",
+ "@rollup/rollup-linux-arm64-musl": "4.60.4",
+ "@rollup/rollup-linux-loong64-gnu": "4.60.4",
+ "@rollup/rollup-linux-loong64-musl": "4.60.4",
+ "@rollup/rollup-linux-ppc64-gnu": "4.60.4",
+ "@rollup/rollup-linux-ppc64-musl": "4.60.4",
+ "@rollup/rollup-linux-riscv64-gnu": "4.60.4",
+ "@rollup/rollup-linux-riscv64-musl": "4.60.4",
+ "@rollup/rollup-linux-s390x-gnu": "4.60.4",
+ "@rollup/rollup-linux-x64-gnu": "4.60.4",
+ "@rollup/rollup-linux-x64-musl": "4.60.4",
+ "@rollup/rollup-openbsd-x64": "4.60.4",
+ "@rollup/rollup-openharmony-arm64": "4.60.4",
+ "@rollup/rollup-win32-arm64-msvc": "4.60.4",
+ "@rollup/rollup-win32-ia32-msvc": "4.60.4",
+ "@rollup/rollup-win32-x64-gnu": "4.60.4",
+ "@rollup/rollup-win32-x64-msvc": "4.60.4",
"fsevents": "~2.3.2"
}
},
@@ -13842,6 +12729,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
"integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
@@ -13973,6 +12861,7 @@
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
"integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"define-data-property": "^1.1.4",
@@ -14090,12 +12979,6 @@
"node": ">=8"
}
},
- "node_modules/shimmer": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz",
- "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==",
- "license": "BSD-2-Clause"
- },
"node_modules/side-channel": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
@@ -14176,10 +13059,9 @@
"license": "ISC"
},
"node_modules/simple-xml-to-json": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/simple-xml-to-json/-/simple-xml-to-json-1.2.3.tgz",
- "integrity": "sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==",
- "license": "MIT",
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/simple-xml-to-json/-/simple-xml-to-json-1.2.7.tgz",
+ "integrity": "sha512-mz9VXphOxQWX3eQ/uXCtm6upltoN0DLx8Zb5T4TFC4FHB7S9FDPGre8CfLWqPWQQH/GrQYd2AXhhVM5LDpYx6Q==",
"engines": {
"node": ">=20.12.2"
}
@@ -14222,15 +13104,14 @@
}
},
"node_modules/socket.io": {
- "version": "4.8.1",
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz",
- "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==",
- "license": "MIT",
+ "version": "4.8.3",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.3.tgz",
+ "integrity": "sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==",
"dependencies": {
"accepts": "~1.3.4",
"base64id": "~2.0.0",
"cors": "~2.8.5",
- "debug": "~4.3.2",
+ "debug": "~4.4.1",
"engine.io": "~6.6.0",
"socket.io-adapter": "~2.5.2",
"socket.io-parser": "~4.2.4"
@@ -14240,37 +13121,18 @@
}
},
"node_modules/socket.io-adapter": {
- "version": "2.5.5",
- "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
- "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
- "license": "MIT",
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.6.tgz",
+ "integrity": "sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==",
"dependencies": {
- "debug": "~4.3.4",
- "ws": "~8.17.1"
- }
- },
- "node_modules/socket.io-adapter/node_modules/debug": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
- "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
+ "debug": "~4.4.1",
+ "ws": "~8.18.3"
}
},
"node_modules/socket.io-adapter/node_modules/ws": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
- "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
- "license": "MIT",
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
"engines": {
"node": ">=10.0.0"
},
@@ -14288,13 +13150,12 @@
}
},
"node_modules/socket.io-client": {
- "version": "4.8.1",
- "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz",
- "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==",
- "license": "MIT",
+ "version": "4.8.3",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.3.tgz",
+ "integrity": "sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==",
"dependencies": {
"@socket.io/component-emitter": "~3.1.0",
- "debug": "~4.3.2",
+ "debug": "~4.4.1",
"engine.io-client": "~6.6.1",
"socket.io-parser": "~4.2.4"
},
@@ -14302,70 +13163,18 @@
"node": ">=10.0.0"
}
},
- "node_modules/socket.io-client/node_modules/debug": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
- "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
"node_modules/socket.io-parser": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
- "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
- "license": "MIT",
+ "version": "4.2.6",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz",
+ "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==",
"dependencies": {
"@socket.io/component-emitter": "~3.1.0",
- "debug": "~4.3.1"
+ "debug": "~4.4.1"
},
"engines": {
"node": ">=10.0.0"
}
},
- "node_modules/socket.io-parser/node_modules/debug": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
- "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/socket.io/node_modules/debug": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
- "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
"node_modules/socks": {
"version": "2.8.7",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",
@@ -14628,28 +13437,25 @@
}
},
"node_modules/strnum": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz",
- "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.3.0.tgz",
+ "integrity": "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
}
- ],
- "license": "MIT"
+ ]
},
"node_modules/strtok3": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz",
- "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==",
- "license": "MIT",
+ "version": "10.3.5",
+ "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.5.tgz",
+ "integrity": "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==",
"dependencies": {
- "@tokenizer/token": "^0.3.0",
- "peek-readable": "^4.1.0"
+ "@tokenizer/token": "^0.3.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
},
"funding": {
"type": "github",
@@ -14704,6 +13510,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -14821,14 +13628,12 @@
"node_modules/tinycolor2": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
- "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==",
- "license": "MIT"
+ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
},
"node_modules/tinyexec": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz",
- "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==",
- "license": "MIT",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.2.tgz",
+ "integrity": "sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==",
"engines": {
"node": ">=18"
}
@@ -14867,10 +13672,9 @@
}
},
"node_modules/tinyglobby/node_modules/picomatch": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
- "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
- "license": "MIT",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
"engines": {
"node": ">=12"
},
@@ -14914,16 +13718,16 @@
}
},
"node_modules/token-types": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz",
- "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==",
- "license": "MIT",
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz",
+ "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==",
"dependencies": {
+ "@borewit/text-codec": "^0.2.1",
"@tokenizer/token": "^0.3.0",
"ieee754": "^1.2.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=14.16"
},
"funding": {
"type": "github",
@@ -15725,7 +14529,6 @@
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz",
"integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==",
- "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -15753,10 +14556,9 @@
}
},
"node_modules/undici": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz",
- "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==",
- "license": "MIT",
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-7.25.0.tgz",
+ "integrity": "sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==",
"engines": {
"node": ">=20.18.1"
}
@@ -15843,24 +14645,10 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz",
"integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==",
- "license": "MIT",
"dependencies": {
"pako": "^1.0.11"
}
},
- "node_modules/util": {
- "version": "0.12.5",
- "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
- "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
- "license": "MIT",
- "dependencies": {
- "inherits": "^2.0.3",
- "is-arguments": "^1.0.4",
- "is-generator-function": "^1.0.7",
- "is-typed-array": "^1.1.3",
- "which-typed-array": "^1.1.2"
- }
- },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -15877,14 +14665,13 @@
}
},
"node_modules/uuid": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz",
- "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==",
+ "version": "13.0.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.2.tgz",
+ "integrity": "sha512-vzi9uRZ926x4XV73S/4qQaTwPXM2JBj6/6lI/byHH1jOpCzb0zDbfytgA9LcN/hzb2l7WQSQnxITOVx5un/wGw==",
"funding": [
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
],
- "license": "MIT",
"bin": {
"uuid": "dist-node/bin/uuid"
}
@@ -15917,18 +14704,6 @@
"defaults": "^1.0.3"
}
},
- "node_modules/web-encoding": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz",
- "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==",
- "license": "MIT",
- "dependencies": {
- "util": "^0.12.3"
- },
- "optionalDependencies": {
- "@zxing/text-encoding": "0.9.0"
- }
- },
"node_modules/web-streams-polyfill": {
"version": "4.0.0-beta.3",
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz",
@@ -16047,6 +14822,7 @@
"version": "1.1.19",
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz",
"integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"available-typed-arrays": "^1.0.7",
@@ -16064,6 +14840,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/win-guid": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/win-guid/-/win-guid-0.2.1.tgz",
+ "integrity": "sha512-gEIQU4mkgl2OPeoNrWflcJFJ3Ae2BPd4eCsHHA/XikslkIVms/nHhvnvzIZV7VLmBvtFlDOzLt9rrZT+n6D67A=="
+ },
"node_modules/word-wrap": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
@@ -16136,10 +14917,9 @@
"license": "ISC"
},
"node_modules/ws": {
- "version": "8.18.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
- "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
- "license": "MIT",
+ "version": "8.20.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.1.tgz",
+ "integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==",
"engines": {
"node": ">=10.0.0"
},
@@ -16156,11 +14936,24 @@
}
}
},
+ "node_modules/xml-naming": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz",
+ "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
"node_modules/xml-parse-from-string": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz",
- "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==",
- "license": "MIT"
+ "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g=="
},
"node_modules/xml2js": {
"version": "0.6.2",
@@ -16217,16 +15010,18 @@
"license": "ISC"
},
"node_modules/yaml": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz",
- "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==",
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz",
+ "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==",
"devOptional": true,
- "license": "ISC",
"bin": {
"yaml": "bin.mjs"
},
"engines": {
"node": ">= 14.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/eemeli"
}
},
"node_modules/yargs": {
diff --git a/package.json b/package.json
index 56e32fcc8a..37864d8f2f 100644
--- a/package.json
+++ b/package.json
@@ -24,7 +24,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/EvolutionAPI/evolution-api.git"
+ "url": "git+https://github.com/jeandgardany/evolution-api.git"
},
"keywords": [
"chat",
@@ -43,14 +43,19 @@
"bot"
],
"author": {
- "name": "Davidson Gomes",
- "email": "contato@evolution-api.com"
+ "name": "Jean Lima",
+ "email": "jeandgardany@hotmail.com"
},
+ "contributors": [
+ {
+ "name": "Davidson Gomes"
+ }
+ ],
"license": "Apache-2.0",
"bugs": {
- "url": "https://github.com/EvolutionAPI/evolution-api/issues"
+ "url": "https://github.com/jeandgardany/evolution-api/issues"
},
- "homepage": "https://github.com/EvolutionAPI/evolution-api#readme",
+ "homepage": "https://github.com/jeandgardany/evolution-api#readme",
"lint-staged": {
"src/**/*.{ts,js}": [
"eslint --fix"
@@ -64,6 +69,9 @@
"path": "cz-conventional-changelog"
}
},
+ "overrides": {
+ "protobufjs": "^7.6.0"
+ },
"dependencies": {
"@adiwajshing/keyed-db": "^0.2.4",
"@aws-sdk/client-sqs": "^3.891.0",
diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts
index 60e857fcc1..ce855e2c41 100644
--- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts
+++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts
@@ -1,4 +1,3 @@
-import { getCollectionsDto } from '@api/dto/business.dto';
import { OfferCallDto } from '@api/dto/call.dto';
import {
ArchiveChatDto,
@@ -55,14 +54,22 @@ import {
import { chatwootImport } from '@api/integrations/chatbot/chatwoot/utils/chatwoot-import-helper';
import * as s3Service from '@api/integrations/storage/s3/libs/minio.server';
import { ProviderFiles } from '@api/provider/sessions';
-import { PrismaRepository, Query } from '@api/repository/repository.service';
+import { PrismaRepository } from '@api/repository/repository.service';
import { chatbotController, waMonitor } from '@api/server.module';
import { CacheService } from '@api/services/cache.service';
import { ChannelStartupService } from '@api/services/channel.service';
-import { Events, MessageSubtype, TypeMediaMessage, wa } from '@api/types/wa.types';
+import {
+ Events,
+ LidContact,
+ LidMessageKey,
+ MessageSubtype,
+ resolveLidContact,
+ resolveLidJid,
+ TypeMediaMessage,
+ wa,
+} from '@api/types/wa.types';
import { CacheEngine } from '@cache/cacheengine';
import {
- AudioConverter,
CacheConf,
Chatwoot,
ConfigService,
@@ -78,14 +85,11 @@ import {
import { BadRequestException, InternalServerErrorException, NotFoundException } from '@exceptions';
import ffmpegPath from '@ffmpeg-installer/ffmpeg';
import { Boom } from '@hapi/boom';
-import { createId as cuid } from '@paralleldrive/cuid2';
-import { Instance, Message } from '@prisma/client';
+import { Instance } from '@prisma/client';
import { createJid } from '@utils/createJid';
-import { fetchLatestWaWebVersion } from '@utils/fetchLatestWaWebVersion';
-import { makeProxyAgent, makeProxyAgentUndici } from '@utils/makeProxyAgent';
+import { makeProxyAgent } from '@utils/makeProxyAgent';
import { getOnWhatsappCache, saveOnWhatsappCache } from '@utils/onWhatsappCache';
import { status } from '@utils/renderStatus';
-import { sendTelemetry } from '@utils/sendTelemetry';
import useMultiFileAuthStatePrisma from '@utils/use-multi-file-auth-state-prisma';
import { AuthStateProvider } from '@utils/use-multi-file-auth-state-provider-files';
import { useMultiFileAuthStateRedisDb } from '@utils/use-multi-file-auth-state-redis-db';
@@ -95,39 +99,35 @@ import makeWASocket, {
BufferedEventData,
BufferJSON,
CacheStore,
- CatalogCollection,
Chat,
ConnectionState,
Contact,
- decryptPollVote,
delay,
DisconnectReason,
- downloadContentFromMessage,
downloadMediaMessage,
+ fetchLatestBaileysVersion,
generateWAMessageFromContent,
getAggregateVotesInPollMessage,
- GetCatalogOptions,
getContentType,
getDevice,
GroupMetadata,
isJidBroadcast,
isJidGroup,
isJidNewsletter,
+ isLidUser,
isPnUser,
- jidNormalizedUser,
makeCacheableSignalKeyStore,
MessageUpsertType,
MessageUserReceiptUpdate,
MiscMessageGenerationOptions,
ParticipantAction,
prepareWAMessageMedia,
- Product,
proto,
UserFacingSocketConfig,
WABrowserDescription,
WAMediaUpload,
WAMessage,
- WAMessageKey,
+ WAMessageUpdate,
WAPresence,
WASocket,
} from 'baileys';
@@ -135,12 +135,13 @@ import { Label } from 'baileys/lib/Types/Label';
import { LabelAssociation } from 'baileys/lib/Types/LabelAssociation';
import { spawn } from 'child_process';
import { isArray, isBase64, isURL } from 'class-validator';
-import { createHash } from 'crypto';
+import { randomBytes } from 'crypto';
import EventEmitter2 from 'eventemitter2';
import ffmpeg from 'fluent-ffmpeg';
import FormData from 'form-data';
+import { readFileSync } from 'fs';
import Long from 'long';
-import mimeTypes from 'mime-types';
+import mime from 'mime';
import NodeCache from 'node-cache';
import cron from 'node-cron';
import { release } from 'os';
@@ -152,16 +153,6 @@ import sharp from 'sharp';
import { PassThrough, Readable } from 'stream';
import { v4 } from 'uuid';
-import { BaileysMessageProcessor } from './baileysMessage.processor';
-import { useVoiceCallsBaileys } from './voiceCalls/useVoiceCallsBaileys';
-
-export interface ExtendedIMessageKey extends proto.IMessageKey {
- remoteJidAlt?: string;
- participantAlt?: string;
- server_id?: string;
- isViewOnce?: boolean;
-}
-
const groupMetadataCache = new CacheService(new CacheEngine(configService, 'groups').getEngine());
// Adicione a função getVideoDuration no início do arquivo
@@ -225,8 +216,6 @@ async function getVideoDuration(input: Buffer | string | Readable): Promise('LOG').BAILEYS;
- private eventProcessingQueue: Promise = Promise.resolve();
-
- // Cache TTL constants (in seconds)
- private readonly MESSAGE_CACHE_TTL_SECONDS = 5 * 60; // 5 minutes - avoid duplicate message processing
- private readonly UPDATE_CACHE_TTL_SECONDS = 30 * 60; // 30 minutes - avoid duplicate status updates
public stateConnection: wa.StateConnection = { state: 'close' };
@@ -265,43 +246,28 @@ export class BaileysStartupService extends ChannelStartupService {
}
public async logoutInstance() {
- this.messageProcessor.onDestroy();
await this.client?.logout('Log out instance: ' + this.instanceName);
this.client?.ws?.close();
- const db = this.configService.get('DATABASE');
- const cache = this.configService.get('CACHE');
- const provider = this.configService.get('PROVIDER');
-
- if (provider?.ENABLED) {
- const authState = await this.authStateProvider.authStateProvider(this.instance.id);
-
- await authState.removeCreds();
- }
-
- if (cache?.REDIS.ENABLED && cache?.REDIS.SAVE_INSTANCES) {
- const authState = await useMultiFileAuthStateRedisDb(this.instance.id, this.cache);
-
- await authState.removeCreds();
- }
-
- if (db.SAVE_DATA.INSTANCE) {
- const authState = await useMultiFileAuthStatePrisma(this.instance.id, this.cache);
-
- await authState.removeCreds();
- }
-
- const sessionExists = await this.prismaRepository.session.findFirst({ where: { sessionId: this.instanceId } });
+ const sessionExists = await this.prismaRepository.session.findFirst({
+ where: { sessionId: this.instanceId },
+ });
if (sessionExists) {
- await this.prismaRepository.session.delete({ where: { sessionId: this.instanceId } });
+ await this.prismaRepository.session.delete({
+ where: {
+ sessionId: this.instanceId,
+ },
+ });
}
}
public async getProfileName() {
let profileName = this.client.user?.name ?? this.client.user?.verifiedName;
if (!profileName) {
- const data = await this.prismaRepository.session.findUnique({ where: { sessionId: this.instanceId } });
+ const data = await this.prismaRepository.session.findUnique({
+ where: { sessionId: this.instanceId },
+ });
if (data) {
const creds = JSON.parse(JSON.stringify(data.creds), BufferJSON.reviver);
@@ -315,7 +281,7 @@ export class BaileysStartupService extends ChannelStartupService {
public async getProfileStatus() {
const status = await this.client.fetchStatus(this.instance.wuid);
- return status[0]?.status;
+ return (status as any)?.[0]?.status;
}
public get profilePictureUrl() {
@@ -343,7 +309,10 @@ export class BaileysStartupService extends ChannelStartupService {
this.chatwootService.eventWhatsapp(
Events.QRCODE_UPDATED,
{ instanceName: this.instance.name, instanceId: this.instanceId },
- { message: 'QR code limit reached, please login again', statusCode: DisconnectReason.badSession },
+ {
+ message: 'QR code limit reached, please login again',
+ statusCode: DisconnectReason.badSession,
+ },
);
}
@@ -351,9 +320,6 @@ export class BaileysStartupService extends ChannelStartupService {
instance: this.instance.name,
state: 'refused',
statusReason: DisconnectReason.connectionClosed,
- wuid: this.instance.wuid,
- profileName: await this.getProfileName(),
- profilePictureUrl: this.instance.profilePictureUrl,
});
this.endSession = true;
@@ -389,7 +355,12 @@ export class BaileysStartupService extends ChannelStartupService {
this.instance.qrcode.code = qr;
this.sendDataWebhook(Events.QRCODE_UPDATED, {
- qrcode: { instance: this.instance.name, pairingCode: this.instance.qrcode.pairingCode, code: qr, base64 },
+ qrcode: {
+ instance: this.instance.name,
+ pairingCode: this.instance.qrcode.pairingCode,
+ code: qr,
+ base64,
+ },
});
if (this.configService.get('CHATWOOT').ENABLED && this.localChatwoot?.enabled) {
@@ -397,7 +368,12 @@ export class BaileysStartupService extends ChannelStartupService {
Events.QRCODE_UPDATED,
{ instanceName: this.instance.name, instanceId: this.instanceId },
{
- qrcode: { instance: this.instance.name, pairingCode: this.instance.qrcode.pairingCode, code: qr, base64 },
+ qrcode: {
+ instance: this.instance.name,
+ pairingCode: this.instance.qrcode.pairingCode,
+ code: qr,
+ base64,
+ },
},
);
}
@@ -412,7 +388,9 @@ export class BaileysStartupService extends ChannelStartupService {
await this.prismaRepository.instance.update({
where: { id: this.instanceId },
- data: { connectionStatus: 'connecting' },
+ data: {
+ connectionStatus: 'connecting',
+ },
});
}
@@ -421,10 +399,23 @@ export class BaileysStartupService extends ChannelStartupService {
state: connection,
statusReason: (lastDisconnect?.error as Boom)?.output?.statusCode ?? 200,
};
+
+ this.sendDataWebhook(Events.CONNECTION_UPDATE, {
+ instance: this.instance.name,
+ ...this.stateConnection,
+ });
}
if (connection === 'close') {
const statusCode = (lastDisconnect?.error as Boom)?.output?.statusCode;
+
+ // Guard: if connection closed before QR was scanned (no wuid, no error code), do not reconnect
+ // Without this guard, a premature close triggers infinite QR regeneration loop
+ if (!this.instance.wuid && !statusCode) {
+ this.logger.info('Connection closed before QR scan — skipping reconnect to prevent loop');
+ return;
+ }
+
const codesToNotReconnect = [DisconnectReason.loggedOut, DisconnectReason.forbidden, 402, 406];
const shouldReconnect = !codesToNotReconnect.includes(statusCode);
if (shouldReconnect) {
@@ -452,15 +443,16 @@ export class BaileysStartupService extends ChannelStartupService {
this.chatwootService.eventWhatsapp(
Events.STATUS_INSTANCE,
{ instanceName: this.instance.name, instanceId: this.instanceId },
- { instance: this.instance.name, status: 'closed' },
+ {
+ instance: this.instance.name,
+ status: 'closed',
+ },
);
}
this.eventEmitter.emit('logout.instance', this.instance.name, 'inner');
this.client?.ws?.close();
this.client.end(new Error('Close connection'));
-
- this.sendDataWebhook(Events.CONNECTION_UPDATE, { instance: this.instance.name, ...this.stateConnection });
}
}
@@ -501,34 +493,27 @@ export class BaileysStartupService extends ChannelStartupService {
this.chatwootService.eventWhatsapp(
Events.CONNECTION_UPDATE,
{ instanceName: this.instance.name, instanceId: this.instanceId },
- { instance: this.instance.name, status: 'open' },
+ {
+ instance: this.instance.name,
+ status: 'open',
+ },
);
this.syncChatwootLostMessages();
}
-
- this.sendDataWebhook(Events.CONNECTION_UPDATE, {
- instance: this.instance.name,
- wuid: this.instance.wuid,
- profileName: await this.getProfileName(),
- profilePictureUrl: this.instance.profilePictureUrl,
- ...this.stateConnection,
- });
- }
-
- if (connection === 'connecting') {
- this.sendDataWebhook(Events.CONNECTION_UPDATE, { instance: this.instance.name, ...this.stateConnection });
}
}
private async getMessage(key: proto.IMessageKey, full = false) {
try {
- // Use raw SQL to avoid JSON path issues
- const webMessageInfo = (await this.prismaRepository.$queryRaw`
- SELECT * FROM "Message"
- WHERE "instanceId" = ${this.instanceId}
- AND "key"->>'id' = ${key.id}
- `) as proto.IWebMessageInfo[];
-
+ const webMessageInfo = (await this.prismaRepository.message.findMany({
+ where: {
+ instanceId: this.instanceId,
+ key: {
+ path: ['id'],
+ equals: key.id,
+ },
+ },
+ })) as unknown as proto.IWebMessageInfo[];
if (full) {
return webMessageInfo[0];
}
@@ -539,7 +524,9 @@ export class BaileysStartupService extends ChannelStartupService {
const messageSecret = Buffer.from(messageSecretBase64, 'base64');
const msg = {
- messageContextInfo: { messageSecret },
+ messageContextInfo: {
+ messageSecret,
+ },
pollCreationMessage: webMessageInfo[0].message?.pollCreationMessage,
};
@@ -591,9 +578,17 @@ export class BaileysStartupService extends ChannelStartupService {
this.logger.info(`Browser: ${browser}`);
}
- const baileysVersion = await fetchLatestWaWebVersion({});
- const version = baileysVersion.version;
- const log = `Baileys version: ${version.join('.')}`;
+ let version;
+ let log;
+
+ if (session.VERSION) {
+ version = session.VERSION.split('.');
+ log = `Baileys version env: ${version}`;
+ } else {
+ const baileysVersion = await fetchLatestBaileysVersion();
+ version = baileysVersion.version;
+ log = `Baileys version: ${version}`;
+ }
this.logger.info(log);
@@ -611,7 +606,10 @@ export class BaileysStartupService extends ChannelStartupService {
const proxyUrls = text.split('\r\n');
const rand = Math.floor(Math.random() * Math.floor(proxyUrls.length));
const proxyUrl = 'http://' + proxyUrls[rand];
- options = { agent: makeProxyAgent(proxyUrl), fetchAgent: makeProxyAgentUndici(proxyUrl) };
+ options = {
+ agent: makeProxyAgent(proxyUrl),
+ fetchAgent: makeProxyAgent(proxyUrl),
+ };
} catch {
this.localProxy.enabled = false;
}
@@ -624,7 +622,7 @@ export class BaileysStartupService extends ChannelStartupService {
username: this.localProxy.username,
password: this.localProxy.password,
}),
- fetchAgent: makeProxyAgentUndici({
+ fetchAgent: makeProxyAgent({
host: this.localProxy.host,
port: this.localProxy.port,
protocol: this.localProxy.protocol,
@@ -657,10 +655,6 @@ export class BaileysStartupService extends ChannelStartupService {
qrTimeout: 45_000,
emitOwnEvents: false,
shouldIgnoreJid: (jid) => {
- if (this.localSettings.syncFullHistory && isJidGroup(jid)) {
- return false;
- }
-
const isGroupJid = this.localSettings.groupsIgnore && isJidGroup(jid);
const isBroadcast = !this.localSettings.readStatus && isJidBroadcast(jid);
const isNewsletter = isJidNewsletter(jid);
@@ -697,24 +691,8 @@ export class BaileysStartupService extends ChannelStartupService {
this.client = makeWASocket(socketConfig);
- if (this.localSettings.wavoipToken && this.localSettings.wavoipToken.length > 0) {
- useVoiceCallsBaileys(this.localSettings.wavoipToken, this.client, this.connectionStatus.state as any, true);
- }
-
this.eventHandler();
- this.client.ws.on('CB:call', (packet) => {
- console.log('CB:call', packet);
- const payload = { event: 'CB:call', packet: packet };
- this.sendDataWebhook(Events.CALL, payload, true, ['websocket']);
- });
-
- this.client.ws.on('CB:ack,class:call', (packet) => {
- console.log('CB:ack,class:call', packet);
- const payload = { event: 'CB:ack,class:call', packet: packet };
- this.sendDataWebhook(Events.CALL, payload, true, ['websocket']);
- });
-
this.phoneNumber = number;
return this.client;
@@ -727,11 +705,6 @@ export class BaileysStartupService extends ChannelStartupService {
this.loadWebhook();
this.loadProxy();
- // Remontar o messageProcessor para garantir que está funcionando após reconexão
- this.messageProcessor.mount({
- onMessageReceive: this.messageHandle['messages.upsert'].bind(this),
- });
-
return await this.createClient(number);
} catch (error) {
this.logger.error(error);
@@ -770,13 +743,18 @@ export class BaileysStartupService extends ChannelStartupService {
if (chatsToInsert.length > 0) {
if (this.configService.get('DATABASE').SAVE_DATA.CHATS)
- await this.prismaRepository.chat.createMany({ data: chatsToInsert, skipDuplicates: true });
+ await this.prismaRepository.chat.createMany({
+ data: chatsToInsert,
+ skipDuplicates: true,
+ });
}
},
'chats.update': async (
chats: Partial<
- proto.IConversation & { lastMessageRecvTimestamp?: number } & {
+ proto.IConversation & {
+ lastMessageRecvTimestamp?: number;
+ } & {
conditional: (bufferedData: BufferedEventData) => boolean;
}
>[],
@@ -789,7 +767,11 @@ export class BaileysStartupService extends ChannelStartupService {
for (const chat of chats) {
await this.prismaRepository.chat.updateMany({
- where: { instanceId: this.instanceId, remoteJid: chat.id, name: chat.name },
+ where: {
+ instanceId: this.instanceId,
+ remoteJid: chat.id,
+ name: chat.name,
+ },
data: { remoteJid: chat.id },
});
}
@@ -798,7 +780,9 @@ export class BaileysStartupService extends ChannelStartupService {
'chats.delete': async (chats: string[]) => {
chats.forEach(
async (chat) =>
- await this.prismaRepository.chat.deleteMany({ where: { instanceId: this.instanceId, remoteJid: chat } }),
+ await this.prismaRepository.chat.deleteMany({
+ where: { instanceId: this.instanceId, remoteJid: chat },
+ }),
);
this.sendDataWebhook(Events.CHATS_DELETE, [...chats]);
@@ -806,10 +790,10 @@ export class BaileysStartupService extends ChannelStartupService {
};
private readonly contactHandle = {
- 'contacts.upsert': async (contacts: Contact[]) => {
+ 'contacts.upsert': async (contacts: LidContact[]) => {
try {
const contactsRaw: any = contacts.map((contact) => ({
- remoteJid: contact.id,
+ remoteJid: resolveLidContact(contact),
pushName: contact?.name || contact?.verifiedName || contact.id.split('@')[0],
profilePicUrl: null,
instanceId: this.instanceId,
@@ -819,7 +803,10 @@ export class BaileysStartupService extends ChannelStartupService {
this.sendDataWebhook(Events.CONTACTS_UPSERT, contactsRaw);
if (this.configService.get('DATABASE').SAVE_DATA.CONTACTS)
- await this.prismaRepository.contact.createMany({ data: contactsRaw, skipDuplicates: true });
+ await this.prismaRepository.contact.createMany({
+ data: contactsRaw,
+ skipDuplicates: true,
+ });
const usersContacts = contactsRaw.filter((c) => c.remoteJid.includes('@s.whatsapp'));
if (usersContacts) {
@@ -844,8 +831,8 @@ export class BaileysStartupService extends ChannelStartupService {
}
const updatedContacts = await Promise.all(
- contacts.map(async (contact) => ({
- remoteJid: contact.id,
+ contacts.map(async (contact: LidContact) => ({
+ remoteJid: resolveLidContact(contact),
pushName: contact?.name || contact?.verifiedName || contact.id.split('@')[0],
profilePicUrl: (await this.profilePicture(contact.id)).profilePictureUrl,
instanceId: this.instanceId,
@@ -861,12 +848,12 @@ export class BaileysStartupService extends ChannelStartupService {
this.sendDataWebhook(Events.CONTACTS_UPDATE, updatedContacts);
await Promise.all(
updatedContacts.map(async (contact) => {
- if (this.configService.get('DATABASE').SAVE_DATA.CONTACTS) {
- await this.prismaRepository.contact.updateMany({
- where: { remoteJid: contact.remoteJid, instanceId: this.instanceId },
- data: { profilePicUrl: contact.profilePicUrl },
- });
- }
+ const update = this.prismaRepository.contact.updateMany({
+ where: { remoteJid: contact.remoteJid, instanceId: this.instanceId },
+ data: {
+ profilePicUrl: contact.profilePicUrl,
+ },
+ });
if (this.configService.get('CHATWOOT').ENABLED && this.localChatwoot?.enabled) {
const instance = { instanceName: this.instance.name, instanceId: this.instance.id };
@@ -885,6 +872,8 @@ export class BaileysStartupService extends ChannelStartupService {
avatar_url: contact.profilePicUrl,
});
}
+
+ return update;
}),
);
}
@@ -895,9 +884,13 @@ export class BaileysStartupService extends ChannelStartupService {
},
'contacts.update': async (contacts: Partial[]) => {
- const contactsRaw: { remoteJid: string; pushName?: string; profilePicUrl?: string; instanceId: string }[] = [];
+ const contactsRaw: {
+ remoteJid: string;
+ pushName?: string;
+ profilePicUrl?: string;
+ instanceId: string;
+ }[] = [];
for await (const contact of contacts) {
- this.logger.debug(`Updating contact: ${JSON.stringify(contact, null, 2)}`);
contactsRaw.push({
remoteJid: contact.id,
pushName: contact?.name ?? contact?.verifiedName,
@@ -908,18 +901,19 @@ export class BaileysStartupService extends ChannelStartupService {
this.sendDataWebhook(Events.CONTACTS_UPDATE, contactsRaw);
- if (this.configService.get('DATABASE').SAVE_DATA.CONTACTS) {
- const updateTransactions = contactsRaw.map((contact) =>
- this.prismaRepository.contact.upsert({
- where: { remoteJid_instanceId: { remoteJid: contact.remoteJid, instanceId: contact.instanceId } },
- create: contact,
- update: contact,
- }),
- );
- await this.prismaRepository.$transaction(updateTransactions);
- }
+ const updateTransactions = contactsRaw.map((contact) =>
+ this.prismaRepository.contact.upsert({
+ where: { remoteJid_instanceId: { remoteJid: contact.remoteJid, instanceId: contact.instanceId } },
+ create: contact,
+ update: contact,
+ }),
+ );
+ await this.prismaRepository.$transaction(updateTransactions);
- //const usersContacts = contactsRaw.filter((c) => c.remoteJid.includes('@s.whatsapp'));
+ const usersContacts = contactsRaw.filter((c) => c.remoteJid.includes('@s.whatsapp'));
+ if (usersContacts) {
+ await saveOnWhatsappCache(usersContacts.map((c) => ({ remoteJid: c.remoteJid })));
+ }
},
};
@@ -934,7 +928,7 @@ export class BaileysStartupService extends ChannelStartupService {
}: {
chats: Chat[];
contacts: Contact[];
- messages: WAMessage[];
+ messages: proto.IWebMessageInfo[];
isLatest?: boolean;
progress?: number;
syncType?: proto.HistorySync.HistorySyncType;
@@ -966,19 +960,13 @@ export class BaileysStartupService extends ChannelStartupService {
}
}
- const contactsMap = new Map();
-
- for (const contact of contacts) {
- if (contact.id && (contact.notify || contact.name)) {
- contactsMap.set(contact.id, { name: contact.name ?? contact.notify, jid: contact.id });
- }
- }
-
const chatsRaw: { remoteJid: string; instanceId: string; name?: string }[] = [];
const chatsRepository = new Set(
- (await this.prismaRepository.chat.findMany({ where: { instanceId: this.instanceId } })).map(
- (chat) => chat.remoteJid,
- ),
+ (
+ await this.prismaRepository.chat.findMany({
+ where: { instanceId: this.instanceId },
+ })
+ ).map((chat) => chat.remoteJid),
);
for (const chat of chats) {
@@ -986,18 +974,25 @@ export class BaileysStartupService extends ChannelStartupService {
continue;
}
- chatsRaw.push({ remoteJid: chat.id, instanceId: this.instanceId, name: chat.name });
+ chatsRaw.push({
+ remoteJid: chat.id,
+ instanceId: this.instanceId,
+ name: chat.name,
+ });
}
this.sendDataWebhook(Events.CHATS_SET, chatsRaw);
if (this.configService.get('DATABASE').SAVE_DATA.HISTORIC) {
- await this.prismaRepository.chat.createMany({ data: chatsRaw, skipDuplicates: true });
+ await this.prismaRepository.chat.createMany({
+ data: chatsRaw,
+ skipDuplicates: true,
+ });
}
const messagesRaw: any[] = [];
- const messagesRepository: Set = new Set(
+ const messagesRepository = new Set(
chatwootImport.getRepositoryMessagesCache(instance) ??
(
await this.prismaRepository.message.findMany({
@@ -1005,7 +1000,9 @@ export class BaileysStartupService extends ChannelStartupService {
where: { instanceId: this.instanceId },
})
).map((message) => {
- const key = message.key as { id: string };
+ const key = message.key as {
+ id: string;
+ };
return key.id;
}),
@@ -1034,25 +1031,16 @@ export class BaileysStartupService extends ChannelStartupService {
continue;
}
- if (!m.pushName && !m.key.fromMe) {
- const participantJid = m.participant || m.key.participant || m.key.remoteJid;
- if (participantJid && contactsMap.has(participantJid)) {
- m.pushName = contactsMap.get(participantJid).name;
- } else if (participantJid) {
- m.pushName = participantJid.split('@')[0];
- }
- }
-
messagesRaw.push(this.prepareMessage(m));
}
- this.sendDataWebhook(Events.MESSAGES_SET, [...messagesRaw], true, undefined, {
- isLatest,
- progress,
- });
+ this.sendDataWebhook(Events.MESSAGES_SET, [...messagesRaw]);
if (this.configService.get('DATABASE').SAVE_DATA.HISTORIC) {
- await this.prismaRepository.message.createMany({ data: messagesRaw, skipDuplicates: true });
+ await this.prismaRepository.message.createMany({
+ data: messagesRaw,
+ skipDuplicates: true,
+ });
}
if (
@@ -1068,7 +1056,12 @@ export class BaileysStartupService extends ChannelStartupService {
}
await this.contactHandle['contacts.upsert'](
- contacts.filter((c) => !!c.notify || !!c.name).map((c) => ({ id: c.id, name: c.name ?? c.notify })),
+ contacts
+ .filter((c) => !!c.notify || !!c.name)
+ .map((c) => ({
+ id: c.id,
+ name: c.name ?? c.notify,
+ })),
);
contacts = undefined;
@@ -1080,28 +1073,19 @@ export class BaileysStartupService extends ChannelStartupService {
},
'messages.upsert': async (
- { messages, type, requestId }: { messages: WAMessage[]; type: MessageUpsertType; requestId?: string },
+ {
+ messages,
+ type,
+ requestId,
+ }: {
+ messages: proto.IWebMessageInfo[];
+ type: MessageUpsertType;
+ requestId?: string;
+ },
settings: any,
) => {
try {
for (const received of messages) {
- if (
- received?.messageStubParameters?.some?.((param) =>
- [
- 'No matching sessions found for message',
- 'Bad MAC',
- 'failed to decrypt message',
- 'SessionError',
- 'Invalid PreKey ID',
- 'No session record',
- 'No session found to decrypt message',
- 'Message absent from node',
- ].some((err) => param?.includes?.(err)),
- )
- ) {
- this.logger.warn(`Message ignored with messageStubParameters: ${JSON.stringify(received, null, 2)}`);
- continue;
- }
if (received.message?.conversation || received.message?.extendedTextMessage?.text) {
const text = received.message?.conversation || received.message?.extendedTextMessage?.text;
@@ -1119,51 +1103,45 @@ export class BaileysStartupService extends ChannelStartupService {
}
}
- const editedMessage =
- received?.message?.protocolMessage || received?.message?.editedMessage?.message?.protocolMessage;
+ if (received.message?.protocolMessage?.editedMessage || received.message?.editedMessage?.message) {
+ const editedMessage =
+ received.message?.protocolMessage || received.message?.editedMessage?.message?.protocolMessage;
+ if (editedMessage) {
+ if (this.configService.get('CHATWOOT').ENABLED && this.localChatwoot?.enabled)
+ this.chatwootService.eventWhatsapp(
+ 'messages.edit',
+ { instanceName: this.instance.name, instanceId: this.instance.id },
+ editedMessage,
+ );
- if (editedMessage) {
- if (this.configService.get('CHATWOOT').ENABLED && this.localChatwoot?.enabled)
- this.chatwootService.eventWhatsapp(
- 'messages.edit',
- { instanceName: this.instance.name, instanceId: this.instance.id },
- editedMessage,
- );
+ await this.sendDataWebhook(Events.MESSAGES_EDITED, editedMessage);
+ }
+ }
- await this.sendDataWebhook(Events.MESSAGES_EDITED, editedMessage);
+ if (received.messageStubParameters && received.messageStubParameters[0] === 'Message absent from node') {
+ this.logger.info(`Recovering message lost messageId: ${received.key.id}`);
- if (received.key?.id && editedMessage.key?.id) {
- await this.baileysCache.set(`protocol_${received.key.id}`, editedMessage.key.id, 60 * 60 * 24);
- }
+ await this.baileysCache.set(received.key.id, {
+ message: received,
+ retry: 0,
+ });
- const oldMessage = await this.getMessage(editedMessage.key, true);
- if ((oldMessage as any)?.id) {
- const editedMessageTimestamp = Long.isLong(received?.messageTimestamp)
- ? Math.floor(received?.messageTimestamp.toNumber())
- : Math.floor(received?.messageTimestamp as number);
+ continue;
+ }
- await this.prismaRepository.message.update({
- where: { id: (oldMessage as any).id },
- data: {
- message: editedMessage.editedMessage as any,
- messageTimestamp: editedMessageTimestamp,
- status: 'EDITED',
- },
- });
- await this.prismaRepository.messageUpdate.create({
- data: {
- fromMe: editedMessage.key.fromMe,
- keyId: editedMessage.key.id,
- remoteJid: editedMessage.key.remoteJid,
- status: 'EDITED',
- instanceId: this.instanceId,
- messageId: (oldMessage as any).id,
- },
- });
- }
+ const retryCache = (await this.baileysCache.get(received.key.id)) || null;
+
+ if (retryCache) {
+ this.logger.info('Recovered message lost');
+ await this.baileysCache.delete(received.key.id);
}
- if ((type !== 'notify' && type !== 'append') || editedMessage || !received?.message) {
+ if (
+ (type !== 'notify' && type !== 'append') ||
+ received.message?.protocolMessage ||
+ received.message?.pollUpdateMessage ||
+ !received?.message
+ ) {
continue;
}
@@ -1171,10 +1149,14 @@ export class BaileysStartupService extends ChannelStartupService {
received.messageTimestamp = received.messageTimestamp?.toNumber();
}
+ // Resolve @lid to @s.whatsapp.net so all downstream uses (prepareMessage, chatbot, contact) get the correct JID
+ if (received.key.remoteJid?.includes('@lid') && (received.key as LidMessageKey)?.remoteJidAlt) {
+ received.key.remoteJid = (received.key as LidMessageKey).remoteJidAlt;
+ }
+
if (settings?.groupsIgnore && received.key.remoteJid.includes('@g.us')) {
continue;
}
-
const existingChat = await this.prismaRepository.chat.findFirst({
where: { instanceId: this.instanceId, remoteJid: received.key.remoteJid },
select: { id: true, name: true },
@@ -1203,107 +1185,6 @@ export class BaileysStartupService extends ChannelStartupService {
const messageRaw = this.prepareMessage(received);
- if (messageRaw.messageType === 'pollUpdateMessage') {
- const pollCreationKey = messageRaw.message.pollUpdateMessage.pollCreationMessageKey;
- const pollMessage = (await this.getMessage(pollCreationKey, true)) as proto.IWebMessageInfo;
- const pollMessageSecret = (await this.getMessage(pollCreationKey)) as any;
-
- if (pollMessage) {
- const pollOptions =
- (pollMessage.message as any).pollCreationMessage?.options ||
- (pollMessage.message as any).pollCreationMessageV3?.options ||
- [];
- const pollVote = messageRaw.message.pollUpdateMessage.vote;
-
- const voterJid = received.key.fromMe
- ? this.instance.wuid
- : received.key.participant || received.key.remoteJid;
-
- let pollEncKey = pollMessageSecret?.messageContextInfo?.messageSecret;
-
- let successfulVoterJid = voterJid;
-
- if (typeof pollEncKey === 'string') {
- pollEncKey = Buffer.from(pollEncKey, 'base64');
- } else if (pollEncKey?.type === 'Buffer' && Array.isArray(pollEncKey.data)) {
- pollEncKey = Buffer.from(pollEncKey.data);
- }
-
- if (Buffer.isBuffer(pollEncKey) && pollEncKey.length === 44) {
- pollEncKey = Buffer.from(pollEncKey.toString('utf8'), 'base64');
- }
-
- if (pollVote.encPayload && pollEncKey) {
- const creatorCandidates = [
- this.instance.wuid,
- this.client.user?.lid,
- pollMessage.key.participant,
- (pollMessage.key as any).participantAlt,
- pollMessage.key.remoteJid,
- ];
-
- const key = received.key as any;
- const voterCandidates = [
- this.instance.wuid,
- this.client.user?.lid,
- key.participant,
- key.participantAlt,
- key.remoteJidAlt,
- key.remoteJid,
- ];
-
- const uniqueCreators = [
- ...new Set(creatorCandidates.filter(Boolean).map((id) => jidNormalizedUser(id))),
- ];
- const uniqueVoters = [...new Set(voterCandidates.filter(Boolean).map((id) => jidNormalizedUser(id)))];
-
- let decryptedVote;
-
- for (const creator of uniqueCreators) {
- for (const voter of uniqueVoters) {
- try {
- decryptedVote = decryptPollVote(pollVote, {
- pollCreatorJid: creator,
- pollMsgId: pollMessage.key.id,
- pollEncKey,
- voterJid: voter,
- } as any);
- if (decryptedVote) {
- successfulVoterJid = voter;
- break;
- }
- } catch {
- // Continue trying
- }
- }
- if (decryptedVote) break;
- }
-
- if (decryptedVote) {
- Object.assign(pollVote, decryptedVote);
- }
- }
-
- const selectedOptions = pollVote?.selectedOptions || [];
-
- const selectedOptionNames = pollOptions
- .filter((option) => {
- const hash = createHash('sha256').update(option.optionName).digest();
- return selectedOptions.some((selected) => Buffer.compare(selected, hash) === 0);
- })
- .map((option) => option.optionName);
-
- messageRaw.message.pollUpdateMessage.vote.selectedOptions = selectedOptionNames;
-
- const pollUpdates = pollOptions.map((option) => ({
- name: option.optionName,
- voters: selectedOptionNames.includes(option.optionName) ? [successfulVoterJid] : [],
- }));
-
- messageRaw.pollUpdates = pollUpdates;
- }
- }
-
const isMedia =
received?.message?.imageMessage ||
received?.message?.videoMessage ||
@@ -1313,8 +1194,6 @@ export class BaileysStartupService extends ChannelStartupService {
received?.message?.ptvMessage ||
received?.message?.audioMessage;
- const isVideo = received?.message?.videoMessage;
-
if (this.localSettings.readMessages && received.key.id !== 'status@broadcast') {
await this.client.readMessages([received.key]);
}
@@ -1330,7 +1209,7 @@ export class BaileysStartupService extends ChannelStartupService {
) {
const chatwootSentMessage = await this.chatwootService.eventWhatsapp(
Events.MESSAGES_UPSERT,
- { instanceName: this.instance.name, instanceId: this.instanceId },
+ { instanceName: this.instance.name, instanceId: this.instance.id },
messageRaw,
);
@@ -1343,97 +1222,80 @@ export class BaileysStartupService extends ChannelStartupService {
if (this.configService.get('OPENAI').ENABLED && received?.message?.audioMessage) {
const openAiDefaultSettings = await this.prismaRepository.openaiSetting.findFirst({
- where: { instanceId: this.instanceId },
- include: { OpenaiCreds: true },
+ where: {
+ instanceId: this.instanceId,
+ },
+ include: {
+ OpenaiCreds: true,
+ },
});
if (openAiDefaultSettings && openAiDefaultSettings.openaiCredsId && openAiDefaultSettings.speechToText) {
- messageRaw.message.speechToText = `[audio] ${await this.openaiService.speechToText(received, this)}`;
+ messageRaw.message.speechToText = await this.openaiService.speechToText(
+ openAiDefaultSettings.OpenaiCreds,
+ received,
+ );
}
}
if (this.configService.get('DATABASE').SAVE_DATA.NEW_MESSAGE) {
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- const { pollUpdates, ...messageData } = messageRaw;
- const msg = await this.prismaRepository.message.create({ data: messageData });
-
- const { remoteJid } = received.key;
- const timestamp = msg.messageTimestamp;
- const fromMe = received.key.fromMe.toString();
- const messageKey = `${remoteJid}_${timestamp}_${fromMe}`;
-
- const cachedTimestamp = await this.baileysCache.get(messageKey);
-
- if (!cachedTimestamp) {
- if (!received.key.fromMe) {
- if (msg.status === status[3]) {
- this.logger.log(`Update not read messages ${remoteJid}`);
- await this.updateChatUnreadMessages(remoteJid);
- } else if (msg.status === status[4]) {
- this.logger.log(`Update readed messages ${remoteJid} - ${timestamp}`);
- await this.updateMessagesReadedByTimestamp(remoteJid, timestamp);
- }
- } else {
- // is send message by me
- this.logger.log(`Update readed messages ${remoteJid} - ${timestamp}`);
- await this.updateMessagesReadedByTimestamp(remoteJid, timestamp);
- }
+ const msg = await this.prismaRepository.message.create({
+ data: messageRaw,
+ });
- await this.baileysCache.set(messageKey, true, this.MESSAGE_CACHE_TTL_SECONDS);
+ if (received.key.fromMe === false) {
+ if (msg.status === status[3]) {
+ this.logger.log(`Update not read messages ${received.key.remoteJid}`);
+
+ await this.updateChatUnreadMessages(received.key.remoteJid);
+ } else if (msg.status === status[4]) {
+ this.logger.log(`Update readed messages ${received.key.remoteJid} - ${msg.messageTimestamp}`);
+
+ await this.updateMessagesReadedByTimestamp(received.key.remoteJid, msg.messageTimestamp);
+ }
} else {
- this.logger.info(`Update readed messages duplicated ignored [avoid deadlock]: ${messageKey}`);
+ // is send message by me
+ this.logger.log(`Update readed messages ${received.key.remoteJid} - ${msg.messageTimestamp}`);
+
+ await this.updateMessagesReadedByTimestamp(received.key.remoteJid, msg.messageTimestamp);
}
if (isMedia) {
if (this.configService.get('S3').ENABLE) {
try {
- if (isVideo && !this.configService.get('S3').SAVE_VIDEO) {
- this.logger.warn('Video upload is disabled. Skipping video upload.');
- // Skip video upload by returning early from this block
- return;
- }
-
const message: any = received;
+ const media = await this.getBase64FromMediaMessage(
+ {
+ message,
+ },
+ true,
+ );
- // Verificação adicional para garantir que há conteúdo de mídia real
- const hasRealMedia = this.hasValidMediaContent(message);
-
- if (!hasRealMedia) {
- this.logger.warn('Message detected as media but contains no valid media content');
- } else {
- const media = await this.getBase64FromMediaMessage({ message }, true);
-
- if (!media) {
- this.logger.verbose('No valid media to upload (messageContextInfo only), skipping MinIO');
- return;
- }
-
- const { buffer, mediaType, fileName, size } = media;
- const mimetype = mimeTypes.lookup(fileName).toString();
- const fullName = join(
- `${this.instance.id}`,
- received.key.remoteJid,
- mediaType,
- `${Date.now()}_${fileName}`,
- );
- await s3Service.uploadFile(fullName, buffer, size.fileLength?.low, { 'Content-Type': mimetype });
-
- await this.prismaRepository.media.create({
- data: {
- messageId: msg.id,
- instanceId: this.instanceId,
- type: mediaType,
- fileName: fullName,
- mimetype,
- },
- });
-
- const mediaUrl = await s3Service.getObjectUrl(fullName);
-
- messageRaw.message.mediaUrl = mediaUrl;
-
- await this.prismaRepository.message.update({ where: { id: msg.id }, data: messageRaw });
- }
+ const { buffer, mediaType, fileName, size } = media;
+ const mimetype = mime.getType(fileName).toString();
+ const fullName = join(`${this.instance.id}`, received.key.remoteJid, mediaType, fileName);
+ await s3Service.uploadFile(fullName, buffer, size.fileLength?.low, {
+ 'Content-Type': mimetype,
+ });
+
+ await this.prismaRepository.media.create({
+ data: {
+ messageId: msg.id,
+ instanceId: this.instanceId,
+ type: mediaType,
+ fileName: fullName,
+ mimetype,
+ },
+ });
+
+ const mediaUrl = await s3Service.getObjectUrl(fullName);
+
+ messageRaw.message.mediaUrl = mediaUrl;
+
+ await this.prismaRepository.message.update({
+ where: { id: msg.id },
+ data: messageRaw,
+ });
} catch (error) {
this.logger.error(['Error on upload file to minio', error?.message, error?.stack]);
}
@@ -1443,42 +1305,21 @@ export class BaileysStartupService extends ChannelStartupService {
if (this.localWebhook.enabled) {
if (isMedia && this.localWebhook.webhookBase64) {
- try {
- const buffer = await downloadMediaMessage(
- { key: received.key, message: received?.message },
- 'buffer',
- {},
- { logger: P({ level: 'error' }) as any, reuploadRequest: this.client.updateMediaMessage },
- );
-
- if (buffer) {
- messageRaw.message.base64 = buffer.toString('base64');
- } else {
- // retry to download media
- const buffer = await downloadMediaMessage(
- { key: received.key, message: received?.message },
- 'buffer',
- {},
- { logger: P({ level: 'error' }) as any, reuploadRequest: this.client.updateMediaMessage },
- );
+ const buffer = await downloadMediaMessage(
+ { key: received.key, message: received?.message },
+ 'buffer',
+ {},
+ {
+ logger: P({ level: 'error' }) as any,
+ reuploadRequest: this.client.updateMediaMessage,
+ },
+ );
- if (buffer) {
- messageRaw.message.base64 = buffer.toString('base64');
- }
- }
- } catch (error) {
- this.logger.error(['Error converting media to base64', error?.message]);
- }
+ messageRaw.message.base64 = buffer ? buffer.toString('base64') : undefined;
}
}
- this.logger.verbose(messageRaw);
-
- sendTelemetry(`received.message.${messageRaw.messageType ?? 'unknown'}`);
- if (messageRaw.key.remoteJid?.includes('@lid') && messageRaw.key.remoteJidAlt) {
- messageRaw.key.remoteJid = messageRaw.key.remoteJidAlt;
- }
- console.log(messageRaw);
+ this.logger.log(messageRaw);
this.sendDataWebhook(Events.MESSAGES_UPSERT, messageRaw);
@@ -1493,12 +1334,7 @@ export class BaileysStartupService extends ChannelStartupService {
where: { remoteJid: received.key.remoteJid, instanceId: this.instanceId },
});
- const contactRaw: {
- remoteJid: string;
- pushName: string;
- profilePicUrl?: string;
- instanceId: string;
- } = {
+ const contactRaw: { remoteJid: string; pushName: string; profilePicUrl?: string; instanceId: string } = {
remoteJid: received.key.remoteJid,
pushName: received.key.fromMe ? '' : received.key.fromMe == null ? '' : received.pushName,
profilePicUrl: (await this.profilePicture(received.key.remoteJid)).profilePictureUrl,
@@ -1509,17 +1345,6 @@ export class BaileysStartupService extends ChannelStartupService {
continue;
}
- if (contactRaw.remoteJid.includes('@s.whatsapp') || contactRaw.remoteJid.includes('@lid')) {
- await saveOnWhatsappCache([
- {
- remoteJid:
- messageRaw.key.addressingMode === 'lid' ? messageRaw.key.remoteJidAlt : messageRaw.key.remoteJid,
- remoteJidAlt: messageRaw.key.remoteJidAlt,
- lid: messageRaw.key.addressingMode === 'lid' ? 'lid' : null,
- },
- ]);
- }
-
if (contact) {
this.sendDataWebhook(Events.CONTACTS_UPDATE, contactRaw);
@@ -1545,18 +1370,27 @@ export class BaileysStartupService extends ChannelStartupService {
if (this.configService.get('DATABASE').SAVE_DATA.CONTACTS)
await this.prismaRepository.contact.upsert({
- where: { remoteJid_instanceId: { remoteJid: contactRaw.remoteJid, instanceId: contactRaw.instanceId } },
+ where: {
+ remoteJid_instanceId: {
+ remoteJid: contactRaw.remoteJid,
+ instanceId: contactRaw.instanceId,
+ },
+ },
update: contactRaw,
create: contactRaw,
});
+
+ if (contactRaw.remoteJid.includes('@s.whatsapp')) {
+ await saveOnWhatsappCache([{ remoteJid: contactRaw.remoteJid }]);
+ }
}
} catch (error) {
this.logger.error(error);
}
},
- 'messages.update': async (args: { update: Partial; key: WAMessageKey }[], settings: any) => {
- this.logger.verbose(`Update messages ${JSON.stringify(args, undefined, 2)}`);
+ 'messages.update': async (args: WAMessageUpdate[], settings: any) => {
+ this.logger.log(`Update messages ${JSON.stringify(args, undefined, 2)}`);
const readChatToUpdate: Record = {}; // {remoteJid: true}
@@ -1565,27 +1399,6 @@ export class BaileysStartupService extends ChannelStartupService {
continue;
}
- const updateKey = `${this.instance.id}_${key.id}_${update.status}`;
-
- const cached = await this.baileysCache.get(updateKey);
-
- const secondsSinceEpoch = Math.floor(Date.now() / 1000);
- console.log('CACHE:', { cached, updateKey, messageTimestamp: update.messageTimestamp, secondsSinceEpoch });
-
- if (
- (update.messageTimestamp && update.messageTimestamp === cached) ||
- (!update.messageTimestamp && secondsSinceEpoch === cached)
- ) {
- this.logger.info(`Update Message duplicated ignored [avoid deadlock]: ${updateKey}`);
- continue;
- }
-
- if (update.messageTimestamp) {
- await this.baileysCache.set(updateKey, update.messageTimestamp, 30 * 60);
- } else {
- await this.baileysCache.set(updateKey, secondsSinceEpoch, 30 * 60);
- }
-
if (status[update.status] === 'READ' && key.fromMe) {
if (this.configService.get('CHATWOOT').ENABLED && this.localChatwoot?.enabled) {
this.chatwootService.eventWhatsapp(
@@ -1596,7 +1409,7 @@ export class BaileysStartupService extends ChannelStartupService {
}
}
- if (key.remoteJid !== 'status@broadcast' && key.id !== undefined) {
+ if (key.remoteJid !== 'status@broadcast') {
let pollUpdates: any;
if (update.pollUpdates) {
@@ -1610,53 +1423,43 @@ export class BaileysStartupService extends ChannelStartupService {
}
}
- const message: any = {
- keyId: key.id,
- remoteJid: key?.remoteJid,
- fromMe: key.fromMe,
- participant: key?.participant,
- status: status[update.status] ?? 'SERVER_ACK',
- pollUpdates,
- instanceId: this.instanceId,
- };
+ const findMessage = await this.prismaRepository.message.findFirst({
+ where: {
+ instanceId: this.instanceId,
+ key: {
+ path: ['id'],
+ equals: key.id,
+ },
+ },
+ });
- if (update.message) {
- message.message = update.message;
+ if (!findMessage) {
+ continue;
}
- let findMessage: any;
- const configDatabaseData = this.configService.get('DATABASE').SAVE_DATA;
- if (configDatabaseData.HISTORIC || configDatabaseData.NEW_MESSAGE) {
- // Use raw SQL to avoid JSON path issues
- const protocolMapKey = `protocol_${key.id}`;
- const originalMessageId = (await this.baileysCache.get(protocolMapKey)) as string;
-
- if (originalMessageId) {
- message.keyId = originalMessageId;
- }
-
- const searchId = originalMessageId || key.id;
-
- const messages = (await this.prismaRepository.$queryRaw`
- SELECT * FROM "Message"
- WHERE "instanceId" = ${this.instanceId}
- AND "key"->>'id' = ${searchId}
- LIMIT 1
- `) as any[];
- findMessage = messages[0] || null;
-
- if (!findMessage?.id) {
- this.logger.warn(`Original message not found for update. Skipping. Key: ${JSON.stringify(key)}`);
- continue;
- }
- message.messageId = findMessage.id;
- }
+ // Resolve @lid to @s.whatsapp.net using the stored message key as source of truth
+ const lidKey = key as LidMessageKey;
+ const resolvedRemoteJid: string = key.remoteJid?.includes('@lid')
+ ? (lidKey.remoteJidAlt ?? (findMessage.key as LidMessageKey)?.remoteJid ?? key.remoteJid)
+ : key.remoteJid;
if (update.message === null && update.status === undefined) {
- this.sendDataWebhook(Events.MESSAGES_DELETE, { ...key, status: 'DELETED' });
+ this.sendDataWebhook(Events.MESSAGES_DELETE, key);
+
+ const message: any = {
+ messageId: findMessage.id,
+ keyId: key.id,
+ remoteJid: resolvedRemoteJid,
+ fromMe: key.fromMe,
+ participant: resolvedRemoteJid,
+ status: 'DELETED',
+ instanceId: this.instanceId,
+ };
if (this.configService.get('DATABASE').SAVE_DATA.MESSAGE_UPDATE)
- await this.prismaRepository.messageUpdate.create({ data: message });
+ await this.prismaRepository.messageUpdate.create({
+ data: message,
+ });
if (this.configService.get('CHATWOOT').ENABLED && this.localChatwoot?.enabled) {
this.chatwootService.eventWhatsapp(
@@ -1667,60 +1470,57 @@ export class BaileysStartupService extends ChannelStartupService {
}
continue;
- }
-
- if (findMessage && update.status !== undefined && status[update.status] !== findMessage.status) {
- if (!key.fromMe && key.remoteJid) {
- readChatToUpdate[key.remoteJid] = true;
-
- const { remoteJid } = key;
- const timestamp = findMessage.messageTimestamp;
- const fromMe = key.fromMe.toString();
- const messageKey = `${remoteJid}_${timestamp}_${fromMe}`;
-
- const cachedTimestamp = await this.baileysCache.get(messageKey);
-
- if (!cachedTimestamp) {
- if (status[update.status] === status[4]) {
- this.logger.log(`Update as read in message.update ${remoteJid} - ${timestamp}`);
- await this.updateMessagesReadedByTimestamp(remoteJid, timestamp);
- await this.baileysCache.set(messageKey, true, this.MESSAGE_CACHE_TTL_SECONDS);
- }
+ } else if (update.status !== undefined && status[update.status] !== findMessage.status) {
+ if (!key.fromMe && resolvedRemoteJid) {
+ readChatToUpdate[resolvedRemoteJid] = true;
- await this.prismaRepository.message.update({
- where: { id: findMessage.id },
- data: { status: status[update.status] },
- });
- } else {
- this.logger.info(
- `Update readed messages duplicated ignored in message.update [avoid deadlock]: ${messageKey}`,
- );
+ if (status[update.status] === status[4]) {
+ this.logger.log(`Update as read ${resolvedRemoteJid} - ${findMessage.messageTimestamp}`);
+ this.updateMessagesReadedByTimestamp(resolvedRemoteJid, findMessage.messageTimestamp);
}
}
+
+ await this.prismaRepository.message.update({
+ where: { id: findMessage.id },
+ data: { status: status[update.status] },
+ });
}
+ const message: any = {
+ messageId: findMessage.id,
+ keyId: key.id,
+ remoteJid: resolvedRemoteJid,
+ fromMe: key.fromMe,
+ participant: resolvedRemoteJid,
+ status: status[update.status],
+ pollUpdates,
+ instanceId: this.instanceId,
+ };
+
this.sendDataWebhook(Events.MESSAGES_UPDATE, message);
- if (this.configService.get('DATABASE').SAVE_DATA.MESSAGE_UPDATE) {
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- const { message: _msg, ...messageData } = message;
- await this.prismaRepository.messageUpdate.create({ data: messageData });
- }
+ if (this.configService.get('DATABASE').SAVE_DATA.MESSAGE_UPDATE)
+ await this.prismaRepository.messageUpdate.create({
+ data: message,
+ });
const existingChat = await this.prismaRepository.chat.findFirst({
where: { instanceId: this.instanceId, remoteJid: message.remoteJid },
});
if (existingChat) {
- const chatToInsert = { remoteJid: message.remoteJid, instanceId: this.instanceId, unreadMessages: 0 };
+ const chatToInsert = {
+ remoteJid: message.remoteJid,
+ instanceId: this.instanceId,
+ name: message.pushName || '',
+ unreadMessages: 0,
+ };
this.sendDataWebhook(Events.CHATS_UPSERT, [chatToInsert]);
if (this.configService.get('DATABASE').SAVE_DATA.CHATS) {
- try {
- await this.prismaRepository.chat.update({ where: { id: existingChat.id }, data: chatToInsert });
- } catch {
- console.log(`Chat insert record ignored: ${chatToInsert.remoteJid} - ${chatToInsert.instanceId}`);
- }
+ await this.prismaRepository.chat.create({
+ data: chatToInsert,
+ });
}
}
}
@@ -1745,76 +1545,23 @@ export class BaileysStartupService extends ChannelStartupService {
});
},
- 'group-participants.update': async (participantsUpdate: {
+ 'group-participants.update': (participantsUpdate: {
id: string;
- participants: string[];
+ participants: string[] | any[];
action: ParticipantAction;
+ author?: string;
}) => {
- // ENHANCEMENT: Adds participantsData field while maintaining backward compatibility
- // MAINTAINS: participants: string[] (original JID strings)
- // ADDS: participantsData: { jid: string, phoneNumber: string, name?: string, imgUrl?: string }[]
- // This enables LID to phoneNumber conversion without breaking existing webhook consumers
-
- // Helper to normalize participantId as phone number
- const normalizePhoneNumber = (id: string | null | undefined): string => {
- // Remove @lid, @s.whatsapp.net suffixes and extract just the number part
- return String(id || '').split('@')[0];
- };
+ this.sendDataWebhook(Events.GROUP_PARTICIPANTS_UPDATE, participantsUpdate);
- try {
- // Usa o mesmo método que o endpoint /group/participants
- const groupParticipants = await this.findParticipants({ groupJid: participantsUpdate.id });
-
- // Validação para garantir que temos dados válidos
- if (!groupParticipants?.participants || !Array.isArray(groupParticipants.participants)) {
- throw new Error('Invalid participant data received from findParticipants');
- }
-
- // Filtra apenas os participantes que estão no evento
- const resolvedParticipants = participantsUpdate.participants.map((participantId) => {
- const participantData = groupParticipants.participants.find((p) => p.id === participantId);
-
- let phoneNumber: string;
- if (participantData?.phoneNumber) {
- phoneNumber = participantData.phoneNumber;
- } else {
- phoneNumber = normalizePhoneNumber(participantId);
- }
-
- return {
- jid: participantId,
- phoneNumber,
- name: participantData?.name,
- imgUrl: participantData?.imgUrl,
- };
- });
-
- // Mantém formato original + adiciona dados resolvidos
- const enhancedParticipantsUpdate = {
- ...participantsUpdate,
- participants: participantsUpdate.participants, // Mantém array original de strings
- // Adiciona dados resolvidos em campo separado
- participantsData: resolvedParticipants,
- };
-
- this.sendDataWebhook(Events.GROUP_PARTICIPANTS_UPDATE, enhancedParticipantsUpdate);
- } catch (error) {
- this.logger.error(
- `Failed to resolve participant data for GROUP_PARTICIPANTS_UPDATE webhook: ${error.message} | Group: ${participantsUpdate.id} | Participants: ${participantsUpdate.participants.length}`,
- );
- // Fallback - envia sem conversão
- this.sendDataWebhook(Events.GROUP_PARTICIPANTS_UPDATE, participantsUpdate);
- }
-
- this.updateGroupMetadataCache(participantsUpdate.id);
- },
- };
+ this.updateGroupMetadataCache(participantsUpdate.id);
+ },
+ };
private readonly labelHandle = {
[Events.LABELS_EDIT]: async (label: Label) => {
- this.sendDataWebhook(Events.LABELS_EDIT, { ...label, instance: this.instance.name });
-
- const labelsRepository = await this.prismaRepository.label.findMany({ where: { instanceId: this.instanceId } });
+ const labelsRepository = await this.prismaRepository.label.findMany({
+ where: { instanceId: this.instanceId },
+ });
const savedLabel = labelsRepository.find((l) => l.labelId === label.id);
if (label.deleted && savedLabel) {
@@ -1836,11 +1583,17 @@ export class BaileysStartupService extends ChannelStartupService {
instanceId: this.instanceId,
};
await this.prismaRepository.label.upsert({
- where: { labelId_instanceId: { instanceId: labelData.instanceId, labelId: labelData.labelId } },
+ where: {
+ labelId_instanceId: {
+ instanceId: labelData.instanceId,
+ labelId: labelData.labelId,
+ },
+ },
update: labelData,
create: labelData,
});
}
+ this.sendDataWebhook(Events.LABELS_EDIT, { ...label, instance: this.instance.name });
}
},
@@ -1848,18 +1601,26 @@ export class BaileysStartupService extends ChannelStartupService {
data: { association: LabelAssociation; type: 'remove' | 'add' },
database: Database,
) => {
- this.logger.info(
- `labels association - ${data?.association?.chatId} (${data.type}-${data?.association?.type}): ${data?.association?.labelId}`,
- );
if (database.SAVE_DATA.CHATS) {
- const instanceId = this.instanceId;
- const chatId = data.association.chatId;
- const labelId = data.association.labelId;
-
- if (data.type === 'add') {
- await this.addLabel(labelId, instanceId, chatId);
- } else if (data.type === 'remove') {
- await this.removeLabel(labelId, instanceId, chatId);
+ const chats = await this.prismaRepository.chat.findMany({
+ where: { instanceId: this.instanceId },
+ });
+ const chat = chats.find((c) => c.remoteJid === data.association.chatId);
+ if (chat) {
+ const labelsArray = Array.isArray(chat.labels) ? chat.labels.map((event) => String(event)) : [];
+ let labels = [...labelsArray];
+
+ if (data.type === 'remove') {
+ labels = labels.filter((label) => label !== data.association.labelId);
+ } else if (data.type === 'add') {
+ labels = [...labels, data.association.labelId];
+ }
+ await this.prismaRepository.chat.update({
+ where: { id: chat.id },
+ data: {
+ labels,
+ },
+ });
}
}
@@ -1874,141 +1635,137 @@ export class BaileysStartupService extends ChannelStartupService {
private eventHandler() {
this.client.ev.process(async (events) => {
- this.eventProcessingQueue = this.eventProcessingQueue.then(async () => {
- try {
- if (!this.endSession) {
- const database = this.configService.get('DATABASE');
- const settings = await this.findSettings();
-
- if (events.call) {
- const call = events.call[0];
-
- if (settings?.rejectCall && call.status == 'offer') {
- this.client.rejectCall(call.id, call.from);
- }
+ if (!this.endSession) {
+ const database = this.configService.get('DATABASE');
+ const settings = await this.findSettings();
- if (settings?.msgCall?.trim().length > 0 && call.status == 'offer') {
- if (call.from.endsWith('@lid')) {
- call.from = await this.client.signalRepository.lidMapping.getPNForLID(call.from as string);
- }
- const msg = await this.client.sendMessage(call.from, { text: settings.msgCall });
+ if (events.call) {
+ const call = events.call[0];
- this.client.ev.emit('messages.upsert', { messages: [msg], type: 'notify' });
- }
+ if (settings?.rejectCall && call.status == 'offer') {
+ this.client.rejectCall(call.id, call.from);
+ }
- this.sendDataWebhook(Events.CALL, call);
- }
+ if (settings?.msgCall?.trim().length > 0 && call.status == 'offer') {
+ const msg = await this.client.sendMessage(call.from, {
+ text: settings.msgCall,
+ });
- if (events['connection.update']) {
- this.connectionUpdate(events['connection.update']);
- }
+ this.client.ev.emit('messages.upsert', {
+ messages: [msg],
+ type: 'notify',
+ });
+ }
- if (events['creds.update']) {
- this.instance.authState.saveCreds();
- }
+ this.sendDataWebhook(Events.CALL, call);
+ }
- if (events['messaging-history.set']) {
- const payload = events['messaging-history.set'];
- await this.messageHandle['messaging-history.set'](payload);
- }
+ if (events['connection.update']) {
+ this.connectionUpdate(events['connection.update']);
+ }
- if (events['messages.upsert']) {
- const payload = events['messages.upsert'];
+ if (events['creds.update']) {
+ this.instance.authState.saveCreds();
+ }
- // this.messageProcessor.processMessage(payload, settings);
- await this.messageHandle['messages.upsert'](payload, settings);
- }
+ if (events['messaging-history.set']) {
+ const payload = events['messaging-history.set'];
+ this.messageHandle['messaging-history.set'](payload);
+ }
- if (events['messages.update']) {
- const payload = events['messages.update'];
- await this.messageHandle['messages.update'](payload, settings);
- }
+ if (events['messages.upsert']) {
+ const payload = events['messages.upsert'];
+ this.messageHandle['messages.upsert'](payload, settings);
+ }
- if (events['message-receipt.update']) {
- const payload = events['message-receipt.update'] as MessageUserReceiptUpdate[];
- const remotesJidMap: Record = {};
+ if (events['messages.update']) {
+ const payload = events['messages.update'];
+ this.messageHandle['messages.update'](payload, settings);
+ }
- for (const event of payload) {
- if (typeof event.key.remoteJid === 'string' && typeof event.receipt.readTimestamp === 'number') {
- remotesJidMap[event.key.remoteJid] = event.receipt.readTimestamp;
- }
- }
+ if (events['message-receipt.update']) {
+ const payload = events['message-receipt.update'] as MessageUserReceiptUpdate[];
+ const remotesJidMap: Record = {};
- await Promise.all(
- Object.keys(remotesJidMap).map(async (remoteJid) =>
- this.updateMessagesReadedByTimestamp(remoteJid, remotesJidMap[remoteJid]),
- ),
- );
+ for (const event of payload) {
+ if (typeof event.key.remoteJid === 'string' && typeof event.receipt.readTimestamp === 'number') {
+ // Resolve @lid to @s.whatsapp.net so read receipts match stored messages
+ const jid = resolveLidJid(event.key as LidMessageKey);
+ remotesJidMap[jid] = event.receipt.readTimestamp;
}
+ }
- if (events['presence.update']) {
- const payload = events['presence.update'];
+ await Promise.all(
+ Object.keys(remotesJidMap).map(async (remoteJid) =>
+ this.updateMessagesReadedByTimestamp(remoteJid, remotesJidMap[remoteJid]),
+ ),
+ );
+ }
- if (settings?.groupsIgnore && payload.id.includes('@g.us')) {
- return;
- }
+ if (events['presence.update']) {
+ const payload = events['presence.update'];
- this.sendDataWebhook(Events.PRESENCE_UPDATE, payload);
- }
+ if (settings?.groupsIgnore && payload.id.includes('@g.us')) {
+ return;
+ }
- if (!settings?.groupsIgnore) {
- if (events['groups.upsert']) {
- const payload = events['groups.upsert'];
- this.groupHandler['groups.upsert'](payload);
- }
+ this.sendDataWebhook(Events.PRESENCE_UPDATE, payload);
+ }
- if (events['groups.update']) {
- const payload = events['groups.update'];
- this.groupHandler['groups.update'](payload);
- }
+ if (!settings?.groupsIgnore) {
+ if (events['groups.upsert']) {
+ const payload = events['groups.upsert'];
+ this.groupHandler['groups.upsert'](payload);
+ }
- if (events['group-participants.update']) {
- const payload = events['group-participants.update'] as any;
- this.groupHandler['group-participants.update'](payload);
- }
- }
+ if (events['groups.update']) {
+ const payload = events['groups.update'];
+ this.groupHandler['groups.update'](payload);
+ }
- if (events['chats.upsert']) {
- const payload = events['chats.upsert'];
- this.chatHandle['chats.upsert'](payload);
- }
+ if (events['group-participants.update']) {
+ const payload = events['group-participants.update'];
+ this.groupHandler['group-participants.update'](payload);
+ }
+ }
- if (events['chats.update']) {
- const payload = events['chats.update'];
- this.chatHandle['chats.update'](payload);
- }
+ if (events['chats.upsert']) {
+ const payload = events['chats.upsert'];
+ this.chatHandle['chats.upsert'](payload);
+ }
- if (events['chats.delete']) {
- const payload = events['chats.delete'];
- this.chatHandle['chats.delete'](payload);
- }
+ if (events['chats.update']) {
+ const payload = events['chats.update'];
+ this.chatHandle['chats.update'](payload);
+ }
- if (events['contacts.upsert']) {
- const payload = events['contacts.upsert'];
- this.contactHandle['contacts.upsert'](payload);
- }
+ if (events['chats.delete']) {
+ const payload = events['chats.delete'];
+ this.chatHandle['chats.delete'](payload);
+ }
- if (events['contacts.update']) {
- const payload = events['contacts.update'];
- this.contactHandle['contacts.update'](payload);
- }
+ if (events['contacts.upsert']) {
+ const payload = events['contacts.upsert'];
+ this.contactHandle['contacts.upsert'](payload);
+ }
- if (events[Events.LABELS_ASSOCIATION]) {
- const payload = events[Events.LABELS_ASSOCIATION];
- this.labelHandle[Events.LABELS_ASSOCIATION](payload, database);
- return;
- }
+ if (events['contacts.update']) {
+ const payload = events['contacts.update'];
+ this.contactHandle['contacts.update'](payload);
+ }
- if (events[Events.LABELS_EDIT]) {
- const payload = events[Events.LABELS_EDIT];
- this.labelHandle[Events.LABELS_EDIT](payload);
- return;
- }
- }
- } catch (error) {
- this.logger.error(error);
+ if (events[Events.LABELS_ASSOCIATION]) {
+ const payload = events[Events.LABELS_ASSOCIATION];
+ this.labelHandle[Events.LABELS_ASSOCIATION](payload, database);
+ return;
}
- });
+
+ if (events[Events.LABELS_EDIT]) {
+ const payload = events[Events.LABELS_EDIT];
+ this.labelHandle[Events.LABELS_EDIT](payload);
+ return;
+ }
+ }
});
}
@@ -2048,9 +1805,15 @@ export class BaileysStartupService extends ChannelStartupService {
try {
const profilePictureUrl = await this.client.profilePictureUrl(jid, 'image');
- return { wuid: jid, profilePictureUrl };
+ return {
+ wuid: jid,
+ profilePictureUrl,
+ };
} catch {
- return { wuid: jid, profilePictureUrl: null };
+ return {
+ wuid: jid,
+ profilePictureUrl: null,
+ };
}
}
@@ -2058,9 +1821,15 @@ export class BaileysStartupService extends ChannelStartupService {
const jid = createJid(number);
try {
- return { wuid: jid, status: (await this.client.fetchStatus(jid))[0]?.status };
+ return {
+ wuid: jid,
+ status: ((await this.client.fetchStatus(jid)) as any)?.[0]?.status,
+ };
} catch {
- return { wuid: jid, status: null };
+ return {
+ wuid: jid,
+ status: null,
+ };
}
}
@@ -2109,7 +1878,14 @@ export class BaileysStartupService extends ChannelStartupService {
};
}
} catch {
- return { wuid: jid, name: null, picture: null, status: null, os: null, isBusiness: false };
+ return {
+ wuid: jid,
+ name: null,
+ picture: null,
+ status: null,
+ os: null,
+ isBusiness: false,
+ };
}
}
@@ -2117,11 +1893,10 @@ export class BaileysStartupService extends ChannelStartupService {
const jid = createJid(number);
try {
- // const call = await this.client.offerCall(jid, isVideo);
- // setTimeout(() => this.client.terminateCall(call.id, call.to), callDuration * 1000);
+ const call = await (this.client as any).offerCall(jid, isVideo);
+ setTimeout(() => (this.client as any).terminateCall(call.id, call.to), callDuration * 1000);
- // return call;
- return { id: '123', jid, isVideo, callDuration };
+ return call;
} catch (error) {
return error;
}
@@ -2135,12 +1910,13 @@ export class BaileysStartupService extends ChannelStartupService {
quoted: any,
messageId?: string,
ephemeralExpiration?: number,
- contextInfo?: any,
// participants?: GroupParticipant[],
) {
sender = sender.toLowerCase();
- const option: any = { quoted };
+ const option: any = {
+ quoted,
+ };
if (isJidGroup(sender)) {
option.useCachedGroupMetadata = true;
@@ -2152,8 +1928,8 @@ export class BaileysStartupService extends ChannelStartupService {
if (ephemeralExpiration) option.ephemeralExpiration = ephemeralExpiration;
- // NOTE: NÃO DEVEMOS GERAR O messageId AQUI, SOMENTE SE VIER INFORMADO POR PARAMETRO. A GERAÇÃO ANTERIOR IMPEDE O WZAP DE IDENTIFICAR A SOURCE.
if (messageId) option.messageId = messageId;
+ else option.messageId = '3EB0' + randomBytes(18).toString('hex').toUpperCase();
if (message['viewOnceMessage']) {
const m = generateWAMessageFromContent(sender, message, {
@@ -2163,7 +1939,12 @@ export class BaileysStartupService extends ChannelStartupService {
quoted,
});
const id = await this.client.relayMessage(sender, message, { messageId });
- m.key = { id: id, remoteJid: sender, participant: isPnUser(sender) ? sender : undefined, fromMe: true };
+ m.key = {
+ id: id,
+ remoteJid: sender,
+ participant: isPnUser(sender) || isLidUser(sender) ? sender : undefined,
+ fromMe: true,
+ };
for (const [key, value] of Object.entries(m)) {
if (!value || (isArray(value) && value.length) === 0) {
delete m[key];
@@ -2183,17 +1964,16 @@ export class BaileysStartupService extends ChannelStartupService {
return await this.client.sendMessage(
sender,
{
- react: { text: message['reactionMessage']['text'], key: message['reactionMessage']['key'] },
+ react: {
+ text: message['reactionMessage']['text'],
+ key: message['reactionMessage']['key'],
+ },
} as unknown as AnyMessageContent,
option as unknown as MiscMessageGenerationOptions,
);
}
}
- if (contextInfo) {
- message['contextInfo'] = contextInfo;
- }
-
if (message['conversation']) {
return await this.client.sendMessage(
sender,
@@ -2201,7 +1981,6 @@ export class BaileysStartupService extends ChannelStartupService {
text: message['conversation'],
mentions,
linkPreview: linkPreview,
- contextInfo: message['contextInfo'],
} as unknown as AnyMessageContent,
option as unknown as MiscMessageGenerationOptions,
);
@@ -2211,9 +1990,11 @@ export class BaileysStartupService extends ChannelStartupService {
return await this.client.sendMessage(
sender,
{
- forward: { key: { remoteJid: this.instance.wuid, fromMe: true }, message },
+ forward: {
+ key: { remoteJid: this.instance.wuid, fromMe: true },
+ message,
+ },
mentions,
- contextInfo: message['contextInfo'],
},
option as unknown as MiscMessageGenerationOptions,
);
@@ -2223,7 +2004,14 @@ export class BaileysStartupService extends ChannelStartupService {
let jidList;
if (message['status'].option.allContacts) {
const contacts = await this.prismaRepository.contact.findMany({
- where: { instanceId: this.instanceId, remoteJid: { not: { endsWith: '@g.us' } } },
+ where: {
+ instanceId: this.instanceId,
+ remoteJid: {
+ not: {
+ endsWith: '@g.us',
+ },
+ },
+ },
});
jidList = contacts.map((contact) => contact.remoteJid);
@@ -2345,25 +2133,22 @@ export class BaileysStartupService extends ChannelStartupService {
if (options?.quoted) {
const m = options?.quoted;
- const msg = m?.message ? m : ((await this.getMessage(m.key, true)) as WAMessage);
+ const msg = m?.message ? m : ((await this.getMessage(m.key, true)) as proto.IWebMessageInfo);
if (msg) {
- quoted = msg;
+ quoted = msg as WAMessage;
}
}
let messageSent: WAMessage;
let mentions: string[];
- let contextInfo: any;
-
if (isJidGroup(sender)) {
let group;
try {
const cache = this.configService.get('CACHE');
if (!cache.REDIS.ENABLED && !cache.LOCAL.ENABLED) group = await this.findGroup({ groupJid: sender }, 'inner');
else group = await this.getGroupMetadataCache(sender);
- // group = await this.findGroup({ groupJid: sender }, 'inner');
} catch {
throw new NotFoundException('Group not found');
}
@@ -2374,7 +2159,7 @@ export class BaileysStartupService extends ChannelStartupService {
if (options?.mentionsEveryOne) {
mentions = group.participants.map((participant) => participant.id);
- } else if (options?.mentioned?.length) {
+ } else if (options.mentioned?.length) {
mentions = options.mentioned.map((mention) => {
const jid = createJid(mention);
if (isJidGroup(jid)) {
@@ -2395,27 +2180,7 @@ export class BaileysStartupService extends ChannelStartupService {
// group?.participants,
);
} else {
- contextInfo = {
- mentionedJid: [],
- groupMentions: [],
- //expiration: 7776000,
- ephemeralSettingTimestamp: {
- low: Math.floor(Date.now() / 1000) - 172800,
- high: 0,
- unsigned: false,
- },
- disappearingMode: { initiator: 0 },
- };
- messageSent = await this.sendMessage(
- sender,
- message,
- mentions,
- linkPreview,
- quoted,
- null,
- undefined,
- contextInfo,
- );
+ messageSent = await this.sendMessage(sender, message, mentions, linkPreview, quoted);
}
if (Long.isLong(messageSent?.messageTimestamp)) {
@@ -2434,8 +2199,6 @@ export class BaileysStartupService extends ChannelStartupService {
messageSent?.message?.ptvMessage ||
messageSent?.message?.audioMessage;
- const isVideo = messageSent?.message?.videoMessage;
-
if (this.configService.get('CHATWOOT').ENABLED && this.localChatwoot?.enabled && !isIntegration) {
this.chatwootService.eventWhatsapp(
Events.SEND_MESSAGE,
@@ -2446,63 +2209,71 @@ export class BaileysStartupService extends ChannelStartupService {
if (this.configService.get('OPENAI').ENABLED && messageRaw?.message?.audioMessage) {
const openAiDefaultSettings = await this.prismaRepository.openaiSetting.findFirst({
- where: { instanceId: this.instanceId },
- include: { OpenaiCreds: true },
+ where: {
+ instanceId: this.instanceId,
+ },
+ include: {
+ OpenaiCreds: true,
+ },
});
if (openAiDefaultSettings && openAiDefaultSettings.openaiCredsId && openAiDefaultSettings.speechToText) {
- messageRaw.message.speechToText = `[audio] ${await this.openaiService.speechToText(messageRaw, this)}`;
+ messageRaw.message.speechToText = await this.openaiService.speechToText(
+ openAiDefaultSettings.OpenaiCreds,
+ messageRaw,
+ );
}
}
if (this.configService.get('DATABASE').SAVE_DATA.NEW_MESSAGE) {
- const msg = await this.prismaRepository.message.create({ data: messageRaw });
+ const msg = await this.prismaRepository.message.create({
+ data: messageRaw,
+ });
if (isMedia && this.configService.get('S3').ENABLE) {
try {
- if (isVideo && !this.configService.get('S3').SAVE_VIDEO) {
- throw new Error('Video upload is disabled.');
- }
-
const message: any = messageRaw;
+ const media = await this.getBase64FromMediaMessage(
+ {
+ message,
+ },
+ true,
+ );
- // Verificação adicional para garantir que há conteúdo de mídia real
- const hasRealMedia = this.hasValidMediaContent(message);
-
- if (!hasRealMedia) {
- this.logger.warn('Message detected as media but contains no valid media content');
- } else {
- const media = await this.getBase64FromMediaMessage({ message }, true);
-
- if (!media) {
- this.logger.verbose('No valid media to upload (messageContextInfo only), skipping MinIO');
- return;
- }
-
- const { buffer, mediaType, fileName, size } = media;
+ const { buffer, mediaType, fileName, size } = media;
- const mimetype = mimeTypes.lookup(fileName).toString();
+ const mimetype = mime.getType(fileName).toString();
- const fullName = join(
- `${this.instance.id}`,
- messageRaw.key.remoteJid,
- `${messageRaw.key.id}`,
- mediaType,
- fileName,
- );
+ const fullName = join(
+ `${this.instance.id}`,
+ messageRaw.key.remoteJid,
+ `${messageRaw.key.id}`,
+ mediaType,
+ fileName,
+ );
- await s3Service.uploadFile(fullName, buffer, size.fileLength?.low, { 'Content-Type': mimetype });
+ await s3Service.uploadFile(fullName, buffer, size.fileLength?.low, {
+ 'Content-Type': mimetype,
+ });
- await this.prismaRepository.media.create({
- data: { messageId: msg.id, instanceId: this.instanceId, type: mediaType, fileName: fullName, mimetype },
- });
+ await this.prismaRepository.media.create({
+ data: {
+ messageId: msg.id,
+ instanceId: this.instanceId,
+ type: mediaType,
+ fileName: fullName,
+ mimetype,
+ },
+ });
- const mediaUrl = await s3Service.getObjectUrl(fullName);
+ const mediaUrl = await s3Service.getObjectUrl(fullName);
- messageRaw.message.mediaUrl = mediaUrl;
+ messageRaw.message.mediaUrl = mediaUrl;
- await this.prismaRepository.message.update({ where: { id: msg.id }, data: messageRaw });
- }
+ await this.prismaRepository.message.update({
+ where: { id: msg.id },
+ data: messageRaw,
+ });
} catch (error) {
this.logger.error(['Error on upload file to minio', error?.message, error?.stack]);
}
@@ -2511,36 +2282,21 @@ export class BaileysStartupService extends ChannelStartupService {
if (this.localWebhook.enabled) {
if (isMedia && this.localWebhook.webhookBase64) {
- try {
- const buffer = await downloadMediaMessage(
- { key: messageRaw.key, message: messageRaw?.message },
- 'buffer',
- {},
- { logger: P({ level: 'error' }) as any, reuploadRequest: this.client.updateMediaMessage },
- );
-
- if (buffer) {
- messageRaw.message.base64 = buffer.toString('base64');
- } else {
- // retry to download media
- const buffer = await downloadMediaMessage(
- { key: messageRaw.key, message: messageRaw?.message },
- 'buffer',
- {},
- { logger: P({ level: 'error' }) as any, reuploadRequest: this.client.updateMediaMessage },
- );
+ const buffer = await downloadMediaMessage(
+ { key: messageRaw.key, message: messageRaw?.message },
+ 'buffer',
+ {},
+ {
+ logger: P({ level: 'error' }) as any,
+ reuploadRequest: this.client.updateMediaMessage,
+ },
+ );
- if (buffer) {
- messageRaw.message.base64 = buffer.toString('base64');
- }
- }
- } catch (error) {
- this.logger.error(['Error converting media to base64', error?.message]);
- }
+ messageRaw.message.base64 = buffer ? buffer.toString('base64') : undefined;
}
}
- this.logger.verbose(messageSent);
+ this.logger.log(messageRaw);
this.sendDataWebhook(Events.SEND_MESSAGE, messageRaw);
@@ -2635,7 +2391,9 @@ export class BaileysStartupService extends ChannelStartupService {
return await this.sendMessageWithTyping(
data.number,
- { conversation: data.text },
+ {
+ conversation: data.text,
+ },
{
delay: data?.delay,
presence: 'composing',
@@ -2651,7 +2409,13 @@ export class BaileysStartupService extends ChannelStartupService {
public async pollMessage(data: SendPollDto) {
return await this.sendMessageWithTyping(
data.number,
- { poll: { name: data.name, selectableCount: data.selectableCount, values: data.values } },
+ {
+ poll: {
+ name: data.name,
+ selectableCount: data.selectableCount,
+ values: data.values,
+ },
+ },
{
delay: data?.delay,
presence: 'composing',
@@ -2673,7 +2437,9 @@ export class BaileysStartupService extends ChannelStartupService {
}
if (status.allContacts) {
- const contacts = await this.prismaRepository.contact.findMany({ where: { instanceId: this.instanceId } });
+ const contacts = await this.prismaRepository.contact.findMany({
+ where: { instanceId: this.instanceId },
+ });
if (!contacts.length) {
throw new BadRequestException('Contacts not found');
@@ -2696,21 +2462,41 @@ export class BaileysStartupService extends ChannelStartupService {
}
return {
- content: { text: status.content },
- option: { backgroundColor: status.backgroundColor, font: status.font, statusJidList: status.statusJidList },
+ content: {
+ text: status.content,
+ },
+ option: {
+ backgroundColor: status.backgroundColor,
+ font: status.font,
+ statusJidList: status.statusJidList,
+ },
};
}
if (status.type === 'image') {
return {
- content: { image: { url: status.content }, caption: status.caption },
- option: { statusJidList: status.statusJidList },
+ content: {
+ image: {
+ url: status.content,
+ },
+ caption: status.caption,
+ },
+ option: {
+ statusJidList: status.statusJidList,
+ },
};
}
if (status.type === 'video') {
return {
- content: { video: { url: status.content }, caption: status.caption },
- option: { statusJidList: status.statusJidList },
+ content: {
+ video: {
+ url: status.content,
+ },
+ caption: status.caption,
+ },
+ option: {
+ statusJidList: status.statusJidList,
+ },
};
}
@@ -2718,8 +2504,14 @@ export class BaileysStartupService extends ChannelStartupService {
const convert = await this.processAudioMp4(status.content);
if (Buffer.isBuffer(convert)) {
const result = {
- content: { audio: convert, ptt: true, mimetype: 'audio/ogg; codecs=opus' },
- option: { statusJidList: status.statusJidList },
+ content: {
+ audio: convert,
+ ptt: true,
+ mimetype: 'audio/ogg; codecs=opus',
+ },
+ option: {
+ statusJidList: status.statusJidList,
+ },
};
return result;
@@ -2738,7 +2530,9 @@ export class BaileysStartupService extends ChannelStartupService {
const status = await this.formatStatusMessage(mediaData);
- const statusSent = await this.sendMessageWithTyping('status@broadcast', { status });
+ const statusSent = await this.sendMessageWithTyping('status@broadcast', {
+ status,
+ });
return statusSent;
}
@@ -2747,43 +2541,9 @@ export class BaileysStartupService extends ChannelStartupService {
try {
const type = mediaMessage.mediatype === 'ptv' ? 'video' : mediaMessage.mediatype;
- let mediaInput: any;
- if (mediaMessage.mediatype === 'image') {
- let imageBuffer: Buffer;
- if (isURL(mediaMessage.media)) {
- let config: any = { responseType: 'arraybuffer' };
-
- if (this.localProxy?.enabled) {
- config = {
- ...config,
- httpsAgent: makeProxyAgent({
- host: this.localProxy.host,
- port: this.localProxy.port,
- protocol: this.localProxy.protocol,
- username: this.localProxy.username,
- password: this.localProxy.password,
- }),
- };
- }
-
- const response = await axios.get(mediaMessage.media, config);
- imageBuffer = Buffer.from(response.data, 'binary');
- } else {
- imageBuffer = Buffer.from(mediaMessage.media, 'base64');
- }
-
- mediaInput = await sharp(imageBuffer).jpeg().toBuffer();
- mediaMessage.fileName ??= 'image.jpg';
- mediaMessage.mimetype = 'image/jpeg';
- } else {
- mediaInput = isURL(mediaMessage.media)
- ? { url: mediaMessage.media }
- : Buffer.from(mediaMessage.media, 'base64');
- }
-
const prepareMedia = await prepareWAMessageMedia(
{
- [type]: mediaInput,
+ [type]: isURL(mediaMessage.media) ? { url: mediaMessage.media } : Buffer.from(mediaMessage.media, 'base64'),
} as any,
{ upload: this.client.waUploadToServer },
);
@@ -2797,22 +2557,24 @@ export class BaileysStartupService extends ChannelStartupService {
}
if (mediaMessage.mediatype === 'image' && !mediaMessage.fileName) {
- mediaMessage.fileName = 'image.jpg';
+ mediaMessage.fileName = 'image.png';
}
if (mediaMessage.mediatype === 'video' && !mediaMessage.fileName) {
mediaMessage.fileName = 'video.mp4';
}
- let mimetype: string | false;
+ let mimetype: string;
if (mediaMessage.mimetype) {
mimetype = mediaMessage.mimetype;
} else {
- mimetype = mimeTypes.lookup(mediaMessage.fileName);
+ mimetype = mime.getType(mediaMessage.fileName);
if (!mimetype && isURL(mediaMessage.media)) {
- let config: any = { responseType: 'arraybuffer' };
+ let config: any = {
+ responseType: 'arraybuffer',
+ };
if (this.localProxy?.enabled) {
config = {
@@ -2829,7 +2591,7 @@ export class BaileysStartupService extends ChannelStartupService {
const response = await axios.get(mediaMessage.media, config);
- mimetype = response.headers['content-type'];
+ mimetype = response.headers['content-type'] as string;
}
}
@@ -2867,18 +2629,14 @@ export class BaileysStartupService extends ChannelStartupService {
}
}
- if (mediaMessage?.fileName) {
- mimetype = mimeTypes.lookup(mediaMessage.fileName).toString();
- if (mimetype === 'application/mp4') {
- mimetype = 'video/mp4';
- }
- }
-
prepareMedia[mediaType].caption = mediaMessage?.caption;
prepareMedia[mediaType].mimetype = mimetype;
prepareMedia[mediaType].fileName = mediaMessage.fileName;
if (mediaMessage.mediatype === 'video') {
+ prepareMedia[mediaType].jpegThumbnail = Uint8Array.from(
+ readFileSync(join(process.cwd(), 'public', 'images', 'video-cover.png')),
+ );
prepareMedia[mediaType].gifPlayback = false;
}
@@ -2902,11 +2660,11 @@ export class BaileysStartupService extends ChannelStartupService {
imageBuffer = Buffer.from(base64Data, 'base64');
} else {
const timestamp = new Date().getTime();
- const parsedURL = new URL(image);
- parsedURL.searchParams.set('timestamp', timestamp.toString());
- const url = parsedURL.toString();
+ const url = `${image}?timestamp=${timestamp}`;
- let config: any = { responseType: 'arraybuffer' };
+ let config: any = {
+ responseType: 'arraybuffer',
+ };
if (this.localProxy?.enabled) {
config = {
@@ -2925,47 +2683,28 @@ export class BaileysStartupService extends ChannelStartupService {
imageBuffer = Buffer.from(response.data, 'binary');
}
- const isAnimated = this.isAnimated(image, imageBuffer);
+ const webpBuffer = await sharp(imageBuffer).webp().toBuffer();
- if (isAnimated) {
- return await sharp(imageBuffer, { animated: true }).webp({ quality: 80 }).toBuffer();
- } else {
- return await sharp(imageBuffer).webp().toBuffer();
- }
+ return webpBuffer;
} catch (error) {
console.error('Erro ao converter a imagem para WebP:', error);
throw error;
}
}
- private isAnimatedWebp(buffer: Buffer): boolean {
- if (buffer.length < 12) return false;
-
- return buffer.indexOf(Buffer.from('ANIM')) !== -1;
- }
-
- private isAnimated(image: string, buffer: Buffer): boolean {
- const lowerCaseImage = image.toLowerCase();
-
- if (lowerCaseImage.includes('.gif')) return true;
-
- if (lowerCaseImage.includes('.webp')) return this.isAnimatedWebp(buffer);
-
- return false;
- }
-
public async mediaSticker(data: SendStickerDto, file?: any) {
const mediaData: SendStickerDto = { ...data };
if (file) mediaData.sticker = file.buffer.toString('base64');
- const convert = data?.notConvertSticker
- ? Buffer.from(data.sticker, 'base64')
- : await this.convertToWebP(data.sticker);
+ const convert = await this.convertToWebP(data.sticker);
const gifPlayback = data.sticker.includes('.gif');
const result = await this.sendMessageWithTyping(
data.number,
- { sticker: convert, gifPlayback },
+ {
+ sticker: convert,
+ gifPlayback,
+ },
{
delay: data?.delay,
presence: 'composing',
@@ -3100,8 +2839,7 @@ export class BaileysStartupService extends ChannelStartupService {
}
public async processAudio(audio: string): Promise {
- const audioConverterConfig = this.configService.get('AUDIO_CONVERTER');
- if (audioConverterConfig.API_URL) {
+ if (process.env.API_AUDIO_CONVERTER) {
this.logger.verbose('Using audio converter API');
const formData = new FormData();
@@ -3111,8 +2849,11 @@ export class BaileysStartupService extends ChannelStartupService {
formData.append('base64', audio);
}
- const { data } = await axios.post(audioConverterConfig.API_URL, formData, {
- headers: { ...formData.getHeaders(), apikey: audioConverterConfig.API_KEY },
+ const { data } = await axios.post(process.env.API_AUDIO_CONVERTER, formData, {
+ headers: {
+ ...formData.getHeaders(),
+ apikey: process.env.API_AUDIO_CONVERTER_KEY,
+ },
});
if (!data.audio) {
@@ -3126,11 +2867,11 @@ export class BaileysStartupService extends ChannelStartupService {
if (isURL(audio)) {
const timestamp = new Date().getTime();
- const parsedURL = new URL(audio);
- parsedURL.searchParams.set('timestamp', timestamp.toString());
- const url = parsedURL.toString();
+ const url = `${audio}?timestamp=${timestamp}`;
- const config: any = { responseType: 'stream' };
+ const config: any = {
+ responseType: 'stream',
+ };
const response = await axios.get(url, config);
inputAudioStream = response.data.pipe(new PassThrough());
@@ -3140,8 +2881,6 @@ export class BaileysStartupService extends ChannelStartupService {
inputAudioStream.end(audioBuffer);
}
- const isLpcm = isURL(audio) && /\.lpcm($|\?)/i.test(audio);
-
return new Promise((resolve, reject) => {
const outputAudioStream = new PassThrough();
const chunks: Buffer[] = [];
@@ -3159,41 +2898,12 @@ export class BaileysStartupService extends ChannelStartupService {
ffmpeg.setFfmpegPath(ffmpegPath.path);
- let command = ffmpeg(inputAudioStream);
-
- if (isLpcm) {
- this.logger.verbose('Detected LPCM input – applying raw PCM settings');
- command = command.inputFormat('s16le').inputOptions(['-ar', '24000', '-ac', '1']);
- }
-
- command
+ ffmpeg(inputAudioStream)
.outputFormat('ogg')
.noVideo()
.audioCodec('libopus')
.addOutputOptions('-avoid_negative_ts make_zero')
- .audioBitrate('128k')
- .audioFrequency(48000)
.audioChannels(1)
- .outputOptions([
- '-write_xing',
- '0',
- '-compression_level',
- '10',
- '-application',
- 'voip',
- '-fflags',
- '+bitexact',
- '-flags',
- '+bitexact',
- '-id3v2_version',
- '0',
- '-map_metadata',
- '-1',
- '-map_chapters',
- '-1',
- '-write_bext',
- '0',
- ])
.pipe(outputAudioStream, { end: true })
.on('error', function (error) {
console.log('error', error);
@@ -3223,7 +2933,11 @@ export class BaileysStartupService extends ChannelStartupService {
if (Buffer.isBuffer(convert)) {
const result = this.sendMessageWithTyping(
data.number,
- { audio: convert, ptt: true, mimetype: 'audio/ogg; codecs=opus' },
+ {
+ audio: convert,
+ ptt: true,
+ mimetype: 'audio/ogg; codecs=opus',
+ },
{ presence: 'recording', delay: data?.delay },
isIntegration,
);
@@ -3262,19 +2976,41 @@ export class BaileysStartupService extends ChannelStartupService {
call: () => toString({ display_text: button.displayText, phone_number: button.phoneNumber }),
reply: () => toString({ display_text: button.displayText, id: button.id }),
copy: () => toString({ display_text: button.displayText, copy_code: button.copyCode }),
- url: () => toString({ display_text: button.displayText, url: button.url, merchant_url: button.url }),
+ url: () =>
+ toString({
+ display_text: button.displayText,
+ url: button.url,
+ merchant_url: button.url,
+ }),
pix: () =>
toString({
currency: button.currency,
- total_amount: { value: 0, offset: 100 },
+ total_amount: {
+ value: 0,
+ offset: 100,
+ },
reference_id: this.generateRandomId(),
type: 'physical-goods',
order: {
status: 'pending',
- subtotal: { value: 0, offset: 100 },
+ subtotal: {
+ value: 0,
+ offset: 100,
+ },
order_type: 'ORDER',
items: [
- { name: '', amount: { value: 0, offset: 100 }, quantity: 0, sale_amount: { value: 0, offset: 100 } },
+ {
+ name: '',
+ amount: {
+ value: 0,
+ offset: 100,
+ },
+ quantity: 0,
+ sale_amount: {
+ value: 0,
+ offset: 100,
+ },
+ },
],
},
payment_settings: [
@@ -3343,8 +3079,16 @@ export class BaileysStartupService extends ChannelStartupService {
message: {
interactiveMessage: {
nativeFlowMessage: {
- buttons: [{ name: this.mapType.get('pix'), buttonParamsJson: this.toJSONString(data.buttons[0]) }],
- messageParamsJson: JSON.stringify({ from: 'api', templateId: v4() }),
+ buttons: [
+ {
+ name: this.mapType.get('pix'),
+ buttonParamsJson: this.toJSONString(data.buttons[0]),
+ },
+ ],
+ messageParamsJson: JSON.stringify({
+ from: 'api',
+ templateId: v4(),
+ }),
},
},
},
@@ -3362,12 +3106,18 @@ export class BaileysStartupService extends ChannelStartupService {
const generate = await (async () => {
if (data?.thumbnailUrl) {
- return await this.prepareMediaMessage({ mediatype: 'image', media: data.thumbnailUrl });
+ return await this.prepareMediaMessage({
+ mediatype: 'image',
+ media: data.thumbnailUrl,
+ });
}
})();
const buttons = data.buttons.map((value) => {
- return { name: this.mapType.get(value.type), buttonParamsJson: this.toJSONString(value) };
+ return {
+ name: this.mapType.get(value.type),
+ buttonParamsJson: this.toJSONString(value),
+ };
});
const message: proto.IMessage = {
@@ -3385,7 +3135,9 @@ export class BaileysStartupService extends ChannelStartupService {
return t;
})(),
},
- footer: { text: data?.footer },
+ footer: {
+ text: data?.footer,
+ },
header: (() => {
if (generate?.message?.imageMessage) {
return {
@@ -3396,7 +3148,10 @@ export class BaileysStartupService extends ChannelStartupService {
})(),
nativeFlowMessage: {
buttons: buttons,
- messageParamsJson: JSON.stringify({ from: 'api', templateId: v4() }),
+ messageParamsJson: JSON.stringify({
+ from: 'api',
+ templateId: v4(),
+ }),
},
},
},
@@ -3484,12 +3239,18 @@ export class BaileysStartupService extends ChannelStartupService {
};
if (data.contact.length === 1) {
- message.contactMessage = { displayName: data.contact[0].fullName, vcard: vcard(data.contact[0]) };
+ message.contactMessage = {
+ displayName: data.contact[0].fullName,
+ vcard: vcard(data.contact[0]),
+ };
} else {
message.contactsArrayMessage = {
displayName: `${data.contact.length} contacts`,
contacts: data.contact.map((contact) => {
- return { displayName: contact.fullName, vcard: vcard(contact) };
+ return {
+ displayName: contact.fullName,
+ vcard: vcard(contact),
+ };
}),
};
}
@@ -3499,7 +3260,10 @@ export class BaileysStartupService extends ChannelStartupService {
public async reactionMessage(data: SendReactionDto) {
return await this.sendMessageWithTyping(data.key.remoteJid, {
- reactionMessage: { key: data.key, text: data.reaction },
+ reactionMessage: {
+ key: data.key,
+ text: data.reaction,
+ },
});
}
@@ -3509,7 +3273,11 @@ export class BaileysStartupService extends ChannelStartupService {
groups: { number: string; jid: string }[];
broadcast: { number: string; jid: string }[];
users: { number: string; jid: string; name?: string }[];
- } = { groups: [], broadcast: [], users: [] };
+ } = {
+ groups: [],
+ broadcast: [],
+ users: [],
+ };
data.numbers.forEach((number) => {
const jid = createJid(number);
@@ -3534,68 +3302,46 @@ export class BaileysStartupService extends ChannelStartupService {
const group = await this.findGroup({ groupJid: jid }, 'inner');
if (!group) {
- return new OnWhatsAppDto(jid, false, number);
+ new OnWhatsAppDto(jid, false, number);
}
- return new OnWhatsAppDto(group.id, true, number, group?.subject);
+ return new OnWhatsAppDto(group.id, !!group?.id, number, group?.subject);
}),
);
onWhatsapp.push(...groups);
// USERS
const contacts: any[] = await this.prismaRepository.contact.findMany({
- where: { instanceId: this.instanceId, remoteJid: { in: jids.users.map(({ jid }) => jid) } },
+ where: {
+ instanceId: this.instanceId,
+ remoteJid: {
+ in: jids.users.map(({ jid }) => jid),
+ },
+ },
});
- // Unified cache verification for all numbers (normal and LID)
const numbersToVerify = jids.users.map(({ jid }) => jid.replace('+', ''));
- // Get all numbers from cache
const cachedNumbers = await getOnWhatsappCache(numbersToVerify);
+ const filteredNumbers = numbersToVerify.filter(
+ (jid) => !cachedNumbers.some((cached) => cached.jidOptions.includes(jid)),
+ );
- // Separate numbers that are and are not in cache
- const cachedJids = new Set(cachedNumbers.flatMap((cached) => cached.jidOptions));
- const numbersNotInCache = numbersToVerify.filter((jid) => !cachedJids.has(jid));
-
- // Only call Baileys for normal numbers (@s.whatsapp.net) that are not in cache
- let verify: { jid: string; exists: boolean }[] = [];
- const normalNumbersNotInCache = numbersNotInCache.filter((jid) => !jid.includes('@lid'));
-
- if (normalNumbersNotInCache.length > 0) {
- this.logger.verbose(`Checking ${normalNumbersNotInCache.length} numbers via Baileys (not found in cache)`);
- verify = await this.client.onWhatsApp(...normalNumbersNotInCache);
- }
-
- const verifiedUsers = await Promise.all(
+ const verify = await this.client.onWhatsApp(...filteredNumbers);
+ const users: OnWhatsAppDto[] = await Promise.all(
jids.users.map(async (user) => {
- // Try to get from cache first (works for all: normal and LID)
- const cached = cachedNumbers.find((cached) => cached.jidOptions.includes(user.jid.replace('+', '')));
+ let numberVerified: (typeof verify)[0] | null = null;
+ const cached = cachedNumbers.find((cached) => cached.jidOptions.includes(user.jid.replace('+', '')));
if (cached) {
- this.logger.verbose(`Number ${user.number} found in cache`);
- return new OnWhatsAppDto(
- cached.remoteJid,
- true,
- user.number,
- contacts.find((c) => c.remoteJid === cached.remoteJid)?.pushName,
- cached.lid || (cached.remoteJid.includes('@lid') ? 'lid' : undefined),
- );
- }
-
- // If it's a LID number and not in cache, consider it valid
- if (user.jid.includes('@lid')) {
- return new OnWhatsAppDto(
- user.jid,
- true,
- user.number,
- contacts.find((c) => c.remoteJid === user.jid)?.pushName,
- 'lid',
- );
+ return {
+ exists: true,
+ jid: cached.remoteJid,
+ name: contacts.find((c) => c.remoteJid === cached.remoteJid)?.pushName,
+ number: user.number,
+ };
}
- // If not in cache and is a normal number, use Baileys verification
- let numberVerified: (typeof verify)[0] | null = null;
-
// Brazilian numbers
if (user.number.startsWith('55')) {
const numberWithDigit =
@@ -3615,7 +3361,7 @@ export class BaileysStartupService extends ChannelStartupService {
if (!numberVerified && (user.number.startsWith('52') || user.number.startsWith('54'))) {
let prefix = '';
if (user.number.startsWith('52')) {
- prefix = '1';
+ prefix = '';
}
if (user.number.startsWith('54')) {
prefix = '9';
@@ -3639,36 +3385,18 @@ export class BaileysStartupService extends ChannelStartupService {
const numberJid = numberVerified?.jid || user.jid;
- return new OnWhatsAppDto(
- numberJid,
- !!numberVerified?.exists,
- user.number,
- contacts.find((c) => c.remoteJid === numberJid)?.pushName,
- undefined,
- );
+ return {
+ exists: !!numberVerified?.exists,
+ jid: numberJid,
+ name: contacts.find((c) => c.remoteJid === numberJid)?.pushName,
+ number: user.number,
+ };
}),
);
- // Combine results
- onWhatsapp.push(...verifiedUsers);
-
- // TODO: Salvar no cache apenas números que NÃO estavam no cache
- const numbersToCache = onWhatsapp.filter((user) => {
- if (!user.exists) return false;
- // Verifica se estava no cache usando jidOptions
- const cached = cachedNumbers?.find((cached) => cached.jidOptions.includes(user.jid.replace('+', '')));
- return !cached;
- });
+ await saveOnWhatsappCache(users.filter((user) => user.exists).map((user) => ({ remoteJid: user.jid })));
- if (numbersToCache.length > 0) {
- this.logger.verbose(`Salvando ${numbersToCache.length} números no cache`);
- await saveOnWhatsappCache(
- numbersToCache.map((user) => ({
- remoteJid: user.jid,
- lid: user.lid === 'lid' ? 'lid' : undefined,
- })),
- );
- }
+ onWhatsapp.push(...users);
return onWhatsapp;
}
@@ -3677,8 +3405,12 @@ export class BaileysStartupService extends ChannelStartupService {
try {
const keys: proto.IMessageKey[] = [];
data.readMessages.forEach((read) => {
- if (isJidGroup(read.remoteJid) || isPnUser(read.remoteJid)) {
- keys.push({ remoteJid: read.remoteJid, fromMe: read.fromMe, id: read.id });
+ if (isJidGroup(read.remoteJid) || isPnUser(read.remoteJid) || isLidUser(read.remoteJid)) {
+ keys.push({
+ remoteJid: read.remoteJid,
+ fromMe: read.fromMe,
+ id: read.id,
+ });
}
});
await this.client.readMessages(keys);
@@ -3689,11 +3421,18 @@ export class BaileysStartupService extends ChannelStartupService {
}
public async getLastMessage(number: string) {
- const where: any = { key: { remoteJid: number }, instanceId: this.instance.id };
+ const where: any = {
+ key: {
+ remoteJid: number,
+ },
+ instanceId: this.instance.id,
+ };
const messages = await this.prismaRepository.message.findMany({
where,
- orderBy: { messageTimestamp: 'desc' },
+ orderBy: {
+ messageTimestamp: 'desc',
+ },
take: 1,
});
@@ -3729,9 +3468,18 @@ export class BaileysStartupService extends ChannelStartupService {
throw new NotFoundException('Last message not found');
}
- await this.client.chatModify({ archive: data.archive, lastMessages: [last_message] }, createJid(number));
+ await this.client.chatModify(
+ {
+ archive: data.archive,
+ lastMessages: [last_message],
+ },
+ createJid(number),
+ );
- return { chatId: number, archived: true };
+ return {
+ chatId: number,
+ archived: true,
+ };
} catch (error) {
throw new InternalServerErrorException({
archived: false,
@@ -3757,9 +3505,18 @@ export class BaileysStartupService extends ChannelStartupService {
throw new NotFoundException('Last message not found');
}
- await this.client.chatModify({ markRead: false, lastMessages: [last_message] }, createJid(number));
+ await this.client.chatModify(
+ {
+ markRead: false,
+ lastMessages: [last_message],
+ },
+ createJid(number),
+ );
- return { chatId: number, markedChatUnread: true };
+ return {
+ chatId: number,
+ markedChatUnread: true,
+ };
} catch (error) {
throw new InternalServerErrorException({
markedChatUnread: false,
@@ -3775,38 +3532,34 @@ export class BaileysStartupService extends ChannelStartupService {
const messageId = response.message?.protocolMessage?.key?.id;
if (messageId) {
const isLogicalDeleted = configService.get('DATABASE').DELETE_DATA.LOGICAL_MESSAGE_DELETE;
- let message = await this.prismaRepository.message.findFirst({
- where: { key: { path: ['id'], equals: messageId } },
+ let message = await this.prismaRepository.message.findUnique({
+ where: { id: messageId },
});
if (isLogicalDeleted) {
if (!message) return response;
const existingKey = typeof message?.key === 'object' && message.key !== null ? message.key : {};
message = await this.prismaRepository.message.update({
- where: { id: message.id },
- data: { key: { ...existingKey, deleted: true }, status: 'DELETED' },
+ where: { id: messageId },
+ data: {
+ key: {
+ ...existingKey,
+ deleted: true,
+ },
+ },
});
- if (this.configService.get('DATABASE').SAVE_DATA.MESSAGE_UPDATE) {
- const messageUpdate: any = {
- messageId: message.id,
- keyId: messageId,
- remoteJid: response.key.remoteJid,
- fromMe: response.key.fromMe,
- participant: response.key?.participant,
- status: 'DELETED',
- instanceId: this.instanceId,
- };
- await this.prismaRepository.messageUpdate.create({ data: messageUpdate });
- }
} else {
- if (!message) return response;
- await this.prismaRepository.message.deleteMany({ where: { id: message.id } });
+ await this.prismaRepository.message.deleteMany({
+ where: {
+ id: messageId,
+ },
+ });
}
this.sendDataWebhook(Events.MESSAGES_DELETE, {
id: message.id,
instanceId: message.instanceId,
key: message.key,
messageType: message.messageType,
- status: 'DELETED',
+ status: message.status,
source: message.source,
messageTimestamp: message.messageTimestamp,
pushName: message.pushName,
@@ -3822,18 +3575,6 @@ export class BaileysStartupService extends ChannelStartupService {
}
}
- public async mapMediaType(mediaType) {
- const map = {
- imageMessage: 'image',
- videoMessage: 'video',
- documentMessage: 'document',
- stickerMessage: 'sticker',
- audioMessage: 'audio',
- ptvMessage: 'video',
- };
- return map[mediaType] || null;
- }
-
public async getBase64FromMediaMessage(data: getBase64FromMediaMessageDto, getBuffer = false) {
try {
const m = data?.message;
@@ -3851,87 +3592,37 @@ export class BaileysStartupService extends ChannelStartupService {
}
}
- if ('messageContextInfo' in msg.message && Object.keys(msg.message).length === 1) {
- this.logger.verbose('Message contains only messageContextInfo, skipping media processing');
- return null;
- }
-
let mediaMessage: any;
let mediaType: string;
- if (msg.message?.templateMessage) {
- const template =
- msg.message.templateMessage.hydratedTemplate || msg.message.templateMessage.hydratedFourRowTemplate;
-
- for (const type of TypeMediaMessage) {
- if (template[type]) {
- mediaMessage = template[type];
- mediaType = type;
- msg.message = { [type]: { ...template[type], url: template[type].staticUrl } };
- break;
- }
- }
-
- if (!mediaMessage) {
- throw 'Template message does not contain a supported media type';
- }
- } else {
- for (const type of TypeMediaMessage) {
- mediaMessage = msg.message[type];
- if (mediaMessage) {
- mediaType = type;
- break;
- }
+ for (const type of TypeMediaMessage) {
+ mediaMessage = msg.message[type];
+ if (mediaMessage) {
+ mediaType = type;
+ break;
}
+ }
- if (!mediaMessage) {
- throw 'The message is not of the media type';
- }
+ if (!mediaMessage) {
+ throw 'The message is not of the media type';
}
if (typeof mediaMessage['mediaKey'] === 'object') {
- msg.message[mediaType].mediaKey = Uint8Array.from(Object.values(mediaMessage['mediaKey']));
+ msg.message = JSON.parse(JSON.stringify(msg.message));
}
- let buffer: Buffer;
-
- try {
- buffer = await downloadMediaMessage(
- { key: msg?.key, message: msg?.message },
- 'buffer',
- {},
- { logger: P({ level: 'error' }) as any, reuploadRequest: this.client.updateMediaMessage },
- );
- } catch {
- this.logger.error('Download Media failed, trying to retry in 5 seconds...');
- await new Promise((resolve) => setTimeout(resolve, 5000));
- const mediaType = Object.keys(msg.message).find((key) => key.endsWith('Message'));
- if (!mediaType) throw new Error('Could not determine mediaType for fallback');
-
- try {
- const media = await downloadContentFromMessage(
- {
- mediaKey: msg.message?.[mediaType]?.mediaKey,
- directPath: msg.message?.[mediaType]?.directPath,
- url: `https://mmg.whatsapp.net${msg?.message?.[mediaType]?.directPath}`,
- },
- await this.mapMediaType(mediaType),
- {},
- );
- const chunks = [];
- for await (const chunk of media) {
- chunks.push(chunk);
- }
- buffer = Buffer.concat(chunks);
- this.logger.info('Download Media with downloadContentFromMessage was successful!');
- } catch (fallbackErr) {
- this.logger.error('Download Media with downloadContentFromMessage also failed!');
- throw fallbackErr;
- }
- }
+ const buffer = await downloadMediaMessage(
+ { key: msg?.key, message: msg?.message },
+ 'buffer',
+ {},
+ {
+ logger: P({ level: 'error' }) as any,
+ reuploadRequest: this.client.updateMediaMessage,
+ },
+ );
const typeMessage = getContentType(msg.message);
- const ext = mimeTypes.extension(mediaMessage?.['mimetype']);
+ const ext = mime.getExtension(mediaMessage?.['mimetype']);
const fileName = mediaMessage?.['fileName'] || `${msg.key.id}.${ext}` || `${v4()}.${ext}`;
if (convertToMp4 && typeMessage === 'audioMessage') {
@@ -3966,7 +3657,11 @@ export class BaileysStartupService extends ChannelStartupService {
mediaType,
fileName,
caption: mediaMessage['caption'],
- size: { fileLength: mediaMessage['fileLength'], height: mediaMessage['height'], width: mediaMessage['width'] },
+ size: {
+ fileLength: mediaMessage['fileLength'],
+ height: mediaMessage['height'],
+ width: mediaMessage['width'],
+ },
mimetype: mediaMessage['mimetype'],
base64: buffer.toString('base64'),
buffer: getBuffer ? buffer : null,
@@ -4027,10 +3722,17 @@ export class BaileysStartupService extends ChannelStartupService {
if (!profile) {
const info = await this.whatsappNumber({ numbers: [jid] });
- return { isBusiness: false, message: 'Not is business profile', ...info?.shift() };
+ return {
+ isBusiness: false,
+ message: 'Not is business profile',
+ ...info?.shift(),
+ };
}
- return { isBusiness: true, ...profile };
+ return {
+ isBusiness: true,
+ ...profile,
+ };
} catch (error) {
throw new InternalServerErrorException('Error updating profile name', error.toString());
}
@@ -4061,11 +3763,11 @@ export class BaileysStartupService extends ChannelStartupService {
let pic: WAMediaUpload;
if (isURL(picture)) {
const timestamp = new Date().getTime();
- const parsedURL = new URL(picture);
- parsedURL.searchParams.set('timestamp', timestamp.toString());
- const url = parsedURL.toString();
+ const url = `${picture}?timestamp=${timestamp}`;
- let config: any = { responseType: 'arraybuffer' };
+ let config: any = {
+ responseType: 'arraybuffer',
+ };
if (this.localProxy?.enabled) {
config = {
@@ -4131,22 +3833,26 @@ export class BaileysStartupService extends ChannelStartupService {
private async formatUpdateMessage(data: UpdateMessageDto) {
try {
- if (!this.configService.get('DATABASE').SAVE_DATA.NEW_MESSAGE) {
- return data;
- }
-
const msg: any = await this.getMessage(data.key, true);
if (msg?.messageType === 'conversation' || msg?.messageType === 'extendedTextMessage') {
- return { text: data.text };
+ return {
+ text: data.text,
+ };
}
if (msg?.messageType === 'imageMessage') {
- return { image: msg?.message?.imageMessage, caption: data.text };
+ return {
+ image: msg?.message?.imageMessage,
+ caption: data.text,
+ };
}
if (msg?.messageType === 'videoMessage') {
- return { video: msg?.message?.videoMessage, caption: data.text };
+ return {
+ video: msg?.message?.videoMessage,
+ caption: data.text,
+ };
}
return null;
@@ -4167,85 +3873,22 @@ export class BaileysStartupService extends ChannelStartupService {
}
try {
- const oldMessage: any = await this.getMessage(data.key, true);
- if (this.configService.get('DATABASE').SAVE_DATA.NEW_MESSAGE) {
- if (!oldMessage) throw new NotFoundException('Message not found');
- if (oldMessage?.key?.remoteJid !== jid) {
- throw new BadRequestException('RemoteJid does not match');
- }
- if (oldMessage?.messageTimestamp > Date.now() + 900000) {
- // 15 minutes in milliseconds
- throw new BadRequestException('Message is older than 15 minutes');
- }
- }
-
- const messageSent = await this.client.sendMessage(jid, { ...(options as any), edit: data.key });
- if (messageSent) {
- const editedMessage =
- messageSent?.message?.protocolMessage || messageSent?.message?.editedMessage?.message?.protocolMessage;
-
- if (editedMessage) {
- this.sendDataWebhook(Events.SEND_MESSAGE_UPDATE, editedMessage);
- if (this.configService.get('CHATWOOT').ENABLED && this.localChatwoot?.enabled)
- this.chatwootService.eventWhatsapp(
- 'send.message.update',
- { instanceName: this.instance.name, instanceId: this.instance.id },
- editedMessage,
- );
-
- const messageId = messageSent.message?.protocolMessage?.key?.id;
- if (messageId && this.configService.get('DATABASE').SAVE_DATA.NEW_MESSAGE) {
- let message = await this.prismaRepository.message.findFirst({
- where: { key: { path: ['id'], equals: messageId } },
- });
- if (!message) throw new NotFoundException('Message not found');
-
- if (!(message.key.valueOf() as any).fromMe) {
- new BadRequestException('You cannot edit others messages');
- }
- if ((message.key.valueOf() as any)?.deleted) {
- new BadRequestException('You cannot edit deleted messages');
- }
-
- if (oldMessage.messageType === 'conversation' || oldMessage.messageType === 'extendedTextMessage') {
- oldMessage.message.conversation = data.text;
- } else {
- oldMessage.message[oldMessage.messageType].caption = data.text;
- }
- message = await this.prismaRepository.message.update({
- where: { id: message.id },
- data: {
- message: oldMessage.message,
- status: 'EDITED',
- messageTimestamp: Math.floor(Date.now() / 1000), // Convert to int32 by dividing by 1000 to get seconds
- },
- });
-
- if (this.configService.get('DATABASE').SAVE_DATA.MESSAGE_UPDATE) {
- const messageUpdate: any = {
- messageId: message.id,
- keyId: messageId,
- remoteJid: messageSent.key.remoteJid,
- fromMe: messageSent.key.fromMe,
- participant: messageSent.key?.participant,
- status: 'EDITED',
- instanceId: this.instanceId,
- };
- await this.prismaRepository.messageUpdate.create({ data: messageUpdate });
- }
- }
- }
- }
-
- return messageSent;
+ return await this.client.sendMessage(jid, {
+ ...(options as any),
+ edit: data.key,
+ });
} catch (error) {
this.logger.error(error);
- throw error;
+ throw new BadRequestException(error.toString());
}
}
public async fetchLabels(): Promise {
- const labels = await this.prismaRepository.label.findMany({ where: { instanceId: this.instanceId } });
+ const labels = await this.prismaRepository.label.findMany({
+ where: {
+ instanceId: this.instanceId,
+ },
+ });
return labels.map((label) => ({
color: label.color,
@@ -4268,13 +3911,11 @@ export class BaileysStartupService extends ChannelStartupService {
try {
if (data.action === 'add') {
await this.client.addChatLabel(contact.jid, data.labelId);
- await this.addLabel(data.labelId, this.instanceId, contact.jid);
return { numberJid: contact.jid, labelId: data.labelId, add: true };
}
if (data.action === 'remove') {
await this.client.removeChatLabel(contact.jid, data.labelId);
- await this.removeLabel(data.labelId, this.instanceId, contact.jid);
return { numberJid: contact.jid, labelId: data.labelId, remove: true };
}
@@ -4292,7 +3933,10 @@ export class BaileysStartupService extends ChannelStartupService {
if ((cacheConf?.REDIS?.ENABLED && cacheConf?.REDIS?.URI !== '') || cacheConf?.LOCAL?.ENABLED) {
this.logger.verbose(`Updating cache for group: ${groupJid}`);
- await groupMetadataCache.set(groupJid, { timestamp: Date.now(), data: meta });
+ await groupMetadataCache.set(groupJid, {
+ timestamp: Date.now(),
+ data: meta,
+ });
}
return meta;
@@ -4338,7 +3982,11 @@ export class BaileysStartupService extends ChannelStartupService {
}
if (create?.promoteParticipants) {
- await this.updateGParticipant({ groupJid: id, action: 'promote', participants: participants });
+ await this.updateGParticipant({
+ groupJid: id,
+ action: 'promote',
+ participants: participants,
+ });
}
const group = await this.client.groupMetadata(id);
@@ -4355,11 +4003,11 @@ export class BaileysStartupService extends ChannelStartupService {
let pic: WAMediaUpload;
if (isURL(picture.image)) {
const timestamp = new Date().getTime();
- const parsedURL = new URL(picture.image);
- parsedURL.searchParams.set('timestamp', timestamp.toString());
- const url = parsedURL.toString();
+ const url = `${picture.image}?timestamp=${timestamp}`;
- let config: any = { responseType: 'arraybuffer' };
+ let config: any = {
+ responseType: 'arraybuffer',
+ };
if (this.localProxy?.enabled) {
config = {
@@ -4508,7 +4156,9 @@ export class BaileysStartupService extends ChannelStartupService {
const msg = `${description}\n\n${inviteUrl}`;
- const message = { conversation: msg };
+ const message = {
+ conversation: msg,
+ };
for await (const number of numbers) {
await this.sendMessageWithTyping(number, message);
@@ -4542,7 +4192,12 @@ export class BaileysStartupService extends ChannelStartupService {
try {
const participants = (await this.client.groupMetadata(id.groupJid)).participants;
const contacts = await this.prismaRepository.contact.findMany({
- where: { instanceId: this.instanceId, remoteJid: { in: participants.map((p) => p.id) } },
+ where: {
+ instanceId: this.instanceId,
+ remoteJid: {
+ in: participants.map((p) => p.id),
+ },
+ },
});
const parsedParticipants = participants.map((participant) => {
const contact = contacts.find((c) => c.remoteJid === participant.id);
@@ -4605,68 +4260,22 @@ export class BaileysStartupService extends ChannelStartupService {
throw new BadRequestException('Unable to leave the group', error.toString());
}
}
-
public async templateMessage() {
throw new Error('Method not available in the Baileys service');
}
- private deserializeMessageBuffers(obj: any): any {
- if (obj === null || obj === undefined) {
- return obj;
- }
-
- if (typeof obj === 'object' && !Array.isArray(obj) && !Buffer.isBuffer(obj)) {
- const keys = Object.keys(obj);
- const isIndexedObject = keys.every((key) => !isNaN(Number(key)));
-
- if (isIndexedObject && keys.length > 0) {
- const values = keys.sort((a, b) => Number(a) - Number(b)).map((key) => obj[key]);
- return new Uint8Array(values);
- }
- }
-
- // Is Buffer?, converter to Uint8Array
- if (Buffer.isBuffer(obj)) {
- return new Uint8Array(obj);
- }
-
- // Process arrays recursively
- if (Array.isArray(obj)) {
- return obj.map((item) => this.deserializeMessageBuffers(item));
- }
-
- // Process objects recursively
- if (typeof obj === 'object') {
- const converted: any = {};
- for (const key in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
- converted[key] = this.deserializeMessageBuffers(obj[key]);
- }
- }
- return converted;
- }
-
- return obj;
- }
-
private prepareMessage(message: proto.IWebMessageInfo): any {
const contentType = getContentType(message.message);
const contentMsg = message?.message[contentType] as any;
const messageRaw = {
- key: message.key, // Save key exactly as it comes from Baileys
- pushName:
- message.pushName ||
- (message.key.fromMe
- ? 'Você'
- : message?.participant || (message.key?.participant ? message.key.participant.split('@')[0] : null)),
+ key: message.key,
+ pushName: message.pushName,
status: status[message.status],
- message: this.deserializeMessageBuffers({ ...message.message }),
- contextInfo: this.deserializeMessageBuffers(contentMsg?.contextInfo),
+ message: { ...message.message },
+ contextInfo: contentMsg?.contextInfo,
messageType: contentType || 'unknown',
- messageTimestamp: Long.isLong(message.messageTimestamp)
- ? message.messageTimestamp.toNumber()
- : (message.messageTimestamp as number),
+ messageTimestamp: message.messageTimestamp as number,
instanceId: this.instanceId,
source: getDevice(message.key.id),
};
@@ -4687,19 +4296,6 @@ export class BaileysStartupService extends ChannelStartupService {
delete messageRaw.message.documentWithCaptionMessage;
}
- const quotedMessage = messageRaw?.contextInfo?.quotedMessage;
- if (quotedMessage) {
- if (quotedMessage.extendedTextMessage) {
- quotedMessage.conversation = quotedMessage.extendedTextMessage.text;
- delete quotedMessage.extendedTextMessage;
- }
-
- if (quotedMessage.documentWithCaptionMessage) {
- quotedMessage.documentMessage = quotedMessage.documentWithCaptionMessage.message.documentMessage;
- delete quotedMessage.documentWithCaptionMessage;
- }
- }
-
return messageRaw;
}
@@ -4709,22 +4305,7 @@ export class BaileysStartupService extends ChannelStartupService {
const prepare = (message: any) => this.prepareMessage(message);
this.chatwootService.syncLostMessages({ instanceName: this.instance.name }, chatwootConfig, prepare);
- // Generate ID for this cron task and store in cache
- const cronId = cuid();
- const cronKey = `chatwoot:syncLostMessages`;
- await this.chatwootService.getCache()?.hSet(cronKey, this.instance.name, cronId);
-
const task = cron.schedule('0,30 * * * *', async () => {
- // Check ID before executing (only if cache is available)
- const cache = this.chatwootService.getCache();
- if (cache) {
- const storedId = await cache.hGet(cronKey, this.instance.name);
- if (storedId && storedId !== cronId) {
- this.logger.info(`Stopping syncChatwootLostMessages cron - ID mismatch: ${cronId} vs ${storedId}`);
- task.stop();
- return;
- }
- }
this.chatwootService.syncLostMessages({ instanceName: this.instance.name }, chatwootConfig, prepare);
});
task.start();
@@ -4734,23 +4315,26 @@ export class BaileysStartupService extends ChannelStartupService {
private async updateMessagesReadedByTimestamp(remoteJid: string, timestamp?: number): Promise {
if (timestamp === undefined || timestamp === null) return 0;
- // Use raw SQL to avoid JSON path issues
- const result = await this.prismaRepository.$executeRaw`
- UPDATE "Message"
- SET "status" = ${status[4]}
- WHERE "instanceId" = ${this.instanceId}
- AND "key"->>'remoteJid' = ${remoteJid}
- AND ("key"->>'fromMe')::boolean = false
- AND "messageTimestamp" <= ${timestamp}
- AND ("status" IS NULL OR "status" = ${status[3]})
- `;
+ const result = await this.prismaRepository.message.updateMany({
+ where: {
+ AND: [
+ { key: { path: ['remoteJid'], equals: remoteJid } },
+ { key: { path: ['fromMe'], equals: false } },
+ { messageTimestamp: { lte: timestamp } },
+ {
+ OR: [{ status: null }, { status: status[3] }],
+ },
+ ],
+ },
+ data: { status: status[4] },
+ });
if (result) {
- if (result > 0) {
+ if (result.count > 0) {
this.updateChatUnreadMessages(remoteJid);
}
- return result;
+ return result.count;
}
return 0;
@@ -4759,364 +4343,24 @@ export class BaileysStartupService extends ChannelStartupService {
private async updateChatUnreadMessages(remoteJid: string): Promise {
const [chat, unreadMessages] = await Promise.all([
this.prismaRepository.chat.findFirst({ where: { remoteJid } }),
- // Use raw SQL to avoid JSON path issues
- this.prismaRepository.$queryRaw`
- SELECT COUNT(*)::int as count FROM "Message"
- WHERE "instanceId" = ${this.instanceId}
- AND "key"->>'remoteJid' = ${remoteJid}
- AND ("key"->>'fromMe')::boolean = false
- AND "status" = ${status[3]}
- `.then((result: any[]) => result[0]?.count || 0),
+ this.prismaRepository.message.count({
+ where: {
+ AND: [
+ { key: { path: ['remoteJid'], equals: remoteJid } },
+ { key: { path: ['fromMe'], equals: false } },
+ { status: { equals: status[3] } },
+ ],
+ },
+ }),
]);
if (chat && chat.unreadMessages !== unreadMessages) {
- await this.prismaRepository.chat.update({ where: { id: chat.id }, data: { unreadMessages } });
+ await this.prismaRepository.chat.update({
+ where: { id: chat.id },
+ data: { unreadMessages },
+ });
}
return unreadMessages;
}
-
- private async addLabel(labelId: string, instanceId: string, chatId: string) {
- const id = cuid();
-
- await this.prismaRepository.$executeRawUnsafe(
- `INSERT INTO "Chat" ("id", "instanceId", "remoteJid", "labels", "createdAt", "updatedAt")
- VALUES ($4, $2, $3, to_jsonb(ARRAY[$1]::text[]), NOW(), NOW()) ON CONFLICT ("instanceId", "remoteJid")
- DO
- UPDATE
- SET "labels" = (
- SELECT to_jsonb(array_agg(DISTINCT elem))
- FROM (
- SELECT jsonb_array_elements_text("Chat"."labels") AS elem
- UNION
- SELECT $1::text AS elem
- ) sub
- ),
- "updatedAt" = NOW();`,
- labelId,
- instanceId,
- chatId,
- id,
- );
- }
-
- private async removeLabel(labelId: string, instanceId: string, chatId: string) {
- const id = cuid();
-
- await this.prismaRepository.$executeRawUnsafe(
- `INSERT INTO "Chat" ("id", "instanceId", "remoteJid", "labels", "createdAt", "updatedAt")
- VALUES ($4, $2, $3, '[]'::jsonb, NOW(), NOW()) ON CONFLICT ("instanceId", "remoteJid")
- DO
- UPDATE
- SET "labels" = COALESCE (
- (
- SELECT jsonb_agg(elem)
- FROM jsonb_array_elements_text("Chat"."labels") AS elem
- WHERE elem <> $1
- ),
- '[]'::jsonb
- ),
- "updatedAt" = NOW();`,
- labelId,
- instanceId,
- chatId,
- id,
- );
- }
-
- public async baileysOnWhatsapp(jid: string) {
- const response = await this.client.onWhatsApp(jid);
-
- return response;
- }
-
- public async baileysProfilePictureUrl(jid: string, type: 'image' | 'preview', timeoutMs: number) {
- const response = await this.client.profilePictureUrl(jid, type, timeoutMs);
-
- return response;
- }
-
- public async baileysAssertSessions(jids: string[]) {
- const response = await this.client.assertSessions(jids);
-
- return response;
- }
-
- public async baileysCreateParticipantNodes(jids: string[], message: proto.IMessage, extraAttrs: any) {
- const response = await this.client.createParticipantNodes(jids, message, extraAttrs);
-
- const convertedResponse = {
- ...response,
- nodes: response.nodes.map((node: any) => ({
- ...node,
- content: node.content?.map((c: any) => ({
- ...c,
- content: c.content instanceof Uint8Array ? Buffer.from(c.content).toString('base64') : c.content,
- })),
- })),
- };
-
- return convertedResponse;
- }
-
- public async baileysSendNode(stanza: any) {
- console.log('stanza', JSON.stringify(stanza));
- const response = await this.client.sendNode(stanza);
-
- return response;
- }
-
- public async baileysGetUSyncDevices(jids: string[], useCache: boolean, ignoreZeroDevices: boolean) {
- const response = await this.client.getUSyncDevices(jids, useCache, ignoreZeroDevices);
-
- return response;
- }
-
- public async baileysGenerateMessageTag() {
- const response = await this.client.generateMessageTag();
-
- return response;
- }
-
- public async baileysSignalRepositoryDecryptMessage(jid: string, type: 'pkmsg' | 'msg', ciphertext: string) {
- try {
- const ciphertextBuffer = Buffer.from(ciphertext, 'base64');
-
- const response = await this.client.signalRepository.decryptMessage({ jid, type, ciphertext: ciphertextBuffer });
-
- return response instanceof Uint8Array ? Buffer.from(response).toString('base64') : response;
- } catch (error) {
- this.logger.error('Error decrypting message:');
- this.logger.error(error);
- throw error;
- }
- }
-
- public async baileysGetAuthState() {
- const response = { me: this.client.authState.creds.me, account: this.client.authState.creds.account };
-
- return response;
- }
-
- //Business Controller
- public async fetchCatalog(instanceName: string, data: getCollectionsDto) {
- const jid = data.number ? createJid(data.number) : this.client?.user?.id;
- const limit = data.limit || 10;
- const cursor = null;
-
- const onWhatsapp = (await this.whatsappNumber({ numbers: [jid] }))?.shift();
-
- if (!onWhatsapp.exists) {
- throw new BadRequestException(onWhatsapp);
- }
-
- try {
- const info = (await this.whatsappNumber({ numbers: [jid] }))?.shift();
- const business = await this.fetchBusinessProfile(info?.jid);
-
- let catalog = await this.getCatalog({ jid: info?.jid, limit, cursor });
- let nextPageCursor = catalog.nextPageCursor;
- let nextPageCursorJson = nextPageCursor ? JSON.parse(atob(nextPageCursor)) : null;
- let pagination = nextPageCursorJson?.pagination_cursor
- ? JSON.parse(atob(nextPageCursorJson.pagination_cursor))
- : null;
- let fetcherHasMore = pagination?.fetcher_has_more === true ? true : false;
-
- let productsCatalog = catalog.products || [];
- let countLoops = 0;
- while (fetcherHasMore && countLoops < 4) {
- catalog = await this.getCatalog({ jid: info?.jid, limit, cursor: nextPageCursor });
- nextPageCursor = catalog.nextPageCursor;
- nextPageCursorJson = nextPageCursor ? JSON.parse(atob(nextPageCursor)) : null;
- pagination = nextPageCursorJson?.pagination_cursor
- ? JSON.parse(atob(nextPageCursorJson.pagination_cursor))
- : null;
- fetcherHasMore = pagination?.fetcher_has_more === true ? true : false;
- productsCatalog = [...productsCatalog, ...catalog.products];
- countLoops++;
- }
-
- return {
- wuid: info?.jid || jid,
- numberExists: info?.exists,
- isBusiness: business.isBusiness,
- catalogLength: productsCatalog.length,
- catalog: productsCatalog,
- };
- } catch (error) {
- console.log(error);
- return { wuid: jid, name: null, isBusiness: false };
- }
- }
-
- public async getCatalog({
- jid,
- limit,
- cursor,
- }: GetCatalogOptions): Promise<{ products: Product[]; nextPageCursor: string | undefined }> {
- try {
- jid = jid ? createJid(jid) : this.instance.wuid;
-
- const catalog = await this.client.getCatalog({ jid, limit: limit, cursor: cursor });
-
- if (!catalog) {
- return { products: undefined, nextPageCursor: undefined };
- }
-
- return catalog;
- } catch (error) {
- throw new InternalServerErrorException('Error getCatalog', error.toString());
- }
- }
-
- public async fetchCollections(instanceName: string, data: getCollectionsDto) {
- const jid = data.number ? createJid(data.number) : this.client?.user?.id;
- const limit = data.limit <= 20 ? data.limit : 20; //(tem esse limite, não sei porque)
-
- const onWhatsapp = (await this.whatsappNumber({ numbers: [jid] }))?.shift();
-
- if (!onWhatsapp.exists) {
- throw new BadRequestException(onWhatsapp);
- }
-
- try {
- const info = (await this.whatsappNumber({ numbers: [jid] }))?.shift();
- const business = await this.fetchBusinessProfile(info?.jid);
- const collections = await this.getCollections(info?.jid, limit);
-
- return {
- wuid: info?.jid || jid,
- name: info?.name,
- numberExists: info?.exists,
- isBusiness: business.isBusiness,
- collectionsLength: collections?.length,
- collections: collections,
- };
- } catch {
- return { wuid: jid, name: null, isBusiness: false };
- }
- }
-
- public async getCollections(jid?: string | undefined, limit?: number): Promise {
- try {
- jid = jid ? createJid(jid) : this.instance.wuid;
-
- const result = await this.client.getCollections(jid, limit);
-
- if (!result) {
- return [{ id: undefined, name: undefined, products: [], status: undefined }];
- }
-
- return result.collections;
- } catch (error) {
- throw new InternalServerErrorException('Error getCatalog', error.toString());
- }
- }
-
- public async fetchMessages(query: Query) {
- const keyFilters = query?.where?.key as ExtendedIMessageKey;
-
- const timestampFilter = {};
- if (query?.where?.messageTimestamp) {
- if (query.where.messageTimestamp['gte'] && query.where.messageTimestamp['lte']) {
- timestampFilter['messageTimestamp'] = {
- gte: Math.floor(new Date(query.where.messageTimestamp['gte']).getTime() / 1000),
- lte: Math.floor(new Date(query.where.messageTimestamp['lte']).getTime() / 1000),
- };
- }
- }
-
- const count = await this.prismaRepository.message.count({
- where: {
- instanceId: this.instanceId,
- id: query?.where?.id,
- source: query?.where?.source,
- messageType: query?.where?.messageType,
- ...timestampFilter,
- AND: [
- keyFilters?.id ? { key: { path: ['id'], equals: keyFilters?.id } } : {},
- keyFilters?.fromMe ? { key: { path: ['fromMe'], equals: keyFilters?.fromMe } } : {},
- keyFilters?.participant ? { key: { path: ['participant'], equals: keyFilters?.participant } } : {},
- {
- OR: [
- keyFilters?.remoteJid ? { key: { path: ['remoteJid'], equals: keyFilters?.remoteJid } } : {},
- keyFilters?.remoteJidAlt ? { key: { path: ['remoteJidAlt'], equals: keyFilters?.remoteJidAlt } } : {},
- ],
- },
- ],
- },
- });
-
- if (!query?.offset) {
- query.offset = 50;
- }
-
- if (!query?.page) {
- query.page = 1;
- }
-
- const messages = await this.prismaRepository.message.findMany({
- where: {
- instanceId: this.instanceId,
- id: query?.where?.id,
- source: query?.where?.source,
- messageType: query?.where?.messageType,
- ...timestampFilter,
- AND: [
- keyFilters?.id ? { key: { path: ['id'], equals: keyFilters?.id } } : {},
- keyFilters?.fromMe ? { key: { path: ['fromMe'], equals: keyFilters?.fromMe } } : {},
- keyFilters?.participant ? { key: { path: ['participant'], equals: keyFilters?.participant } } : {},
- {
- OR: [
- keyFilters?.remoteJid ? { key: { path: ['remoteJid'], equals: keyFilters?.remoteJid } } : {},
- keyFilters?.remoteJidAlt ? { key: { path: ['remoteJidAlt'], equals: keyFilters?.remoteJidAlt } } : {},
- ],
- },
- ],
- },
- orderBy: { messageTimestamp: 'desc' },
- skip: query.offset * (query?.page === 1 ? 0 : (query?.page as number) - 1),
- take: query.offset,
- select: {
- id: true,
- key: true,
- pushName: true,
- messageType: true,
- message: true,
- messageTimestamp: true,
- instanceId: true,
- source: true,
- contextInfo: true,
- MessageUpdate: { select: { status: true } },
- },
- });
-
- const formattedMessages = messages.map((message) => {
- const messageKey = message.key as { fromMe: boolean; remoteJid: string; id: string; participant?: string };
-
- if (!message.pushName) {
- if (messageKey.fromMe) {
- message.pushName = 'Você';
- } else if (message.contextInfo) {
- const contextInfo = message.contextInfo as { participant?: string };
- if (contextInfo.participant) {
- message.pushName = contextInfo.participant.split('@')[0];
- } else if (messageKey.participant) {
- message.pushName = messageKey.participant.split('@')[0];
- }
- }
- }
-
- return message;
- });
-
- return {
- messages: {
- total: count,
- pages: Math.ceil(count / query.offset),
- currentPage: query.page,
- records: formattedMessages,
- },
- };
- }
}
diff --git a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts
index 906fff1881..370ee010e1 100644
--- a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts
+++ b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts
@@ -6,7 +6,7 @@ import { chatwootImport } from '@api/integrations/chatbot/chatwoot/utils/chatwoo
import { PrismaRepository } from '@api/repository/repository.service';
import { CacheService } from '@api/services/cache.service';
import { WAMonitoringService } from '@api/services/monitor.service';
-import { Events } from '@api/types/wa.types';
+import { Events, ExtendedIMessageKey } from '@api/types/wa.types';
import { Chatwoot, ConfigService, Database, HttpServer } from '@config/env.config';
import { Logger } from '@config/logger.config';
import ChatwootClient, {
@@ -41,6 +41,11 @@ interface ChatwootMessage {
isRead?: boolean;
}
+interface MessageBodyWithExtendedKey {
+ key: ExtendedIMessageKey;
+ [key: string]: any;
+}
+
export class ChatwootService {
private readonly logger = new Logger('ChatwootService');
@@ -236,8 +241,8 @@ export class ChatwootService {
'123456',
inboxId,
false,
- organization ? organization : 'EvolutionAPI',
- logo ? logo : 'https://evolution-api.com/files/evolution-api-favicon.png',
+ organization ? organization : 'WhatsApp Bot',
+ logo ? logo : '',
)) as any);
if (!contact) {
@@ -629,7 +634,7 @@ export class ChatwootService {
return filterPayload;
}
- public async createConversation(instance: InstanceDto, body: any) {
+ public async createConversation(instance: InstanceDto, body: MessageBodyWithExtendedKey) {
const isLid = body.key.addressingMode === 'lid';
const isGroup = body.key.remoteJid.endsWith('@g.us');
const phoneNumber = isLid && !isGroup ? body.key.remoteJidAlt : body.key.remoteJid;
@@ -1204,7 +1209,7 @@ export class ChatwootService {
const response = await axios.get(media, {
responseType: 'arraybuffer',
});
- mimeType = response.headers['content-type'];
+ mimeType = response.headers['content-type'] as string;
}
let type = 'document';
@@ -2214,7 +2219,7 @@ export class ChatwootService {
if (isAdsMessage) {
const imgBuffer = await axios.get(adsMessage.thumbnailUrl, { responseType: 'arraybuffer' });
- const extension = mimeTypes.extension(imgBuffer.headers['content-type']);
+ const extension = mimeTypes.extension(imgBuffer.headers['content-type'] as string);
const mimeType = extension && mimeTypes.lookup(extension);
if (!mimeType) {
diff --git a/src/api/routes/index.router.ts b/src/api/routes/index.router.ts
index 45c43fca5b..4bc8e78707 100644
--- a/src/api/routes/index.router.ts
+++ b/src/api/routes/index.router.ts
@@ -200,7 +200,7 @@ router
version: packageJson.version,
clientName: databaseConfig.CONNECTION.CLIENT_NAME,
manager: !serverConfig.DISABLE_MANAGER ? `${req.protocol}://${req.get('host')}/manager` : undefined,
- documentation: `https://doc.evolution-api.com`,
+ documentation: `https://github.com/jeandgardany/evolution-api#readme`,
whatsappWebVersion: (await fetchLatestWaWebVersion({})).version.join('.'),
});
})
diff --git a/src/api/types/wa.types.ts b/src/api/types/wa.types.ts
index 8f7c6a3906..83e2773234 100644
--- a/src/api/types/wa.types.ts
+++ b/src/api/types/wa.types.ts
@@ -1,6 +1,30 @@
/* eslint-disable @typescript-eslint/no-namespace */
import { JsonValue } from '@prisma/client/runtime/library';
-import { AuthenticationState, WAConnectionState } from 'baileys';
+import { AuthenticationState, Contact, proto, WAConnectionState } from 'baileys';
+
+/**
+ * LID (Linked Identity Device) extensions for Baileys types.
+ * The EvolutionAPI Baileys fork adds `remoteJidAlt` to message keys and
+ * `lidJidAlt` to contacts when the original JID uses the @lid suffix.
+ * These interfaces provide type-safe access to those fields.
+ */
+export interface LidMessageKey extends proto.IMessageKey {
+ remoteJidAlt?: string;
+}
+
+export interface LidContact extends Contact {
+ lidJidAlt?: string;
+}
+
+/**
+ * Extended message key interface for LID addressing support in integrations.
+ * Adds `addressingMode` and `participantAlt` on top of `LidMessageKey`
+ * to enable proper LID → standard JID resolution in services like Chatwoot.
+ */
+export interface ExtendedIMessageKey extends LidMessageKey {
+ addressingMode?: 'lid' | string;
+ participantAlt?: string;
+}
export enum Events {
APPLICATION_STARTUP = 'application.startup',
@@ -15,7 +39,6 @@ export enum Events {
MESSAGES_UPDATE = 'messages.update',
MESSAGES_DELETE = 'messages.delete',
SEND_MESSAGE = 'send.message',
- SEND_MESSAGE_UPDATE = 'send.message.update',
CONTACTS_SET = 'contacts.set',
CONTACTS_UPSERT = 'contacts.upsert',
CONTACTS_UPDATE = 'contacts.update',
@@ -52,10 +75,10 @@ export declare namespace wa {
pairingCode?: string;
authState?: { state: AuthenticationState; saveCreds: () => void };
name?: string;
- ownerJid?: string;
wuid?: string;
profileName?: string;
profilePictureUrl?: string;
+ ownerJid?: string;
token?: string;
number?: string;
integration?: string;
@@ -134,6 +157,16 @@ export declare namespace wa {
export type StatusMessage = 'ERROR' | 'PENDING' | 'SERVER_ACK' | 'DELIVERY_ACK' | 'READ' | 'DELETED' | 'PLAYED';
}
+/** Resolve a @lid JID to its @s.whatsapp.net alternative when available. */
+export function resolveLidJid(key: LidMessageKey): string {
+ return key.remoteJid?.includes('@lid') && key.remoteJidAlt ? key.remoteJidAlt : key.remoteJid;
+}
+
+/** Resolve a @lid contact ID to its @s.whatsapp.net alternative when available. */
+export function resolveLidContact(contact: LidContact): string {
+ return contact.id?.includes('@lid') && contact.lidJidAlt ? contact.lidJidAlt : contact.id;
+}
+
export const TypeMediaMessage = [
'imageMessage',
'documentMessage',
diff --git a/src/config/env.config.ts b/src/config/env.config.ts
index 7c4e382e7e..e19fe2f807 100644
--- a/src/config/env.config.ts
+++ b/src/config/env.config.ts
@@ -312,7 +312,7 @@ export type Webhook = {
};
};
export type Pusher = { ENABLED: boolean; GLOBAL?: GlobalPusher; EVENTS: EventsPusher };
-export type ConfigSessionPhone = { CLIENT: string; NAME: string };
+export type ConfigSessionPhone = { CLIENT: string; NAME: string; VERSION?: string };
export type QrCode = { LIMIT: number; COLOR: string };
export type Typebot = { ENABLED: boolean; API_VERSION: string; SEND_MEDIA_BASE64: boolean };
export type Chatwoot = {
diff --git a/src/utils/sendTelemetry.ts b/src/utils/sendTelemetry.ts
index b2ebe05af0..d8dc30066a 100644
--- a/src/utils/sendTelemetry.ts
+++ b/src/utils/sendTelemetry.ts
@@ -21,17 +21,18 @@ export const sendTelemetry = async (route: string): Promise => {
return;
}
+ if (!telemetryConfig.URL || telemetryConfig.URL === '') {
+ return;
+ }
+
const telemetry: TelemetryData = {
route,
apiVersion: `${packageJson.version}`,
timestamp: new Date(),
};
- const url =
- telemetryConfig.URL && telemetryConfig.URL !== '' ? telemetryConfig.URL : 'https://log.evolution-api.com/telemetry';
-
axios
- .post(url, telemetry)
+ .post(telemetryConfig.URL, telemetry)
.then(() => {})
.catch(() => {});
};