diff --git a/README.md b/README.md
index 854bda813..f8fe3985e 100644
--- a/README.md
+++ b/README.md
@@ -76,15 +76,15 @@ When a todo is completed, if this is the first completed todo, an email should b
* **Authentication**
* **Authorization** (Even at the repository level)
* **Automatic JWT renewal**
-* **gRPC query caching**
-* **Automatic client code generation using gRPC**
+* **gRPC query caching** (deprecated)
+* **Automatic client code generation using OpenAPI**
## Technologies Used - Overview
Here are listed some of the specific technologies used for the implementation of the project:
* **Authentication**: [JSON Web Tokens - JWT](https://jwt.io/)
* **Databases - Persistence**: [MongoDB](https://www.mongodb.com/), [PostgeSQL](https://www.postgresql.org/)
* **Testing**: [JEST](https://jestjs.io/)
-* **External Communication Protocols**: [REST](https://en.wikipedia.org/wiki/Representational_state_transfer), [gRPC](https://grpc.io/)
+* **External Communication Protocols**: [REST](https://en.wikipedia.org/wiki/Representational_state_transfer), [gRPC](https://grpc.io/) (deprecated)
* **Frameworks**: [ΞestJS](https://nestjs.com/)
* **PubSub technology**: [NATS](https://nats.io/)
* **Message Streaming Technology**: [JetStream](https://docs.nats.io/nats-concepts/jetstream) *by NATS*
@@ -120,14 +120,14 @@ docker compose -p bitloops-todo-app up -d
```
from the terminal inside the project **in order to download and run the necessary containers**.
-Then the ReactJS front-end application will be visible at: `http://localhost:3000`.
+Then the ReactJS front-end application will be visible at: `http://localhost:4173`.
-Frontend React JS application (new version using MVVM!)
+Frontend React JS application (new version using Vite and MVVM!)
# IV. Design Process and Decisions
@@ -241,7 +241,7 @@ You may find tutorials on how to use **Postman** for REST and gRPC requests belo
* REST ([link](https://hevodata.com/learn/postman-rest-client/))
* gRPC ([link](https://learning.postman.com/docs/sending-requests/grpc/first-grpc-request/))
-To just test the app is app and running you can just invoke `http://localhost:8082` URI with Post request as shown in the picture below:
+To just test the app is app and running you can just invoke `http://localhost:8080` URI with Post request as shown in the picture below:
@@ -258,7 +258,7 @@ A faster way to test the app works is to use **[cURL](https://curl.se/)**. In mo
To just test the app is app and running you can just run the following command on terminal:
-```curl http://localhost:8082/```
+```curl http://localhost:8080/```
The server should respond (in the terminal) with:
```{"statusCode":404,"message":"Cannot GET /auth/register","error":"Not Found"}```
@@ -420,28 +420,76 @@ Below is a summary of all the software architecture and design patterns used in
## Table of Contents
-- [Software Architecture](#software-architecture)
- - [Layered Architecture](#layered-architecture)
- - [Separation of concerns benefits example](#separation-of-concerns-benefits-example)
- - [Limitations of the classical layered architecture](#limitations-of-the-classical-layered-architecture)
- - [Modern Layered Architectures](#modern-layered-architectures)
- - [The Anti-pattern (beware)](#the-anti-pattern-beware)
- - [Hexagonal Architecture (or Clean / Onion Architecture)](#hexagonal-architecture-or-clean--onion-architecture)
- - [Ports And Adapters](#ports-and-adapters)
- - [Driven Adapters vs Driving Adapters](#driven-adapters-vs-driving-adapters)
- - [Inversion of Control](#inversion-of-control)
-- [Domain Driven Design (DDD)](#domain-driven-design-ddd)
- - [Key advantages of using DDD](#key-advantages-of-using-ddd)
- - [Strategic and Tactical DDD](#strategic-and-tactical-ddd)
+- [ddd-hexagonal-cqrs-es-eda](#ddd-hexagonal-cqrs-es-eda)
+- [Table of Contents](#table-of-contents)
+- [I. Introduction](#i-introduction)
+ - [Overview](#overview)
+ - [Todo application business requirements](#todo-application-business-requirements)
+- [II. Technologies and Technical Features](#ii-technologies-and-technical-features)
+ - [Technical Features](#technical-features)
+ - [Technologies Used - Overview](#technologies-used---overview)
+- [III. Quick start - running the ToDo App](#iii-quick-start---running-the-todo-app)
+ - [Prerequisites](#prerequisites)
+ - [Running the app](#running-the-app)
+- [IV. Design Process and Decisions](#iv-design-process-and-decisions)
+ - [Design Process - Event Storming](#design-process---event-storming)
+ - [Design Decisions](#design-decisions)
+- [V. Running in development mode](#v-running-in-development-mode)
+ - [A. Project Setup](#a-project-setup)
+ - [Prerequisites](#prerequisites-1)
+ - [Running the app](#running-the-app-1)
+ - [B. Application Validation](#b-application-validation)
+ - [Test the application is running](#test-the-application-is-running)
+ - [Postman](#postman)
+ - [cURL (only for initial testing)](#curl-only-for-initial-testing)
+ - [Running the application tests](#running-the-application-tests)
+ - [C. Understanding the project structure](#c-understanding-the-project-structure)
+ - [API Folder](#api-folder)
+ - [Bounded-Contexts Folder](#bounded-contexts-folder)
+ - [Config Folder](#config-folder)
+ - [Lib Folder](#lib-folder)
+ - [Module Structure](#module-structure)
+ - [Application Folder](#application-folder)
+ - [Commands folder](#commands-folder)
+ - [Queries folder](#queries-folder)
+ - [Domain folder](#domain-folder)
+ - [Contracts folder](#contracts-folder)
+ - [Ports folder](#ports-folder)
+ - [Tests folder](#tests-folder)
+ - [proto folder](#proto-folder)
+- [VI. Conclusion](#vi-conclusion)
+ - [β Questions](#-questions)
+- [π Theoretical Review](#-theoretical-review)
+ - [Table of Contents](#table-of-contents-1)
+ - [Software Architecture](#software-architecture)
+ - [Layered Architecture](#layered-architecture)
+ - [Separation of concerns benefits example](#separation-of-concerns-benefits-example)
+ - [Limitations of the classical layered architecture](#limitations-of-the-classical-layered-architecture)
+ - [Modern Layered Architectures](#modern-layered-architectures)
+ - [The Anti-pattern (beware)](#the-anti-pattern-beware)
+ - [Hexagonal Architecture (or Clean / Onion Architecture)](#hexagonal-architecture-or-clean--onion-architecture)
+ - [Ports And Adapters](#ports-and-adapters)
+ - [Driven Adapters vs Driving Adapters](#driven-adapters-vs-driving-adapters)
+ - [Inversion of Control](#inversion-of-control)
+ - [Domain Driven Design (DDD)](#domain-driven-design-ddd)
+ - [Key advantages of using DDD](#key-advantages-of-using-ddd)
+ - [Strategic and Tactical DDD](#strategic-and-tactical-ddd)
+ - [Strategic: Building a Domain Model](#strategic-building-a-domain-model)
+ - [Tactically: Implementing DDD](#tactically-implementing-ddd)
- [DDD \& Hexagonal Architecture are Complementary](#ddd--hexagonal-architecture-are-complementary)
-- [Behavior Driven Development (BDD)](#behavior-driven-development-bdd)
-- [Event-Driven Architecture](#event-driven-architecture)
-- [Command and Query Responsibility Segregation (CQRS)](#command-and-query-responsibility-segregation-cqrs)
-- [Event Sourcing (ES)](#event-sourcing-es)
-- [Eventual Consistency](#eventual-consistency)
-- [Event Storming](#event-storming)
-- [π Bringing this all together!](#-bringing-this-all-together)
-- [π Contributing](#-contributing)
+ - [Behavior Driven Development (BDD)](#behavior-driven-development-bdd)
+ - [Event-Driven Architecture](#event-driven-architecture)
+ - [Command and Query Responsibility Segregation (CQRS)](#command-and-query-responsibility-segregation-cqrs)
+ - [Event Sourcing (ES)](#event-sourcing-es)
+ - [Eventual Consistency](#eventual-consistency)
+ - [Event Storming](#event-storming)
+ - [Big Picture Event Storming](#big-picture-event-storming)
+ - [Process Level Event Storming](#process-level-event-storming)
+ - [Design Level Event Storming](#design-level-event-storming)
+ - [Event Storming Syntax](#event-storming-syntax)
+ - [More on Event Storming](#more-on-event-storming)
+ - [π Bringing this all together!](#-bringing-this-all-together)
+ - [π Contributing](#-contributing)
- [π¨βπ» Additional learning resources](#-additional-learning-resources)
- [Articles](#articles)
- [Blogs](#blogs)
diff --git a/backend/Dockerfile b/backend/Dockerfile
index 569b89f16..454601642 100644
--- a/backend/Dockerfile
+++ b/backend/Dockerfile
@@ -24,10 +24,10 @@ ENV NATS_HOST bl-nats
ENV GRAFANA_ADMIN_USER admin
ENV GRAFANA_ADMIN_PASSWORD admin
ENV NODE_ENV production
-ENV AUTH_URL "http://todo-backend:8082/auth/login"
-ENV PROXY_URL "http://todo-backend:8080"
-ENV REGISTRATION_URL "http://todo-backend:8082/auth/register"
+ENV AUTH_URL "http://todo-backend:8080/auth/login"
+ENV TODO_URL "http://todo-backend:8080"
+ENV REGISTRATION_URL "http://todo-backend:8080/auth/register"
# Expose the port on which the app will be running (3000 is the default that `serve` uses)
-EXPOSE 8081 8082
+EXPOSE 8080
# Start the app
CMD [ "yarn", "start:prod" ]
\ No newline at end of file
diff --git a/backend/frontend-development.docker-compose.yml b/backend/frontend-development.docker-compose.yml
index 65407d3db..55ba13e07 100644
--- a/backend/frontend-development.docker-compose.yml
+++ b/backend/frontend-development.docker-compose.yml
@@ -5,8 +5,7 @@ services:
build:
context: .
ports:
- - '8081:8081'
- - '8082:8082'
+ - '8080:8080'
networks:
- bitloops
diff --git a/backend/package.json b/backend/package.json
index d576ece9c..ad13e1aaa 100644
--- a/backend/package.json
+++ b/backend/package.json
@@ -1,6 +1,6 @@
{
"name": "todo",
- "version": "0.1.3",
+ "version": "0.2.0",
"description": "Todo Backend using Domain Driven Design (DDD), Hexagonal Architecture, CQRS, Event Sourcing (ES), Event Driven Architecture (EDA), Behaviour Driven Development (BDD) using TypeScript and NestJS. Like what you see? Don't forget to star! β",
"author": "Bitloops S.A.",
"private": false,
@@ -27,31 +27,41 @@
},
"dependencies": {
"@bitloops/bl-boilerplate-core": "^0.3.6",
- "@bitloops/bl-boilerplate-infra-mongo": "^0.1.2",
- "@bitloops/bl-boilerplate-infra-nest-auth-passport": "^0.1.4",
- "@bitloops/bl-boilerplate-infra-nest-jetstream": "^0.0.8",
- "@bitloops/bl-boilerplate-infra-postgres": "^0.1.1",
- "@bitloops/bl-boilerplate-infra-telemetry": "^0.1.3",
+ "@fastify/autoload": "^6.3.1",
+ "@fastify/cors": "^11.0.1",
+ "@fastify/helmet": "^13.0.1",
+ "@fastify/swagger": "^9.5.1",
+ "@fastify/swagger-ui": "^5.2.3",
"@grpc/grpc-js": "^1.8.13",
- "@nestjs/common": "^9.4.0",
- "@nestjs/config": "^2.3.1",
- "@nestjs/core": "^9.0.0",
- "@nestjs/microservices": "^9.3.10",
- "@nestjs/platform-fastify": "^9.4.0",
+ "@nestjs/cli": "^11.0.7",
+ "@nestjs/common": "^11.1.3",
+ "@nestjs/config": "^4.0.2",
+ "@nestjs/core": "^11.1.3",
+ "@nestjs/event-emitter": "^3.0.1",
+ "@nestjs/jwt": "^11.0.0",
+ "@nestjs/microservices": "^11.1.3",
+ "@nestjs/passport": "^11.0.5",
+ "@nestjs/platform-fastify": "^11.1.3",
+ "@nestjs/schematics": "^11.0.5",
+ "@nestjs/swagger": "^11.2.0",
+ "@nestjs/testing": "^11.1.3",
+ "async-mutex": "^0.5.0",
+ "bcrypt": "^6.0.0",
"class-transformer": "^0.5.1",
"class-validator": "^0.14.0",
+ "fastify": "^5.4.0",
"google-protobuf": "^3.21.2",
"jsonwebtoken": "^9.0.0",
"mongodb": "^6.3.0",
"nats": "^2.13.1",
+ "passport-jwt": "^4.0.1",
+ "passport-local": "^1.0.0",
+ "pg": "^8.16.2",
"reflect-metadata": "^0.1.13",
"rxjs": "^7.8.0",
"uuid": "^9.0.0"
},
"devDependencies": {
- "@nestjs/cli": "^9.0.0",
- "@nestjs/schematics": "^9.0.0",
- "@nestjs/testing": "^9.0.0",
"@types/google-protobuf": "^3.15.6",
"@types/jest": "29.5.12",
"@types/jsonwebtoken": "^9.0.1",
@@ -62,8 +72,8 @@
"eslint": "^8.0.1",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^4.0.0",
- "grpc-tools": "^1.12.4",
"grpc_tools_node_protoc_ts": "^5.3.3",
+ "grpc-tools": "^1.12.4",
"jest": "29.7.0",
"passport": "^0.6.0",
"prettier": "^2.3.2",
@@ -74,7 +84,7 @@
"ts-loader": "^9.2.3",
"ts-node": "^10.0.0",
"tsconfig-paths": "4.2.0",
- "typescript": "4.9.5"
+ "typescript": "^5.8.3"
},
"jest": {
"moduleFileExtensions": [
diff --git a/backend/src/api/api.module.ts b/backend/src/api/api.module.ts
index 9560ab3e1..54361d938 100644
--- a/backend/src/api/api.module.ts
+++ b/backend/src/api/api.module.ts
@@ -2,21 +2,22 @@ import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { AuthController } from './authentication.controller';
import { TodoController } from './todo.rest.controller';
-import { TodoGrpcController } from './todo.grpc.controller';
+import { TodoSSEController } from './todo.sse.controller';
import {
JetstreamModule,
NatsStreamingIntegrationEventBus,
NatsStreamingMessageBus,
-} from '@bitloops/bl-boilerplate-infra-nest-jetstream';
+} from '@lib/infra/nest-jetstream';
import configuration from '@src/config/configuration';
import authConfiguration, {
AuthEnvironmentVariables,
} from '@src/config/auth.configuration';
-import { AuthModule } from '@bitloops/bl-boilerplate-infra-nest-auth-passport';
+import { AuthModule } from '@lib/infra/nest-auth-passport';
import {
// CorrelationIdMiddleware,
TracingModule,
-} from '@bitloops/bl-boilerplate-infra-telemetry';
+} from '@lib/infra/telemetry';
+import { SSEModule } from './sse.module';
@Module({
imports: [
@@ -60,12 +61,12 @@ import {
}`,
],
}),
-
+ SSEModule,
TracingModule.register({
messageBus: NatsStreamingMessageBus,
}),
],
- controllers: [AuthController, TodoController, TodoGrpcController],
+ controllers: [AuthController, TodoController, TodoSSEController],
})
// implements NestModule
export class ApiModule {
diff --git a/backend/src/api/authentication.controller.ts b/backend/src/api/authentication.controller.ts
index 2dabe6270..a2cd2efed 100644
--- a/backend/src/api/authentication.controller.ts
+++ b/backend/src/api/authentication.controller.ts
@@ -1,18 +1,18 @@
import {
Body,
Controller,
- Get,
Post,
Request,
UseGuards,
Inject,
HttpStatus,
HttpException,
+ Patch,
} from '@nestjs/common';
import { ChangeEmailCommand } from '@src/lib/bounded-contexts/iam/authentication/commands/change-email.command';
-import { UpdateEmailDTO } from './dto/update-email.dto';
-import { RegisterDTO } from './dto/register.dto';
-import { BUSES_TOKENS } from '@bitloops/bl-boilerplate-infra-nest-jetstream';
+import { UpdateEmailRequestDto } from './dto/update-email.dto';
+import { RegisterRequestDto } from './dto/register.dto';
+import { BUSES_TOKENS } from '@lib/infra/nest-jetstream';
import {
Application,
Infra,
@@ -22,8 +22,8 @@ import {
AuthService,
JwtAuthGuard,
LocalAuthGuard,
-} from '@bitloops/bl-boilerplate-infra-nest-auth-passport';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+} from '@lib/infra/nest-auth-passport';
+import { Traceable } from '@lib/infra/telemetry';
@Controller('auth')
export class AuthController {
@@ -50,8 +50,8 @@ export class AuthController {
}
@UseGuards(JwtAuthGuard)
- @Post('updateEmail')
- async updateEmail(@Request() req, @Body() dto: UpdateEmailDTO) {
+ @Patch('updateEmail')
+ async updateEmail(@Request() req, @Body() dto: UpdateEmailRequestDto) {
console.log('req', req.user);
const command = new ChangeEmailCommand({
email: dto.email,
@@ -63,7 +63,7 @@ export class AuthController {
}
@Post('register')
- async register(@Body() body: RegisterDTO) {
+ async register(@Body() body: RegisterRequestDto) {
const user = { email: body.email, password: body.password };
const result = await this.authService.register(user);
// const command = new RegisterCommand({
diff --git a/backend/src/api/dto/add-todo.dto.ts b/backend/src/api/dto/add-todo.dto.ts
index 67b85c072..5d4c0457b 100644
--- a/backend/src/api/dto/add-todo.dto.ts
+++ b/backend/src/api/dto/add-todo.dto.ts
@@ -1,6 +1,8 @@
import { IsString, IsNotEmpty } from 'class-validator';
+import { ApiProperty } from '@nestjs/swagger';
-export class AddTodoDto {
+export class AddTodoRequestDto {
+ @ApiProperty({ description: 'The title of the todo' })
@IsNotEmpty()
@IsString()
title: string;
diff --git a/backend/src/api/dto/complete-todo.dto.ts b/backend/src/api/dto/complete-todo.dto.ts
deleted file mode 100644
index a046f89a9..000000000
--- a/backend/src/api/dto/complete-todo.dto.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export interface CompleteTodoDto {
- todoId: string;
-}
diff --git a/backend/src/api/dto/get-all-todos.dto.ts b/backend/src/api/dto/get-all-todos.dto.ts
new file mode 100644
index 000000000..e11587009
--- /dev/null
+++ b/backend/src/api/dto/get-all-todos.dto.ts
@@ -0,0 +1,37 @@
+import { ApiProperty } from '@nestjs/swagger';
+import { TodoReadModel } from '@src/lib/bounded-contexts/todo/todo/domain/todo.read-model';
+
+export class TodoDto {
+ @ApiProperty({ description: 'The unique identifier of the todo' })
+ id: string;
+
+ @ApiProperty({ description: 'The title of the todo' })
+ title: string;
+
+ @ApiProperty({ description: 'The completion status of the todo' })
+ completed: boolean;
+
+ @ApiProperty({ description: 'The creation timestamp of the todo' })
+ createdAt: number;
+
+ @ApiProperty({ description: 'The last update timestamp of the todo', required: false })
+ updatedAt?: number;
+}
+
+export class GetAllTodosResponseDto {
+ @ApiProperty({
+ type: [TodoDto],
+ description: 'Array of todo items'
+ })
+ todos: TodoDto[];
+
+ constructor(todos: TodoReadModel[]) {
+ this.todos = todos.map(todo => ({
+ id: todo.id,
+ title: todo.title,
+ completed: todo.completed,
+ createdAt: Date.now(),
+ updatedAt: Date.now(),
+ }));
+ }
+}
diff --git a/backend/src/api/dto/modify-todo-title.dto.ts b/backend/src/api/dto/modify-todo-title.dto.ts
new file mode 100644
index 000000000..8022ae2f3
--- /dev/null
+++ b/backend/src/api/dto/modify-todo-title.dto.ts
@@ -0,0 +1,14 @@
+import { IsNotEmpty, IsString, IsUUID, MaxLength } from 'class-validator';
+import { ApiProperty } from '@nestjs/swagger';
+
+export class ModifyTodoTitleRequestDto {
+ @ApiProperty({ description: 'The unique identifier of the todo' })
+ @IsUUID(4, { message: 'Invalid UUID format' })
+ id: string;
+
+ @ApiProperty({ description: 'The new title of the todo' })
+ @IsString()
+ @IsNotEmpty()
+ @MaxLength(100, { message: 'Title must be less than 100 characters' })
+ title: string;
+}
diff --git a/backend/src/api/dto/register.dto.ts b/backend/src/api/dto/register.dto.ts
index 85fe35ae1..9fcddf5bb 100644
--- a/backend/src/api/dto/register.dto.ts
+++ b/backend/src/api/dto/register.dto.ts
@@ -1,10 +1,13 @@
import { IsEmail, IsString, IsNotEmpty } from 'class-validator';
+import { ApiProperty } from '@nestjs/swagger';
-export class RegisterDTO {
+export class RegisterRequestDto {
+ @ApiProperty({ description: 'The email address' })
@IsEmail()
@IsNotEmpty()
readonly email: string;
+ @ApiProperty({ description: 'The password' })
@IsString()
@IsNotEmpty()
readonly password: string;
diff --git a/backend/src/api/dto/update-email.dto.ts b/backend/src/api/dto/update-email.dto.ts
index a69553691..9937d3c54 100644
--- a/backend/src/api/dto/update-email.dto.ts
+++ b/backend/src/api/dto/update-email.dto.ts
@@ -1,3 +1,6 @@
-export interface UpdateEmailDTO {
+import { ApiProperty } from '@nestjs/swagger';
+
+export class UpdateEmailRequestDto {
+ @ApiProperty({ description: 'The new email address' })
email: string;
}
diff --git a/backend/src/api/pub-sub-handlers/todo-added.integration-handler.ts b/backend/src/api/pub-sub-handlers/todo-added.integration-handler.ts
index c15ccbdab..69fb485e8 100644
--- a/backend/src/api/pub-sub-handlers/todo-added.integration-handler.ts
+++ b/backend/src/api/pub-sub-handlers/todo-added.integration-handler.ts
@@ -1,7 +1,7 @@
import { Application, ok, Either } from '@bitloops/bl-boilerplate-core';
import { TodoAddedIntegrationEvent } from '@src/lib/bounded-contexts/todo/todo/contracts/integration-events/todo-added.integration-event';
import { todo } from '../../proto/generated/todo';
-import { Subscriptions, Subscribers } from '../todo.grpc.controller';
+import { Subscriptions, Subscribers } from '../todo.sse.controller';
export class TodoAddedPubSubIntegrationEventHandler
implements Application.IHandleIntegrationEvent
@@ -31,35 +31,19 @@ export class TodoAddedPubSubIntegrationEventHandler
const { payload } = event;
const { userId } = payload;
- // console.log('TodoIntegrationEvent', event);
- // console.log('subscritpions', this.subscriptions);
- // console.log('subscribers', this.subscribers);
- // const call = this.subscribers[userId]?.call;
- // console.log('call', call);
+
const subscription =
this.subscriptions[TodoAddedPubSubIntegrationEventHandler.name];
const subscriptionsSubscribers = subscription?.subscribers;
- console.log('found subscribers', subscriptionsSubscribers);
if (subscriptionsSubscribers) {
for (const subscriber of subscriptionsSubscribers) {
const call = this.subscribers[subscriber]?.call;
- console.log('subscriber call', !!call);
if (call) {
- const todoObject = new todo.Todo({
+ call('todo.added', {
id: payload.todoId,
title: payload.title,
- completed: false, // data.completed, // put completed in schema?
- });
- // console.log({ todoObject });
- const message = new todo.OnEvent({
- onAdded: todoObject,
- });
- call.write(message as any);
- // const subscriberIds = Object.keys(this.subscribers);
- // for (const subscriberId of subscriberIds) {
- // const subscriber = this.subscribers[subscriberId];
- // const call = subscriber.call;
- // }
+ completed: false,
+ }, userId);
}
}
}
diff --git a/backend/src/api/pub-sub-handlers/todo-completed.integration-handler.ts b/backend/src/api/pub-sub-handlers/todo-completed.integration-handler.ts
index daae22fa4..438563fa7 100644
--- a/backend/src/api/pub-sub-handlers/todo-completed.integration-handler.ts
+++ b/backend/src/api/pub-sub-handlers/todo-completed.integration-handler.ts
@@ -1,7 +1,7 @@
import { Application, ok, Either } from '@bitloops/bl-boilerplate-core';
import { TodoCompletedIntegrationEvent } from '@src/lib/bounded-contexts/todo/todo/contracts/integration-events/todo-completed.integration-event';
import { todo } from '../../proto/generated/todo';
-import { Subscriptions, Subscribers } from '../todo.grpc.controller';
+import { Subscriptions, Subscribers } from '../todo.sse.controller';
export class TodoCompletedPubSubIntegrationEventHandler
implements Application.IHandleIntegrationEvent
@@ -31,34 +31,18 @@ export class TodoCompletedPubSubIntegrationEventHandler
const { payload } = event;
const { userId } = payload;
- // console.log('TodoIntegrationEvent', event);
- // console.log('subscritpions', this.subscriptions);
- // console.log('subscribers', this.subscribers);
- // const call = this.subscribers[userId]?.call;
- // console.log('call', call);
+
const subscription =
this.subscriptions[TodoCompletedPubSubIntegrationEventHandler.name];
const subscriptionsSubscribers = subscription?.subscribers;
- console.log('found subscribers', subscriptionsSubscribers);
if (subscriptionsSubscribers) {
for (const subscriber of subscriptionsSubscribers) {
const call = this.subscribers[subscriber]?.call;
- console.log('subscriber call', !!call);
if (call) {
- const todoObject = new todo.Todo({
+ call('todo.completed', {
id: payload.todoId,
userId: userId,
- });
- // console.log({ todoObject });
- const message = new todo.OnEvent({
- onCompleted: todoObject,
- });
- call.write(message as any);
- // const subscriberIds = Object.keys(this.subscribers);
- // for (const subscriberId of subscriberIds) {
- // const subscriber = this.subscribers[subscriberId];
- // const call = subscriber.call;
- // }
+ }, userId);
}
}
}
diff --git a/backend/src/api/pub-sub-handlers/todo-deleted.integration-handler.ts b/backend/src/api/pub-sub-handlers/todo-deleted.integration-handler.ts
index 6cd4f8402..a62014ac9 100644
--- a/backend/src/api/pub-sub-handlers/todo-deleted.integration-handler.ts
+++ b/backend/src/api/pub-sub-handlers/todo-deleted.integration-handler.ts
@@ -1,7 +1,7 @@
import { Application, ok, Either } from '@bitloops/bl-boilerplate-core';
import { TodoDeletedIntegrationEvent } from '@src/lib/bounded-contexts/todo/todo/contracts/integration-events/todo-deleted.integration-event';
import { todo } from '../../proto/generated/todo';
-import { Subscriptions, Subscribers } from '../todo.grpc.controller';
+import { Subscriptions, Subscribers } from '../todo.sse.controller';
export class TodoDeletedPubSubIntegrationEventHandler
implements Application.IHandleIntegrationEvent
@@ -45,20 +45,11 @@ export class TodoDeletedPubSubIntegrationEventHandler
const call = this.subscribers[subscriber]?.call;
console.log('subscriber call', !!call);
if (call) {
- const todoObject = new todo.Todo({
+ // console.log({ todoObject });
+ call('todo.deleted', {
id: payload.todoId,
userId: userId,
- });
- // console.log({ todoObject });
- const message = new todo.OnEvent({
- onDeleted: todoObject,
- });
- call.write(message as any);
- // const subscriberIds = Object.keys(this.subscribers);
- // for (const subscriberId of subscriberIds) {
- // const subscriber = this.subscribers[subscriberId];
- // const call = subscriber.call;
- // }
+ }, userId);
}
}
}
diff --git a/backend/src/api/pub-sub-handlers/todo-modified-title.integration-handler.ts b/backend/src/api/pub-sub-handlers/todo-modified-title.integration-handler.ts
index 314791d49..9772e28d7 100644
--- a/backend/src/api/pub-sub-handlers/todo-modified-title.integration-handler.ts
+++ b/backend/src/api/pub-sub-handlers/todo-modified-title.integration-handler.ts
@@ -1,7 +1,7 @@
import { Application, ok, Either } from '@bitloops/bl-boilerplate-core';
import { TodoModifiedTitleIntegrationEvent } from '@src/lib/bounded-contexts/todo/todo/contracts/integration-events/todo-modified-title.integration-event';
import { todo } from '../../proto/generated/todo';
-import { Subscriptions, Subscribers } from '../todo.grpc.controller';
+import { Subscriptions, Subscribers } from '../todo.sse.controller';
export class TodoModifiedTitlePubSubIntegrationEventHandler
implements Application.IHandleIntegrationEvent
@@ -31,11 +31,7 @@ export class TodoModifiedTitlePubSubIntegrationEventHandler
const { payload } = event;
const { userId } = payload;
- // console.log('TodoIntegrationEvent', event);
- // console.log('subscritpions', this.subscriptions);
- // console.log('subscribers', this.subscribers);
- // const call = this.subscribers[userId]?.call;
- // console.log('call', call);
+
const subscription =
this.subscriptions[TodoModifiedTitlePubSubIntegrationEventHandler.name];
const subscriptionsSubscribers = subscription?.subscribers;
@@ -45,21 +41,11 @@ export class TodoModifiedTitlePubSubIntegrationEventHandler
const call = this.subscribers[subscriber]?.call;
console.log('subscriber call', !!call);
if (call) {
- const todoObject = new todo.Todo({
+ call('todo.modified_title', {
id: payload.todoId,
userId: userId,
title: payload.title,
- });
- // console.log({ todoObject });
- const message = new todo.OnEvent({
- onModifiedTitle: todoObject,
- });
- call.write(message as any);
- // const subscriberIds = Object.keys(this.subscribers);
- // for (const subscriberId of subscriberIds) {
- // const subscriber = this.subscribers[subscriberId];
- // const call = subscriber.call;
- // }
+ }, userId);
}
}
}
diff --git a/backend/src/api/pub-sub-handlers/todo-uncompleted.integration-handler.ts b/backend/src/api/pub-sub-handlers/todo-uncompleted.integration-handler.ts
index 5b119d2a4..9ba4aa0df 100644
--- a/backend/src/api/pub-sub-handlers/todo-uncompleted.integration-handler.ts
+++ b/backend/src/api/pub-sub-handlers/todo-uncompleted.integration-handler.ts
@@ -1,7 +1,7 @@
import { Application, ok, Either } from '@bitloops/bl-boilerplate-core';
import { TodoUncompletedIntegrationEvent } from '@src/lib/bounded-contexts/todo/todo/contracts/integration-events/todo-uncompleted.integration-event';
import { todo } from '../../proto/generated/todo';
-import { Subscriptions, Subscribers } from '../todo.grpc.controller';
+import { Subscriptions, Subscribers } from '../todo.sse.controller';
export class TodoUncompletedPubSubIntegrationEventHandler
implements Application.IHandleIntegrationEvent
@@ -45,20 +45,10 @@ export class TodoUncompletedPubSubIntegrationEventHandler
const call = this.subscribers[subscriber]?.call;
console.log('subscriber call', !!call);
if (call) {
- const todoObject = new todo.Todo({
+ call('todo.uncompleted', {
id: payload.todoId,
userId: userId,
- });
- // console.log({ todoObject });
- const message = new todo.OnEvent({
- onUncompleted: todoObject,
- });
- call.write(message as any);
- // const subscriberIds = Object.keys(this.subscribers);
- // for (const subscriberId of subscriberIds) {
- // const subscriber = this.subscribers[subscriberId];
- // const call = subscriber.call;
- // }
+ }, userId);
}
}
}
diff --git a/backend/src/api/sse.module.ts b/backend/src/api/sse.module.ts
new file mode 100644
index 000000000..3995c8464
--- /dev/null
+++ b/backend/src/api/sse.module.ts
@@ -0,0 +1,79 @@
+import { Module } from '@nestjs/common';
+import { EventEmitterModule } from '@nestjs/event-emitter';
+import { TodoSSEController } from './todo.sse.controller';
+import { ConfigModule } from '@nestjs/config';
+import { AuthModule } from '@lib/infra/nest-auth-passport';
+import configuration from '@src/config/configuration';
+import authConfiguration, {
+ AuthEnvironmentVariables,
+} from '@src/config/auth.configuration';
+import { ConfigService } from '@nestjs/config';
+import {
+ JetstreamModule,
+ NatsStreamingIntegrationEventBus,
+} from '@lib/infra/nest-jetstream';
+
+@Module({
+ imports: [
+ EventEmitterModule.forRoot({
+ // Set this to true to use wildcards
+ wildcard: false,
+ // The delimiter used to segment namespaces
+ delimiter: '.',
+ // Set this to `true` if you want to emit the newListener event
+ newListener: false,
+ // Set this to `true` if you want to emit the removeListener event
+ removeListener: false,
+ // The maximum amount of listeners that can be assigned to an event
+ maxListeners: 10,
+ // Show event name in memory leak message when more than maximum amount of listeners is assigned
+ verboseMemoryLeak: false,
+ // Disable throwing uncaughtException if an error event is emitted and it has no listeners
+ ignoreErrors: false,
+ }),
+ ConfigModule.forRoot({
+ isGlobal: true,
+ envFilePath: '.development.env', // TODO make dynamic
+ load: [configuration, authConfiguration],
+ }),
+ AuthModule.forRootAsync({
+ jwtOptions: {
+ useFactory: (
+ configService: ConfigService,
+ ) => ({
+ secret: configService.get('jwtSecret'),
+ signOptions: {
+ expiresIn: `${configService.get('JWT_LIFETIME_SECONDS')}s`,
+ },
+ }),
+ inject: [ConfigService],
+ },
+ postgresOptions: {
+ useFactory: (
+ configService: ConfigService,
+ ) => ({
+ database: configService.get('database.database', { infer: true }),
+ host: configService.get('database.host', { infer: true }),
+ port: configService.get('database.port', { infer: true }),
+ user: configService.get('database.user', { infer: true }),
+ password: configService.get('database.password', { infer: true }),
+ max: 20,
+ }),
+ inject: [ConfigService],
+ },
+ // TODO fix this
+ integrationEventBus: NatsStreamingIntegrationEventBus as any,
+ }),
+ JetstreamModule.forRoot({
+ servers: [
+ `nats://${process.env.NATS_HOST ?? 'localhost'}:${
+ process.env.NATS_PORT ?? 4222
+ }`,
+ ],
+ }),
+ ],
+ controllers: [],
+ providers: [],
+ exports: [],
+})
+export class SSEModule {}
diff --git a/backend/src/api/todo.grpc.controller.ts b/backend/src/api/todo.grpc.controller.ts
deleted file mode 100644
index c5b482fd9..000000000
--- a/backend/src/api/todo.grpc.controller.ts
+++ /dev/null
@@ -1,515 +0,0 @@
-import {
- Controller,
- Inject,
- Injectable,
- UseGuards,
- UseInterceptors,
-} from '@nestjs/common';
-import { RpcException, GrpcMethod } from '@nestjs/microservices';
-import { ConfigService } from '@nestjs/config';
-import { Metadata, ServerWritableStream } from '@grpc/grpc-js';
-import { v4 as uuid } from 'uuid';
-import * as jwtwebtoken from 'jsonwebtoken';
-import {
- BUSES_TOKENS,
- NatsPubSubIntegrationEventsBus,
-} from '@bitloops/bl-boilerplate-infra-nest-jetstream';
-import {
- AsyncLocalStorageInterceptor,
- JwtGrpcAuthGuard,
-} from '@bitloops/bl-boilerplate-infra-nest-auth-passport';
-import { Infra, asyncLocalStorage } from '@bitloops/bl-boilerplate-core';
-import { CorrelationIdInterceptor } from '@bitloops/bl-boilerplate-infra-telemetry';
-import { GetTodosQuery } from '@src/lib/bounded-contexts/todo/todo/queries/get-todos.query';
-import { CompleteTodoCommand } from '@src/lib/bounded-contexts/todo/todo/commands/complete-todo.command';
-import { UncompleteTodoCommand } from '@src/lib/bounded-contexts/todo/todo/commands/uncomplete-todo.command';
-import { ModifyTodoTitleCommand } from '@src/lib/bounded-contexts/todo/todo/commands/modify-todo-title.command';
-import { DeleteTodoCommand } from '@src/lib/bounded-contexts/todo/todo/commands/delete-todo.command';
-import { AuthEnvironmentVariables } from '@src/config/auth.configuration';
-
-import { todo } from '../proto/generated/todo';
-import { AddTodoCommand } from '@src/lib/bounded-contexts/todo/todo/commands/add-todo.command';
-import { TodoAddedPubSubIntegrationEventHandler } from './pub-sub-handlers/todo-added.integration-handler';
-import { TodoDeletedPubSubIntegrationEventHandler } from './pub-sub-handlers/todo-deleted.integration-handler';
-import { TodoCompletedPubSubIntegrationEventHandler } from './pub-sub-handlers/todo-completed.integration-handler';
-import { TodoUncompletedPubSubIntegrationEventHandler } from './pub-sub-handlers/todo-uncompleted.integration-handler';
-import { TodoModifiedTitlePubSubIntegrationEventHandler } from './pub-sub-handlers/todo-modified-title.integration-handler';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
-
-export type Subscribers = {
- [subscriberId: string]: {
- timestamp: number;
- call?: ServerWritableStream;
- authToken: string;
- userId: string;
- };
-};
-const subscribers: Subscribers = {};
-
-export type Subscriptions = {
- [integrationEvent: string]: {
- subscribers: string[];
- };
-};
-const subscriptions: Subscriptions = {};
-
-// Every 30 seconds, we check if a subscriber has been inactive for more than 1 minute
-// If so, we end their call and promise and remove them from the subscribers list
-setInterval(() => {
- const subscriberIds = Object.keys(subscribers);
- for (const subscriberId of subscriberIds) {
- const subscriber = subscribers[subscriberId];
- if (subscriber.timestamp < Date.now() - 600 * 1000) {
- subscriber.call?.end();
- delete subscribers[subscriberId];
- }
- }
-}, 30 * 1000);
-
-async function subscribe(
- subscriberId: string,
- topics: string[],
- call: ServerWritableStream,
- resolveSubscription: (value: unknown) => void,
-) {
- const ctx = asyncLocalStorage.getStore()?.get('context');
- await new Promise((resolve) => {
- call.on('end', () => {
- resolveSubscription(true);
- resolve(true);
- });
-
- call.on('error', () => {
- resolveSubscription(true);
- resolve(true);
- });
-
- call.on('close', () => {
- resolveSubscription(true);
- resolve(true);
- });
-
- call.on('finish', () => {
- resolveSubscription(true);
- resolve(true);
- });
- subscribers[subscriberId] = {
- timestamp: Date.now(),
- call,
- authToken: ctx.jwt,
- userId: ctx.userId,
- };
- topics.forEach((topic) => {
- if (!subscriptions[topic]) {
- subscriptions[topic] = {
- subscribers: [subscriberId],
- };
- } else {
- subscriptions[topic].subscribers.push(subscriberId);
- }
- });
- });
-}
-
-async function sha256Hash(message: string) {
- // Convert the message to a Uint8Array
- const encoder = new TextEncoder();
- const data = encoder.encode(message);
- // Generate the hash
- const hashBuffer = await crypto.subtle.digest('SHA-256', data);
- // Convert the hash to a hexadecimal string
- const hashArray = Array.from(new Uint8Array(hashBuffer));
- const hashHex = hashArray
- .map((b) => b.toString(16).padStart(2, '0'))
- .join('');
- return hashHex;
-}
-
-@Injectable()
-@Controller()
-@UseGuards(JwtGrpcAuthGuard)
-@UseInterceptors(CorrelationIdInterceptor, AsyncLocalStorageInterceptor)
-export class TodoGrpcController {
- private readonly JWT_SECRET: string;
- private readonly JWT_LIFETIME_SECONDS: string;
- constructor(
- @Inject(BUSES_TOKENS.PUBSUB_COMMAND_BUS)
- private readonly commandBus: Infra.CommandBus.IPubSubCommandBus,
- @Inject(BUSES_TOKENS.PUBSUB_QUERY_BYS)
- private readonly queryBus: Infra.QueryBus.IQueryBus,
- @Inject(BUSES_TOKENS.PUBSUB_INTEGRATION_EVENT_BUS)
- private readonly pubSubIntegrationEventBus: Infra.EventBus.IEventBus,
- private configService: ConfigService,
- ) {
- this.JWT_SECRET = this.configService.get('jwtSecret', { infer: true });
- this.JWT_LIFETIME_SECONDS = this.configService.get('JWT_LIFETIME_SECONDS', {
- infer: true,
- });
- if (this.JWT_SECRET === '') {
- throw new Error('JWT_SECRET is not defined in env!');
- }
- this.subscribeToPubSubIntegrationEvents();
- }
-
- async subscribeToPubSubIntegrationEvents() {
- // Added
- const addedHandler = new TodoAddedPubSubIntegrationEventHandler(
- subscriptions,
- subscribers,
- );
- const adddedTopic =
- NatsPubSubIntegrationEventsBus.getTopicFromHandler(addedHandler);
- console.log(`Subscribing to PubSub integration event ${adddedTopic}`);
- await this.pubSubIntegrationEventBus.subscribe(adddedTopic, addedHandler);
-
- // Deleted
- const deletedHandler = new TodoDeletedPubSubIntegrationEventHandler(
- subscriptions,
- subscribers,
- );
- const deletedTopic =
- NatsPubSubIntegrationEventsBus.getTopicFromHandler(deletedHandler);
- console.log(`Subscribing to PubSub integration event ${deletedTopic}`);
- await this.pubSubIntegrationEventBus.subscribe(
- deletedTopic,
- deletedHandler,
- );
-
- // Completed
- const completedHandler = new TodoCompletedPubSubIntegrationEventHandler(
- subscriptions,
- subscribers,
- );
- const completedTopic =
- NatsPubSubIntegrationEventsBus.getTopicFromHandler(completedHandler);
- console.log(`Subscribing to PubSub integration event ${completedTopic}`);
- await this.pubSubIntegrationEventBus.subscribe(
- completedTopic,
- completedHandler,
- );
-
- // Uncompleted
- const uncompletedHandler = new TodoUncompletedPubSubIntegrationEventHandler(
- subscriptions,
- subscribers,
- );
- const uncompletedTopic =
- NatsPubSubIntegrationEventsBus.getTopicFromHandler(uncompletedHandler);
- console.log(`Subscribing to PubSub integration event ${uncompletedTopic}`);
- await this.pubSubIntegrationEventBus.subscribe(
- uncompletedTopic,
- uncompletedHandler,
- );
-
- // ModifiedTitle
- const modifiedTitleHandler =
- new TodoModifiedTitlePubSubIntegrationEventHandler(
- subscriptions,
- subscribers,
- );
- const modifiedTitleTopic =
- NatsPubSubIntegrationEventsBus.getTopicFromHandler(modifiedTitleHandler);
- console.log(
- `Subscribing to PubSub integration event ${modifiedTitleTopic}`,
- );
- await this.pubSubIntegrationEventBus.subscribe(
- modifiedTitleTopic,
- modifiedTitleHandler,
- );
- }
-
- @GrpcMethod('TodoService', 'Add')
- @Traceable({
- operation: 'AddTodoController',
- serviceName: 'API',
- })
- async addTodo(
- data: todo.AddTodoRequest,
- // metadata: Metadata,
- // call: ServerUnaryCall,
- ): Promise {
- // const context = asyncLocalStorage.getStore()?.get('context');
- const command = new AddTodoCommand({ title: data.title });
- const results = await this.commandBus.request(command);
- if (results.isOk) {
- return new todo.AddTodoResponse({
- ok: new todo.AddTodoOKResponse({ id: results.data }),
- });
- } else {
- const error = results.error;
- console.error('Error while creating todo:', error?.message);
- return new todo.AddTodoResponse({
- error: new todo.AddTodoErrorResponse({
- invalidTitleLengthError: new todo.ErrorResponse({
- code: error?.code || 'INVALID_TITLE_LENGTH_ERROR',
- message: error?.message || 'The title is too long.',
- }),
- }),
- });
- }
- }
-
- @GrpcMethod('TodoService', 'GetAll')
- @Traceable({
- operation: 'GetAllTodosController',
- serviceName: 'API',
- })
- async getAll(
- data: todo.GetAllTodosRequest,
- metadata: Metadata,
- // call: ServerUnaryCall,
- ): Promise {
- const results = await this.queryBus.request(new GetTodosQuery());
- if (results.isOk) {
- const mappedData = results.data.map((i) => ({
- id: i.id,
- title: i.title,
- completed: i.completed,
- }));
- const dbHash = await sha256Hash(JSON.stringify(mappedData));
- const cachedHashesAreEqual = dbHash === metadata.get('cache-hash')[0];
- if (cachedHashesAreEqual) {
- throw new RpcException('CACHE_HIT');
- }
- return new todo.GetAllTodosResponse({
- ok: new todo.GetAllTodosOKResponse({
- todos: mappedData.map((i) => new todo.Todo(i)),
- }),
- });
- } else {
- const error = results.error;
- console.error('Error while fetching todos:', error?.message);
- return new todo.GetAllTodosResponse({
- error: new todo.GetAllTodosErrorResponse({
- systemUnavailableError: new todo.ErrorResponse({
- code: error?.code || 'SYSTEM_UNAVAILABLE_ERROR',
- message: error?.message || 'The system is unavailable.',
- }),
- }),
- });
- }
- }
-
- @GrpcMethod('TodoService', 'Complete')
- @Traceable({
- operation: 'CompleteTodoController',
- serviceName: 'API',
- })
- async completeTodo(
- data: todo.CompleteTodoRequest,
- // metadata: Metadata,
- ): Promise {
- const command = new CompleteTodoCommand({ todoId: data.id });
- const result = await this.commandBus.request(command);
- if (result.isOk) {
- return new todo.CompleteTodoResponse({
- ok: new todo.CompleteTodoOKResponse(),
- });
- } else {
- const error = result.error;
- console.error('Error while completing todo:', error?.message);
- return new todo.CompleteTodoResponse({
- error: new todo.CompleteTodoErrorResponse({
- systemUnavailableError: new todo.ErrorResponse({
- code: error?.code || 'SYSTEM_UNAVAILABLE_ERROR',
- message: error?.message || 'The system is unavailable.',
- }),
- }),
- });
- }
- }
-
- @GrpcMethod('TodoService', 'Uncomplete')
- @Traceable({
- operation: 'UncompleteTodoController',
- serviceName: 'API',
- })
- async uncompleteTodo(
- data: todo.CompleteTodoRequest,
- ): Promise {
- const command = new UncompleteTodoCommand({ id: data.id });
- const result = await this.commandBus.request(command);
- if (result.isOk) {
- return new todo.UncompleteTodoResponse({
- ok: new todo.UncompleteTodoOKResponse(),
- });
- } else {
- const error = result.error;
- console.error('Error while uncompleting todo:', error?.message);
- return new todo.UncompleteTodoResponse({
- error: new todo.UncompleteTodoErrorResponse({
- systemUnavailableError: new todo.ErrorResponse({
- code: error?.code || 'SYSTEM_UNAVAILABLE_ERROR',
- message: error?.message || 'The system is unavailable.',
- }),
- }),
- });
- }
- }
-
- @GrpcMethod('TodoService', 'Delete')
- @Traceable({
- operation: 'DeleteTodoController',
- serviceName: 'API',
- })
- async deleteTodo(
- data: todo.DeleteTodoRequest,
- ): Promise {
- const command = new DeleteTodoCommand({ id: data.id });
- const result = await this.commandBus.request(command);
- if (result.isOk) {
- return new todo.DeleteTodoResponse({
- ok: new todo.DeleteTodoOKResponse(),
- });
- } else {
- const error = result.error;
- console.error('Error while deleting todo:', error?.message);
- return new todo.DeleteTodoResponse({
- error: new todo.DeleteTodoErrorResponse({
- systemUnavailableError: new todo.ErrorResponse({
- code: error?.code || 'SYSTEM_UNAVAILABLE_ERROR',
- message: error?.message || 'The system is unavailable.',
- }),
- }),
- });
- }
- }
-
- @GrpcMethod('TodoService', 'ModifyTitle')
- @Traceable({
- operation: 'ModifyTitleController',
- serviceName: 'API',
- })
- async modifyTitle(
- data: todo.ModifyTitleTodoRequest,
- ): Promise {
- const command = new ModifyTodoTitleCommand({
- id: data.id,
- title: data.title,
- });
- const result = await this.commandBus.request(command);
- if (result.isOk) {
- return new todo.ModifyTitleTodoResponse({
- ok: new todo.ModifyTitleTodoOKResponse(),
- });
- } else {
- const error = result.error;
- console.error('Error while todo:', error?.message);
- return new todo.ModifyTitleTodoResponse({
- error: new todo.ModifyTitleTodoErrorResponse({
- systemUnavailableError: new todo.ErrorResponse({
- code: error?.code || 'SYSTEM_UNAVAILABLE_ERROR',
- message: error?.message || 'The system is unavailable.',
- }),
- }),
- });
- }
- }
-
- @GrpcMethod('TodoService', 'InitializeSubscriptionConnection')
- async initializeSubscriptionConnection(): Promise {
- // request: todo.InitializeConnectionRequest,
- // metadata: Metadata,
- // call: ServerUnaryCall<
- // todo.InitializeConnectionRequest,
- // todo.InitializeConnectionResponse
- // >,
- const ctx = await asyncLocalStorage.getStore()?.get('context');
- const authToken = ctx.jwt;
- const userId = ctx.userId;
- const subscriberId = uuid();
- subscribers[subscriberId] = {
- timestamp: Date.now(),
- authToken,
- userId,
- };
- const response = new todo.InitializeConnectionResponse({ subscriberId });
- console.log('Subscription response', response.toObject());
- return response;
- }
-
- @GrpcMethod('TodoService', 'KeepSubscriptionAlive')
- async keepSubscriptionAlive(
- request: todo.KeepSubscriptionAliveRequest,
- ): Promise {
- // metadata: Metadata,
- // call: ServerUnaryCall<
- // todo.InitializeConnectionRequest,
- // todo.InitializeConnectionResponse
- // >,
- const subscriberId = request.subscriberId;
- const subscriber = subscribers[subscriberId];
- if (!subscriber) {
- throw new RpcException('Invalid subscription');
- }
- const ctx = await asyncLocalStorage.getStore()?.get('context');
- const { userId, jwt, email } = ctx;
- // Step 1. Check if the subscriber exists and that the userId matches
- if (subscriber.authToken !== jwt || subscriber.userId !== userId) {
- throw new RpcException('Invalid subscription');
- }
- // Step 2. Check if the JWT is nearing expiration and update if necessary
- let renewedAuthToken: string | undefined = undefined;
- try {
- const jwtPayload = jwtwebtoken.verify(
- jwt,
- this.JWT_SECRET,
- ) as jwtwebtoken.JwtPayload;
- if (
- jwtPayload.exp &&
- jwtPayload.exp - Math.floor(Date.now() / 1000) < 3550
- ) {
- renewedAuthToken = jwtwebtoken.sign(
- {
- email,
- iat: Math.floor(Date.now() / 1000),
- exp:
- Math.floor(Date.now() / 1000) + Number(this.JWT_LIFETIME_SECONDS),
- sub: userId,
- },
- this.JWT_SECRET,
- );
- }
- } catch (err) {
- console.error('Error while verifying JWT', err);
- throw new RpcException('Invalid JWT!');
- }
- // Step 3. Updated the timestamp to show that the subscriber is still alive
- subscribers[subscriberId] = {
- ...subscribers[subscriberId],
- timestamp: Date.now(),
- authToken: renewedAuthToken || subscribers[subscriberId].authToken,
- };
- // Step 4. Send back the response
- const response = new todo.KeepSubscriptionAliveResponse({
- renewedAuthToken,
- });
- return response;
- }
-
- @GrpcMethod('TodoService', 'On')
- async on(
- request: todo.OnTodoRequest,
- metadata: Metadata,
- call: ServerWritableStream,
- ) {
- const { subscriberId, events } = request;
- await new Promise((resolve) => {
- const topics = events.map((i) => {
- switch (i) {
- case todo.TODO_EVENTS.ADDED:
- return TodoAddedPubSubIntegrationEventHandler.name;
- case todo.TODO_EVENTS.DELETED:
- return TodoDeletedPubSubIntegrationEventHandler.name;
- case todo.TODO_EVENTS.MODIFIED_TITLE:
- return TodoModifiedTitlePubSubIntegrationEventHandler.name;
- case todo.TODO_EVENTS.COMPLETED:
- return TodoCompletedPubSubIntegrationEventHandler.name;
- case todo.TODO_EVENTS.UNCOMPLETED:
- return TodoUncompletedPubSubIntegrationEventHandler.name;
- }
- });
- subscribe(subscriberId, topics, call, resolve);
- });
- }
-}
diff --git a/backend/src/api/todo.rest.controller.ts b/backend/src/api/todo.rest.controller.ts
index e736f3390..411615341 100644
--- a/backend/src/api/todo.rest.controller.ts
+++ b/backend/src/api/todo.rest.controller.ts
@@ -2,31 +2,48 @@ import {
Body,
Controller,
Get,
+ Patch,
HttpException,
HttpStatus,
Inject,
Injectable,
Post,
+ Delete,
+ Param,
UseGuards,
Request,
} from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
-import { AddTodoDto } from './dto/add-todo.dto';
-import { CompleteTodoDto } from './dto/complete-todo.dto';
-
-import { BUSES_TOKENS } from '@bitloops/bl-boilerplate-infra-nest-jetstream';
+import {
+ ApiTags,
+ ApiOperation,
+ ApiResponse,
+ ApiBearerAuth,
+ ApiParam,
+} from '@nestjs/swagger';
+import { AddTodoRequestDto } from './dto/add-todo.dto';
+import { ModifyTodoTitleRequestDto } from './dto/modify-todo-title.dto';
+import { BUSES_TOKENS } from '../lib/infra/nest-jetstream';
import { AuthEnvironmentVariables } from '@src/config/auth.configuration';
-import { JwtAuthGuard } from '@bitloops/bl-boilerplate-infra-nest-auth-passport';
+import { JwtAuthGuard } from '../lib/infra/nest-auth-passport';
import { Infra } from '@bitloops/bl-boilerplate-core';
+import { GetAllTodosResponseDto } from './dto/get-all-todos.dto';
import { CompleteTodoCommand } from '@src/lib/bounded-contexts/todo/todo/commands/complete-todo.command';
import { TodoReadModel } from '@src/lib/bounded-contexts/todo/todo/domain/todo.read-model';
import { AddTodoCommand } from '@src/lib/bounded-contexts/todo/todo/commands/add-todo.command';
import { GetTodosQuery } from '@src/lib/bounded-contexts/todo/todo/queries/get-todos.query';
+import { UncompleteTodoCommand } from '@src/lib/bounded-contexts/todo/todo/commands/uncomplete-todo.command';
+import { DeleteTodoCommand } from '@src/lib/bounded-contexts/todo/todo/commands/delete-todo.command';
+import { ModifyTodoTitleCommand } from '@src/lib/bounded-contexts/todo/todo/commands/modify-todo-title.command';
+@ApiTags('todos')
+@ApiBearerAuth()
+@Controller('todos')
+@UseGuards(JwtAuthGuard)
@Injectable()
-@Controller('todo')
export class TodoController {
private readonly JWT_SECRET: string;
+
constructor(
@Inject(BUSES_TOKENS.PUBSUB_COMMAND_BUS)
private readonly commandBus: Infra.CommandBus.IPubSubCommandBus,
@@ -43,33 +60,123 @@ export class TodoController {
}
}
- @UseGuards(JwtAuthGuard)
@Post()
- async addTodo(@Request() req, @Body() dto: AddTodoDto) {
- // const jwt = jwtwebtoken.sign({ userId: dto.userId }, this.JWT_SECRET);
+ @ApiOperation({ summary: 'Create a new todo' })
+ @ApiResponse({ status: 201, description: 'Todo created successfully' })
+ @ApiResponse({ status: 400, description: 'Invalid input' })
+ async addTodo(@Request() req, @Body() dto: AddTodoRequestDto) {
const command = new AddTodoCommand({ title: dto.title });
- // const context = asyncLocalStorage.getStore()?.get('context');
- const results = await this.commandBus.request(command);
- if (results.isOk) return results.data;
- else throw new HttpException('Forbidden', HttpStatus.FORBIDDEN);
- }
-
- @UseGuards(JwtAuthGuard)
- @Post('/complete')
- async completeTodo(@Body() dto: CompleteTodoDto) {
- // userId get from context
- const command = new CompleteTodoCommand({ todoId: dto.todoId });
const result = await this.commandBus.request(command);
- if (result.isOk) return result.data;
- else throw new HttpException('Forbidden', HttpStatus.FORBIDDEN);
+
+ if (result.isOk) {
+ return { id: result.data };
+ } else {
+ throw new HttpException(
+ result.error?.message || 'Failed to create todo',
+ HttpStatus.BAD_REQUEST,
+ );
+ }
}
- @UseGuards(JwtAuthGuard)
@Get()
- async findAll(@Request() req): Promise {
- // const jwt = jwtwebtoken.sign({ userId: 'vasilis' }, this.JWT_SECRET);
+ @ApiOperation({ summary: 'Get all todos' })
+ @ApiResponse({ status: 200, type: GetAllTodosResponseDto, description: 'Returns all todos' })
+ async getAll() {
const results = await this.queryBus.request(new GetTodosQuery());
- if (results.isOk) return results.data;
- else throw new HttpException('Forbidden', HttpStatus.FORBIDDEN);
+
+ if (results.isOk) {
+ const data = results.data;
+ const todos: TodoReadModel[] = data.map((todo) => TodoReadModel.fromPrimitives(todo));
+ return new GetAllTodosResponseDto(todos);
+ } else {
+ throw new HttpException(
+ results.error?.message || 'Failed to fetch todos',
+ HttpStatus.INTERNAL_SERVER_ERROR,
+ );
+ }
+ }
+
+ @Patch(':id/complete')
+ @ApiOperation({ summary: 'Mark a todo as completed' })
+ @ApiParam({ name: 'id', description: 'Todo ID' })
+ @ApiResponse({ status: 204, description: 'Todo marked as completed' })
+ @ApiResponse({ status: 400, description: 'Invalid todo ID' })
+ @ApiResponse({ status: 404, description: 'Todo not found' })
+ async completeTodo(@Param('id') id: string) {
+ const command = new CompleteTodoCommand({ todoId: id });
+ const result = await this.commandBus.request(command);
+
+ if (!result.isOk) {
+ throw new HttpException(
+ result.error?.message || 'Failed to complete todo',
+ result.error?.code === 'TODO_NOT_FOUND'
+ ? HttpStatus.NOT_FOUND
+ : HttpStatus.BAD_REQUEST,
+ );
+ }
+ }
+
+ @Patch(':id/uncomplete')
+ @ApiOperation({ summary: 'Mark a todo as uncompleted' })
+ @ApiParam({ name: 'id', description: 'Todo ID' })
+ @ApiResponse({ status: 204, description: 'Todo marked as uncompleted' })
+ @ApiResponse({ status: 400, description: 'Invalid todo ID' })
+ @ApiResponse({ status: 404, description: 'Todo not found' })
+ async uncompleteTodo(@Param('id') id: string) {
+ const command = new UncompleteTodoCommand({ id });
+ const result = await this.commandBus.request(command);
+
+ if (!result.isOk) {
+ throw new HttpException(
+ result.error?.message || 'Failed to uncomplete todo',
+ result.error?.code === 'TODO_NOT_FOUND'
+ ? HttpStatus.NOT_FOUND
+ : HttpStatus.BAD_REQUEST,
+ );
+ }
+ }
+
+ @Patch(':id/title')
+ @ApiOperation({ summary: 'Update a todo title' })
+ @ApiParam({ name: 'id', description: 'Todo ID' })
+ @ApiResponse({ status: 204, description: 'Todo title updated' })
+ @ApiResponse({ status: 400, description: 'Invalid input' })
+ @ApiResponse({ status: 404, description: 'Todo not found' })
+ async modifyTitle(@Param('id') id: string, @Body() dto: ModifyTodoTitleRequestDto) {
+ const command = new ModifyTodoTitleCommand({
+ id,
+ title: dto.title,
+ });
+
+ const result = await this.commandBus.request(command);
+
+ if (!result.isOk) {
+ throw new HttpException(
+ result.error?.message || 'Failed to update todo title',
+ result.error?.code === 'TODO_NOT_FOUND'
+ ? HttpStatus.NOT_FOUND
+ : HttpStatus.BAD_REQUEST,
+ );
+ }
+ }
+
+ @Delete(':id')
+ @ApiOperation({ summary: 'Delete a todo' })
+ @ApiParam({ name: 'id', description: 'Todo ID' })
+ @ApiResponse({ status: 204, description: 'Todo deleted' })
+ @ApiResponse({ status: 400, description: 'Invalid todo ID' })
+ @ApiResponse({ status: 404, description: 'Todo not found' })
+ async deleteTodo(@Param('id') id: string) {
+ const command = new DeleteTodoCommand({ id });
+ const result = await this.commandBus.request(command);
+
+ if (!result.isOk) {
+ throw new HttpException(
+ result.error?.message || 'Failed to delete todo',
+ result.error?.code === 'TODO_NOT_FOUND'
+ ? HttpStatus.NOT_FOUND
+ : HttpStatus.BAD_REQUEST,
+ );
+ }
}
}
diff --git a/backend/src/api/todo.sse.controller.ts b/backend/src/api/todo.sse.controller.ts
new file mode 100644
index 000000000..9e54ad788
--- /dev/null
+++ b/backend/src/api/todo.sse.controller.ts
@@ -0,0 +1,310 @@
+import { Controller, Get, Post, Inject, Sse, UseGuards, Request, Body } from '@nestjs/common';
+import { Observable, interval, fromEvent, merge, of } from 'rxjs';
+import { map, switchMap, takeWhile, tap, finalize } from 'rxjs/operators';
+import { EventEmitter2 } from '@nestjs/event-emitter';
+import { ConfigService } from '@nestjs/config';
+import { JwtAuthGuard } from '@lib/infra/nest-auth-passport';
+import { Infra, asyncLocalStorage } from '@bitloops/bl-boilerplate-core';
+import { AuthEnvironmentVariables } from '@src/config/auth.configuration';
+import {
+ BUSES_TOKENS,
+ NatsPubSubIntegrationEventsBus,
+} from '@src/lib/infra/nest-jetstream';
+import {
+ AsyncLocalStorageInterceptor,
+ JwtGrpcAuthGuard,
+} from '@src/lib/infra/nest-auth-passport';
+import { todo } from '../proto/generated/todo';
+import { TodoAddedPubSubIntegrationEventHandler } from './pub-sub-handlers/todo-added.integration-handler';
+import { TodoDeletedPubSubIntegrationEventHandler } from './pub-sub-handlers/todo-deleted.integration-handler';
+import { TodoCompletedPubSubIntegrationEventHandler } from './pub-sub-handlers/todo-completed.integration-handler';
+import { TodoUncompletedPubSubIntegrationEventHandler } from './pub-sub-handlers/todo-uncompleted.integration-handler';
+import { TodoModifiedTitlePubSubIntegrationEventHandler } from './pub-sub-handlers/todo-modified-title.integration-handler';
+import { Traceable } from '@src/lib/infra/telemetry';
+
+type SSEClient = {
+ id: string;
+ userId: string;
+ lastActivity: number;
+ response: any;
+};
+
+export type Subscribers = {
+ [subscriberId: string]: {
+ timestamp: number;
+ call?: any;
+ authToken: string;
+ userId: string;
+ };
+};
+const subscribers: Subscribers = {};
+
+export type Subscriptions = {
+ [integrationEvent: string]: {
+ subscribers: string[];
+ };
+};
+const subscriptions: Subscriptions = {};
+
+async function subscribe(
+ subscriberId: string,
+ topics: string[],
+ call: any,
+ resolveSubscription: (value: unknown) => void,
+) {
+ const ctx = asyncLocalStorage.getStore()?.get('context');
+ await new Promise((resolve) => {
+ // call.on('end', () => {
+ // resolveSubscription(true);
+ // resolve(true);
+ // });
+
+ // call.on('error', () => {
+ // resolveSubscription(true);
+ // resolve(true);
+ // });
+
+ // call.on('close', () => {
+ // resolveSubscription(true);
+ // resolve(true);
+ // });
+
+ // call.on('finish', () => {
+ // resolveSubscription(true);
+ // resolve(true);
+ // });
+ subscribers[subscriberId] = {
+ timestamp: Date.now(),
+ call,
+ authToken: ctx.jwt,
+ userId: ctx.userId,
+ };
+ topics.forEach((topic) => {
+ if (!subscriptions[topic]) {
+ subscriptions[topic] = {
+ subscribers: [subscriberId],
+ };
+ } else {
+ subscriptions[topic].subscribers.push(subscriberId);
+ }
+ });
+ });
+}
+
+@Controller('sse/todos')
+@UseGuards(JwtAuthGuard)
+export class TodoSSEController {
+ private readonly JWT_SECRET: string;
+ private readonly JWT_LIFETIME_SECONDS: string;
+ private readonly clients: Map = new Map();
+ private readonly HEARTBEAT_INTERVAL = 10000; // 10 seconds
+ private readonly INACTIVITY_TIMEOUT = 600000; // 10 minutes
+
+ constructor(
+ @Inject(BUSES_TOKENS.PUBSUB_COMMAND_BUS)
+ private readonly commandBus: Infra.CommandBus.IPubSubCommandBus,
+ @Inject(BUSES_TOKENS.PUBSUB_QUERY_BYS)
+ private readonly queryBus: Infra.QueryBus.IQueryBus,
+ @Inject(BUSES_TOKENS.PUBSUB_INTEGRATION_EVENT_BUS)
+ private readonly pubSubIntegrationEventBus: Infra.EventBus.IEventBus,
+ private configService: ConfigService,
+ private readonly eventEmitter: EventEmitter2,
+ ) {
+ this.JWT_SECRET = this.configService.get('jwtSecret', { infer: true });
+ this.JWT_LIFETIME_SECONDS = this.configService.get('JWT_LIFETIME_SECONDS', {
+ infer: true,
+ });
+ if (this.JWT_SECRET === '') {
+ throw new Error('JWT_SECRET is not defined in env!');
+ }
+ this.setupCleanupInterval();
+ // this.setupEventHandlers();
+ this.subscribeToPubSubIntegrationEvents();
+ }
+
+ @Get('stream')
+ @Sse()
+ async stream(@Request() req): Promise> {
+ const headerValue = req.headers['x-request-id'];
+ const clientId = (Array.isArray(headerValue) ? headerValue[0] : headerValue);
+ const userId = req.user.id;
+
+ const client: SSEClient = {
+ id: clientId,
+ userId,
+ lastActivity: Date.now(),
+ response: null,
+ };
+
+ if (!this.clients.has(clientId)) {
+ this.clients.set(clientId, client);
+ }
+
+ // Send initial connection event
+ this.sendToClient(clientId, { event: 'connected', data: { clientId } });
+
+ // Return an observable that will be used to send events to the client
+ return new Observable((subscriber) => {
+ client.response = subscriber;
+
+ // Send heartbeat every 30 seconds
+ const heartbeatInterval = setInterval(() => {
+ this.sendToClient(clientId, { event: 'heartbeat', data: { timestamp: new Date().toISOString() } });
+ }, this.HEARTBEAT_INTERVAL);
+
+ // Cleanup on client disconnect
+ return () => {
+ clearInterval(heartbeatInterval);
+ this.clients.delete(clientId);
+ };
+ });
+ }
+
+ @Post('On')
+ // @UseGuards(JwtAuthGuard)
+ async on(
+ @Request() req,
+ @Body() body: { subscriberId: string; events: string[] },
+ ) {
+ console.log('on***', body);
+ const { subscriberId, events } = body;
+ const topics = [];
+ for (const event of events) {
+ switch (event) {
+ case 'todo.added':
+ topics.push(TodoAddedPubSubIntegrationEventHandler.name);
+ case 'todo.deleted':
+ topics.push(TodoDeletedPubSubIntegrationEventHandler.name);
+ case 'todo.modified_title':
+ topics.push(TodoModifiedTitlePubSubIntegrationEventHandler.name);
+ case 'todo.completed':
+ topics.push(TodoCompletedPubSubIntegrationEventHandler.name);
+ case 'todo.uncompleted':
+ topics.push(TodoUncompletedPubSubIntegrationEventHandler.name);
+ }
+ }
+ subscribe(subscriberId, topics, (event: string, data: any) => this.broadcast(event, data), () => {});
+ }
+
+ async subscribeToPubSubIntegrationEvents() {
+ // Added
+ const addedHandler = new TodoAddedPubSubIntegrationEventHandler(
+ subscriptions,
+ subscribers,
+ );
+ const adddedTopic =
+ NatsPubSubIntegrationEventsBus.getTopicFromHandler(addedHandler);
+ console.log(`Subscribing to PubSub integration event ${adddedTopic}`);
+ await this.pubSubIntegrationEventBus.subscribe(adddedTopic, addedHandler);
+
+ // Deleted
+ const deletedHandler = new TodoDeletedPubSubIntegrationEventHandler(
+ subscriptions,
+ subscribers,
+ );
+ const deletedTopic =
+ NatsPubSubIntegrationEventsBus.getTopicFromHandler(deletedHandler);
+ console.log(`Subscribing to PubSub integration event ${deletedTopic}`);
+ await this.pubSubIntegrationEventBus.subscribe(
+ deletedTopic,
+ deletedHandler,
+ );
+
+ // Completed
+ const completedHandler = new TodoCompletedPubSubIntegrationEventHandler(
+ subscriptions,
+ subscribers,
+ );
+ const completedTopic =
+ NatsPubSubIntegrationEventsBus.getTopicFromHandler(completedHandler);
+ console.log(`Subscribing to PubSub integration event ${completedTopic}`);
+ await this.pubSubIntegrationEventBus.subscribe(
+ completedTopic,
+ completedHandler,
+ );
+
+ // Uncompleted
+ const uncompletedHandler = new TodoUncompletedPubSubIntegrationEventHandler(
+ subscriptions,
+ subscribers,
+ );
+ const uncompletedTopic =
+ NatsPubSubIntegrationEventsBus.getTopicFromHandler(uncompletedHandler);
+ console.log(`Subscribing to PubSub integration event ${uncompletedTopic}`);
+ await this.pubSubIntegrationEventBus.subscribe(
+ uncompletedTopic,
+ uncompletedHandler,
+ );
+
+ // ModifiedTitle
+ const modifiedTitleHandler =
+ new TodoModifiedTitlePubSubIntegrationEventHandler(
+ subscriptions,
+ subscribers,
+ );
+ const modifiedTitleTopic =
+ NatsPubSubIntegrationEventsBus.getTopicFromHandler(modifiedTitleHandler);
+ console.log(
+ `Subscribing to PubSub integration event ${modifiedTitleTopic}`,
+ );
+ await this.pubSubIntegrationEventBus.subscribe(
+ modifiedTitleTopic,
+ modifiedTitleHandler,
+ );
+ }
+
+ private sendToClient(clientId: string, payload: { event: string; data: any }) {
+ const client = this.clients.get(clientId);
+ if (client) {
+ client.lastActivity = Date.now();
+ client.response?.next({data: payload});
+ }
+ }
+
+ private broadcast(event: string, data: any, userId?: string) {
+ this.clients.forEach((client) => {
+ if (!userId || client.userId === userId) {
+ this.sendToClient(client.id, { event, data });
+ }
+ });
+ }
+
+ private setupCleanupInterval() {
+ setInterval(() => {
+ const now = Date.now();
+ this.clients.forEach((client, clientId) => {
+ if (now - client.lastActivity > this.INACTIVITY_TIMEOUT) {
+ this.clients.delete(clientId);
+ }
+ });
+ }, 60000); // Check every minute
+ }
+
+ private setupEventHandlers() {
+ // Example event handlers - you'll need to adjust these based on your actual events
+ this.eventEmitter.on('todo.added', (data: any) => {
+ console.log('todo.added event received:', data);
+ this.broadcast('todo.added', data, data.userId);
+ });
+
+ this.eventEmitter.on('todo.updated', (data: any) => {
+ console.log('todo.updated event received:', data);
+ this.broadcast('todo.updated', data, data.userId);
+ });
+
+ this.eventEmitter.on('todo.deleted', (data: any) => {
+ console.log('todo.deleted event received:', data);
+ this.broadcast('todo.deleted', data, data.userId);
+ });
+
+ this.eventEmitter.on('todo.completed', (data: any) => {
+ console.log('todo.completed event received:', data);
+ this.broadcast('todo.completed', data, data.userId);
+ });
+
+ this.eventEmitter.on('todo.uncompleted', (data: any) => {
+ console.log('todo.uncompleted event received:', data);
+ this.broadcast('todo.uncompleted', data, data.userId);
+ });
+ }
+}
diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts
index fd9e0229e..311cf6221 100644
--- a/backend/src/app.module.ts
+++ b/backend/src/app.module.ts
@@ -5,13 +5,13 @@ import { IamModule } from './bounded-contexts/iam/iam/iam.module';
import {
JetstreamModule,
NatsStreamingMessageBus,
-} from '@bitloops/bl-boilerplate-infra-nest-jetstream';
-import { PostgresModule } from '@bitloops/bl-boilerplate-infra-postgres';
+} from '@lib/infra/nest-jetstream';
+import { PostgresModule } from '@lib/infra/postgres';
import { ConfigModule } from '@nestjs/config';
import configuration from './config/configuration';
import authConfiguration from './config/auth.configuration';
-import { MongoModule } from '@bitloops/bl-boilerplate-infra-mongo';
-import { TracingModule } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { MongoModule } from '@lib/infra/mongo';
+import { TracingModule } from '@lib/infra/telemetry';
@Module({
imports: [
diff --git a/backend/src/bounded-contexts/iam/iam/iam.module.ts b/backend/src/bounded-contexts/iam/iam/iam.module.ts
index 9553931a9..16f55ce95 100644
--- a/backend/src/bounded-contexts/iam/iam/iam.module.ts
+++ b/backend/src/bounded-contexts/iam/iam/iam.module.ts
@@ -1,14 +1,14 @@
import { Module } from '@nestjs/common';
import { AuthenticationModule as LibIamModule } from '@src/lib/bounded-contexts/iam/authentication/authentication.module';
-import { MongoModule } from '@bitloops/bl-boilerplate-infra-mongo';
-import { PostgresModule } from '@bitloops/bl-boilerplate-infra-postgres';
+import { MongoModule } from '@lib/infra/mongo';
+import { PostgresModule } from '@lib/infra/postgres';
import { PubSubCommandHandlers } from '@src/lib/bounded-contexts/iam/authentication/application/command-handlers';
import {
JetstreamModule,
NatsStreamingDomainEventBus,
NatsStreamingIntegrationEventBus,
-} from '@bitloops/bl-boilerplate-infra-nest-jetstream';
+} from '@lib/infra/nest-jetstream';
import { StreamingDomainEventHandlers } from '@src/lib/bounded-contexts/iam/authentication/application/event-handlers/domain';
import {
StreamingDomainEventBusToken,
diff --git a/backend/src/bounded-contexts/iam/iam/repository/user-write.pg.repository.ts b/backend/src/bounded-contexts/iam/iam/repository/user-write.pg.repository.ts
index 9012b6104..796d513a4 100644
--- a/backend/src/bounded-contexts/iam/iam/repository/user-write.pg.repository.ts
+++ b/backend/src/bounded-contexts/iam/iam/repository/user-write.pg.repository.ts
@@ -10,7 +10,7 @@ import { Injectable, Inject } from '@nestjs/common';
import * as jwtwebtoken from 'jsonwebtoken';
import { UserWriteRepoPort } from '@src/lib/bounded-contexts/iam/authentication/ports/user-write.repo-port';
import { UserEntity } from '@src/lib/bounded-contexts/iam/authentication/domain/user.entity';
-import { constants } from '@bitloops/bl-boilerplate-infra-postgres';
+import { constants } from '@lib/infra/postgres';
import { EmailVO } from '@src/lib/bounded-contexts/iam/authentication/domain/email.value-object';
import { ConfigService } from '@nestjs/config';
import { AuthEnvironmentVariables } from '@src/config/auth.configuration';
diff --git a/backend/src/bounded-contexts/marketing/marketing/marketing.module.ts b/backend/src/bounded-contexts/marketing/marketing/marketing.module.ts
index 4212ecfd0..c996bb1eb 100644
--- a/backend/src/bounded-contexts/marketing/marketing/marketing.module.ts
+++ b/backend/src/bounded-contexts/marketing/marketing/marketing.module.ts
@@ -13,7 +13,7 @@ import {
UserWriteRepoPortToken,
} from '@src/lib/bounded-contexts/marketing/marketing/constants';
import { MockEmailService } from './service';
-import { MongoModule } from '@bitloops/bl-boilerplate-infra-mongo';
+import { MongoModule } from '@lib/infra/mongo';
import { StreamingIntegrationEventHandlers } from '@src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration';
import { StreamingCommandHandlers } from '@src/lib/bounded-contexts/marketing/marketing/application/command-handlers';
import {
@@ -22,7 +22,7 @@ import {
NatsStreamingDomainEventBus,
NatsStreamingIntegrationEventBus,
NatsPubSubIntegrationEventsBus,
-} from '@bitloops/bl-boilerplate-infra-nest-jetstream';
+} from '@lib/infra/nest-jetstream';
import { StreamingDomainEventHandlers } from '@src/lib/bounded-contexts/marketing/marketing/application/event-handlers/domain';
const RepoProviders = [
diff --git a/backend/src/bounded-contexts/todo/todo/todo.module.ts b/backend/src/bounded-contexts/todo/todo/todo.module.ts
index bf7f3a965..c9240f3b1 100644
--- a/backend/src/bounded-contexts/todo/todo/todo.module.ts
+++ b/backend/src/bounded-contexts/todo/todo/todo.module.ts
@@ -2,7 +2,7 @@ import { Module } from '@nestjs/common';
import { TodoWriteRepository } from './repository/todo-write.repository';
import { TodoReadRepository } from './repository/todo-read.repository';
import { TodoModule as LibTodoModule } from 'src/lib/bounded-contexts/todo/todo/todo.module';
-import { MongoModule } from '@bitloops/bl-boilerplate-infra-mongo';
+import { MongoModule } from '@lib/infra/mongo';
import { PubSubCommandHandlers } from '@src/lib/bounded-contexts/todo/todo/application/command-handlers';
import { QueryHandlers } from '@src/lib/bounded-contexts/todo/todo/application/query-handlers';
import { StreamingIntegrationEventHandlers } from '@src/lib/bounded-contexts/todo/todo/application/event-handlers/integration';
@@ -21,7 +21,7 @@ import {
NatsStreamingDomainEventBus,
NatsStreamingIntegrationEventBus,
NatsPubSubIntegrationEventsBus,
-} from '@bitloops/bl-boilerplate-infra-nest-jetstream';
+} from '@lib/infra/nest-jetstream';
const providers = [
{
diff --git a/backend/src/config/configuration.ts b/backend/src/config/configuration.ts
index dd71eec1f..58435f890 100644
--- a/backend/src/config/configuration.ts
+++ b/backend/src/config/configuration.ts
@@ -3,12 +3,6 @@ export interface AppConfig {
port: number;
ip: string;
};
- grpc: {
- port: number;
- ip: string;
- packageName: string;
- protoPath: string;
- };
database: {
iam_mongo: {
database: string;
@@ -32,15 +26,9 @@ export interface AppConfig {
}
export default (): AppConfig => ({
http: {
- port: process.env.HTTP_PORT ? parseInt(process.env.HTTP_PORT, 10) : 8082,
+ port: process.env.HTTP_PORT ? parseInt(process.env.HTTP_PORT, 10) : 8080,
ip: process.env.HTTP_IP ?? '0.0.0.0',
},
- grpc: {
- port: process.env.GRPC_PORT ? parseInt(process.env.GRPC_PORT, 10) : 8081,
- ip: process.env.GRPC_IP ?? '0.0.0.0',
- packageName: process.env.GRPC_PACKAGE_NAME ?? 'todo',
- protoPath: process.env.GRPC_PROTO_PATH ?? 'src/proto/todo.proto',
- },
database: {
iam_mongo: {
database: process.env.IAM_DATABASE_NAME ?? 'iam',
diff --git a/backend/src/lib/bounded-contexts/iam/authentication/application/command-handlers/change-email.handler.ts b/backend/src/lib/bounded-contexts/iam/authentication/application/command-handlers/change-email.handler.ts
index 13419593c..7b839932f 100644
--- a/backend/src/lib/bounded-contexts/iam/authentication/application/command-handlers/change-email.handler.ts
+++ b/backend/src/lib/bounded-contexts/iam/authentication/application/command-handlers/change-email.handler.ts
@@ -11,7 +11,7 @@ import { EmailVO } from '../../domain/email.value-object';
import { UserWriteRepoPort } from '../../ports/user-write.repo-port';
import { UserWriteRepoPortToken } from '../../constants';
import { ApplicationErrors } from '../errors';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
type ChangeEmailResponse = Either<
void,
diff --git a/backend/src/lib/bounded-contexts/iam/authentication/application/command-handlers/log-in.handler.ts b/backend/src/lib/bounded-contexts/iam/authentication/application/command-handlers/log-in.handler.ts
index 801d564ad..326ead957 100644
--- a/backend/src/lib/bounded-contexts/iam/authentication/application/command-handlers/log-in.handler.ts
+++ b/backend/src/lib/bounded-contexts/iam/authentication/application/command-handlers/log-in.handler.ts
@@ -10,7 +10,7 @@ import { LogInCommand } from '../../commands/log-in.command';
import { UserWriteRepoPort } from '../../ports/user-write.repo-port';
import { UserWriteRepoPortToken } from '../../constants';
import { ApplicationErrors } from '../errors';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
type LogInUseCaseResponse = Either<
void,
diff --git a/backend/src/lib/bounded-contexts/iam/authentication/application/event-handlers/domain/updated-email-publish.event-handler.ts b/backend/src/lib/bounded-contexts/iam/authentication/application/event-handlers/domain/updated-email-publish.event-handler.ts
index 00c872dcf..1bd17ad2c 100644
--- a/backend/src/lib/bounded-contexts/iam/authentication/application/event-handlers/domain/updated-email-publish.event-handler.ts
+++ b/backend/src/lib/bounded-contexts/iam/authentication/application/event-handlers/domain/updated-email-publish.event-handler.ts
@@ -3,7 +3,7 @@ import { Inject } from '@nestjs/common';
import { StreamingIntegrationEventBusToken } from '../../../constants';
import { UserEmailChangedIntegrationEvent } from '../../../contracts/integration-events/user-email-changed.integration-event';
import { UserUpdatedEmailDomainEvent } from '../../../domain/events/user-updated-email.event';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
export class UserUpdatedEmailPublishIntegrationEventHandler
implements Application.IHandleDomainEvent
diff --git a/backend/src/lib/bounded-contexts/marketing/marketing/application/command-handlers/change-user-email.command-handler.ts b/backend/src/lib/bounded-contexts/marketing/marketing/application/command-handlers/change-user-email.command-handler.ts
index a51ebb5b5..8f11121e9 100644
--- a/backend/src/lib/bounded-contexts/marketing/marketing/application/command-handlers/change-user-email.command-handler.ts
+++ b/backend/src/lib/bounded-contexts/marketing/marketing/application/command-handlers/change-user-email.command-handler.ts
@@ -7,7 +7,7 @@ import {
} from '@bitloops/bl-boilerplate-core';
import { Inject } from '@nestjs/common';
import { ChangeUserEmailCommand } from '../../commands/change-user-email.command';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
import { UserWriteRepoPort } from '../../ports/user-write.repo-port';
import { ApplicationErrors } from '../errors';
import { DomainErrors } from '../../domain/errors';
diff --git a/backend/src/lib/bounded-contexts/marketing/marketing/application/command-handlers/create-user.command-handler.ts b/backend/src/lib/bounded-contexts/marketing/marketing/application/command-handlers/create-user.command-handler.ts
index 00a6d322d..909c0fc8a 100644
--- a/backend/src/lib/bounded-contexts/marketing/marketing/application/command-handlers/create-user.command-handler.ts
+++ b/backend/src/lib/bounded-contexts/marketing/marketing/application/command-handlers/create-user.command-handler.ts
@@ -7,7 +7,7 @@ import {
} from '@bitloops/bl-boilerplate-core';
import { Inject } from '@nestjs/common';
import { CreateUserCommand } from '../../commands/create-user.command';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
import { UserEntity } from '../../domain/user.entity';
import { EmailVO } from '../../domain/email.value-object';
import { CompletedTodosVO } from '../../domain/completed-todos.value-object';
diff --git a/backend/src/lib/bounded-contexts/marketing/marketing/application/command-handlers/increment-todos.command-handler.ts b/backend/src/lib/bounded-contexts/marketing/marketing/application/command-handlers/increment-todos.command-handler.ts
index daff8516d..b91a99eba 100644
--- a/backend/src/lib/bounded-contexts/marketing/marketing/application/command-handlers/increment-todos.command-handler.ts
+++ b/backend/src/lib/bounded-contexts/marketing/marketing/application/command-handlers/increment-todos.command-handler.ts
@@ -9,7 +9,7 @@ import { Inject } from '@nestjs/common';
import { IncrementTodosCommand } from '../../commands/Increment-todos.command';
import { DomainErrors } from '../../domain/errors';
import { UserWriteRepoPort } from '../../ports/user-write.repo-port';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
import { ApplicationErrors } from '../errors';
import { UserWriteRepoPortToken } from '../../constants';
diff --git a/backend/src/lib/bounded-contexts/marketing/marketing/application/command-handlers/send-email.command-handler.ts b/backend/src/lib/bounded-contexts/marketing/marketing/application/command-handlers/send-email.command-handler.ts
index a474a0e21..5daa682e5 100644
--- a/backend/src/lib/bounded-contexts/marketing/marketing/application/command-handlers/send-email.command-handler.ts
+++ b/backend/src/lib/bounded-contexts/marketing/marketing/application/command-handlers/send-email.command-handler.ts
@@ -3,7 +3,7 @@ import { SendEmailCommand } from '../../commands/send-email.command';
import { Inject } from '@nestjs/common';
import { EmailServicePort } from '../../ports/email.service-port';
import { EmailServicePortToken } from '../../constants';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
type SendEmailCommandHandlerResponse = Either<
void,
diff --git a/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/domain/todo-completions-incremented.handler.ts b/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/domain/todo-completions-incremented.handler.ts
index 9e6df723c..b63a7101f 100644
--- a/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/domain/todo-completions-incremented.handler.ts
+++ b/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/domain/todo-completions-incremented.handler.ts
@@ -17,7 +17,7 @@ import {
UserWriteRepoPortToken,
} from '../../../constants';
import { ApplicationErrors } from '../../errors';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
import { UserWriteRepoPort } from '../../../ports/user-write.repo-port';
export class TodoCompletionsIncrementedHandler
diff --git a/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration/email-not-found.integration-handler.ts b/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration/email-not-found.integration-handler.ts
index a012b9b58..8e396accd 100644
--- a/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration/email-not-found.integration-handler.ts
+++ b/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration/email-not-found.integration-handler.ts
@@ -1,5 +1,5 @@
import { Infra, Application, Either, ok } from '@bitloops/bl-boilerplate-core';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
import { EmailNotFoundIntegrationErrorEvent } from '@src/lib/bounded-contexts/iam/authentication/application/error-events/email-not-found.integration-event';
export class EmailNotFoundIntegrationErrorEventHandler
diff --git a/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration/todo-completed.integration-handler.ts b/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration/todo-completed.integration-handler.ts
index 6d4365497..fc4b43f72 100644
--- a/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration/todo-completed.integration-handler.ts
+++ b/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration/todo-completed.integration-handler.ts
@@ -3,7 +3,7 @@ import { TodoCompletedIntegrationEvent } from '@src/lib/bounded-contexts/todo/to
import { IncrementTodosCommand } from '../../../commands/Increment-todos.command';
import { StreamingCommandBusToken } from '../../../constants';
import { Inject } from '@nestjs/common';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
export class TodoCompletedIntegrationEventHandler
implements Application.IHandleIntegrationEvent
diff --git a/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration/user-email-changed.integration-handler.ts b/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration/user-email-changed.integration-handler.ts
index 91bc75d6d..4e6d145d0 100644
--- a/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration/user-email-changed.integration-handler.ts
+++ b/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration/user-email-changed.integration-handler.ts
@@ -1,7 +1,7 @@
import { Infra, Application, Either, ok } from '@bitloops/bl-boilerplate-core';
import { UserEmailChangedIntegrationEvent } from '@src/lib/bounded-contexts/iam/authentication/contracts/integration-events/user-email-changed.integration-event';
import { ChangeUserEmailCommand } from '../../../commands/change-user-email.command';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
import { StreamingCommandBusToken } from '../../../constants';
import { Inject } from '@nestjs/common';
diff --git a/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration/user-registered.integration-handler.ts b/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration/user-registered.integration-handler.ts
index 3340b7270..2d60dc074 100644
--- a/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration/user-registered.integration-handler.ts
+++ b/backend/src/lib/bounded-contexts/marketing/marketing/application/event-handlers/integration/user-registered.integration-handler.ts
@@ -1,9 +1,9 @@
import { Inject } from '@nestjs/common';
import { Infra, Application, Either, ok } from '@bitloops/bl-boilerplate-core';
-import { UserRegisteredIntegrationEvent } from '@bitloops/bl-boilerplate-infra-nest-auth-passport';
+import { UserRegisteredIntegrationEvent } from '@lib/infra/nest-auth-passport';
import { CreateUserCommand } from '../../../commands/create-user.command';
import { StreamingCommandBusToken } from '../../../constants';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
export class UserRegisteredIntegrationEventHandler
implements Application.IHandleIntegrationEvent
diff --git a/backend/src/lib/bounded-contexts/marketing/marketing/tests/__tests__/user-registered-integration/user-registered-integration.steps.ts b/backend/src/lib/bounded-contexts/marketing/marketing/tests/__tests__/user-registered-integration/user-registered-integration.steps.ts
index 0e73f04d4..fab282092 100644
--- a/backend/src/lib/bounded-contexts/marketing/marketing/tests/__tests__/user-registered-integration/user-registered-integration.steps.ts
+++ b/backend/src/lib/bounded-contexts/marketing/marketing/tests/__tests__/user-registered-integration/user-registered-integration.steps.ts
@@ -1,4 +1,4 @@
-import { UserRegisteredIntegrationEvent } from '@bitloops/bl-boilerplate-infra-nest-auth-passport';
+import { UserRegisteredIntegrationEvent } from '@lib/infra/nest-auth-passport';
import { UserRegisteredIntegrationEventHandler } from '../../../application/event-handlers/integration/user-registered.integration-handler';
import { mockAsyncLocalStorageGet } from '../../mocks/mockAsynLocalStorageGet.mock';
import { MockStreamCommandBus } from '../../mocks/stream-command-bus.mock';
diff --git a/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/add-todo.handler.ts b/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/add-todo.handler.ts
index 7c5bf90e0..b857d7495 100644
--- a/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/add-todo.handler.ts
+++ b/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/add-todo.handler.ts
@@ -13,7 +13,7 @@ import { TodoEntity } from '../../domain/todo.entity';
import { TodoWriteRepoPort } from '../../ports/todo-write.repo-port';
import { TodoWriteRepoPortToken } from '../../constants';
import { UserIdVO } from '../../domain/user-id.value-object';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
type AddTodoUseCaseResponse = Either<
string,
diff --git a/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/complete-todo.handler.ts b/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/complete-todo.handler.ts
index 88024e0bb..54f5c853b 100644
--- a/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/complete-todo.handler.ts
+++ b/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/complete-todo.handler.ts
@@ -11,7 +11,7 @@ import { DomainErrors } from '../../domain/errors';
import { ApplicationErrors } from '../errors';
import { TodoWriteRepoPort } from '../../ports/todo-write.repo-port';
import { TodoWriteRepoPortToken } from '../../constants';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
type CompleteTodoUseCaseResponse = Either<
void,
diff --git a/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/delete-todo.handler.ts b/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/delete-todo.handler.ts
index 82533a784..7b38884c2 100644
--- a/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/delete-todo.handler.ts
+++ b/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/delete-todo.handler.ts
@@ -10,7 +10,7 @@ import { Inject } from '@nestjs/common';
import { ApplicationErrors } from '../errors';
import { TodoWriteRepoPort } from '../../ports/todo-write.repo-port';
import { TodoWriteRepoPortToken } from '../../constants';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
type DeleteTodoUseCaseResponse = Either<
void,
diff --git a/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/modify-title-todo.handler.ts b/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/modify-title-todo.handler.ts
index f8468f0f0..abe5c7715 100644
--- a/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/modify-title-todo.handler.ts
+++ b/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/modify-title-todo.handler.ts
@@ -12,7 +12,7 @@ import { TitleVO } from '../../domain/title.value-object';
import { TodoWriteRepoPort } from '../../ports/todo-write.repo-port';
import { TodoWriteRepoPortToken } from '../../constants';
import { ApplicationErrors } from '../errors';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
type ModifyTodoTitleResponse = Either<
void,
diff --git a/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/uncomplete-todo.handler.ts b/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/uncomplete-todo.handler.ts
index 3056599e8..fa8cdfddd 100644
--- a/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/uncomplete-todo.handler.ts
+++ b/backend/src/lib/bounded-contexts/todo/todo/application/command-handlers/uncomplete-todo.handler.ts
@@ -11,7 +11,7 @@ import { Inject } from '@nestjs/common';
import { ApplicationErrors } from '../errors';
import { TodoWriteRepoPort } from '../../ports/todo-write.repo-port';
import { TodoWriteRepoPortToken } from '../../constants';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
type UncompleteTodoUseCaseResponse = Either<
void,
diff --git a/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-added-publish-pubsub.handler.ts b/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-added-publish-pubsub.handler.ts
index 1397c087f..987bbfbcb 100644
--- a/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-added-publish-pubsub.handler.ts
+++ b/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-added-publish-pubsub.handler.ts
@@ -3,7 +3,7 @@ import { Inject } from '@nestjs/common';
import { TodoAddedDomainEvent } from '../../../domain/events/todo-added.event';
import { PubSubIntegrationEventBusToken } from '../../../constants';
import { TodoAddedIntegrationEvent } from '../../../contracts/integration-events/todo-added.integration-event';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
export class TodoAddedDomainToPubSubIntegrationEventHandler
implements Application.IHandleDomainEvent
diff --git a/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-added.handler.ts b/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-added.handler.ts
index 21f961696..5a0a28882 100644
--- a/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-added.handler.ts
+++ b/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-added.handler.ts
@@ -3,7 +3,7 @@ import { Inject } from '@nestjs/common';
import { TodoAddedDomainEvent } from '../../../domain/events/todo-added.event';
import { StreamingIntegrationEventBusToken } from '../../../constants';
import { TodoAddedIntegrationEvent } from '../../../contracts/integration-events/todo-added.integration-event';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
export class TodoAddedDomainToIntegrationEventHandler
implements Application.IHandleDomainEvent
diff --git a/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-completed-publish-pubsub.handler.ts b/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-completed-publish-pubsub.handler.ts
index 49c105f07..ae05b48c3 100644
--- a/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-completed-publish-pubsub.handler.ts
+++ b/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-completed-publish-pubsub.handler.ts
@@ -3,7 +3,7 @@ import { Inject } from '@nestjs/common';
import { TodoCompletedDomainEvent } from '../../../domain/events/todo-completed.event';
import { PubSubIntegrationEventBusToken } from '../../../constants';
import { TodoCompletedIntegrationEvent } from '../../../contracts/integration-events/todo-completed.integration-event';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
export class TodoCompletedDomainToPubSubIntegrationEventHandler
implements Application.IHandleDomainEvent
diff --git a/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-completed.handler.ts b/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-completed.handler.ts
index 463f3cc1b..09da3b0ad 100644
--- a/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-completed.handler.ts
+++ b/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-completed.handler.ts
@@ -3,7 +3,7 @@ import { Inject } from '@nestjs/common';
import { TodoCompletedDomainEvent } from '../../../domain/events/todo-completed.event';
import { TodoCompletedIntegrationEvent } from '../../../contracts/integration-events/todo-completed.integration-event';
import { StreamingIntegrationEventBusToken } from '../../../constants';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
export class TodoCompletedDomainToIntegrationEventHandler
implements Application.IHandleDomainEvent
diff --git a/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-deleted-publish-pubsub.handler.ts b/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-deleted-publish-pubsub.handler.ts
index 79773fbf4..0178d39f8 100644
--- a/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-deleted-publish-pubsub.handler.ts
+++ b/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-deleted-publish-pubsub.handler.ts
@@ -3,7 +3,7 @@ import { Inject } from '@nestjs/common';
import { TodoDeletedDomainEvent } from '../../../domain/events/todo-deleted.event';
import { PubSubIntegrationEventBusToken } from '../../../constants';
import { TodoDeletedIntegrationEvent } from '../../../contracts/integration-events/todo-deleted.integration-event';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
export class TodoDeletedDomainToPubSubIntegrationEventHandler
implements Application.IHandleDomainEvent
diff --git a/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-modified-title-publish-pubsub.handler.ts b/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-modified-title-publish-pubsub.handler.ts
index 70a209608..aa95a402a 100644
--- a/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-modified-title-publish-pubsub.handler.ts
+++ b/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-modified-title-publish-pubsub.handler.ts
@@ -3,7 +3,7 @@ import { Inject } from '@nestjs/common';
import { TodoModifiedTitleDomainEvent } from '../../../domain/events/todo-modified-title.event';
import { PubSubIntegrationEventBusToken } from '../../../constants';
import { TodoModifiedTitleIntegrationEvent } from '../../../contracts/integration-events/todo-modified-title.integration-event';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
export class TodoModifiedTitleDomainToPubSubIntegrationEventHandler
implements Application.IHandleDomainEvent
diff --git a/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-uncompleted-publish-pubsub.handler.ts b/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-uncompleted-publish-pubsub.handler.ts
index 8ef54ed92..1ee6b6734 100644
--- a/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-uncompleted-publish-pubsub.handler.ts
+++ b/backend/src/lib/bounded-contexts/todo/todo/application/event-handlers/domain/todo-uncompleted-publish-pubsub.handler.ts
@@ -3,7 +3,7 @@ import { Inject } from '@nestjs/common';
import { TodoUncompletedDomainEvent } from '../../../domain/events/todo-uncompleted.event';
import { PubSubIntegrationEventBusToken } from '../../../constants';
import { TodoUncompletedIntegrationEvent } from '../../../contracts/integration-events/todo-uncompleted.integration-event';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
export class TodoUncompletedDomainToPubSubIntegrationEventHandler
implements Application.IHandleDomainEvent
diff --git a/backend/src/lib/bounded-contexts/todo/todo/application/query-handlers/get-todos.handler.ts b/backend/src/lib/bounded-contexts/todo/todo/application/query-handlers/get-todos.handler.ts
index 61ccd6152..588ff5bc3 100644
--- a/backend/src/lib/bounded-contexts/todo/todo/application/query-handlers/get-todos.handler.ts
+++ b/backend/src/lib/bounded-contexts/todo/todo/application/query-handlers/get-todos.handler.ts
@@ -4,7 +4,7 @@ import { Inject } from '@nestjs/common';
import { TTodoReadModelSnapshot } from '../../domain/todo.read-model';
import { TodoReadRepoPort } from '../../ports/todo-read.repo-port';
import { GetTodosQuery } from '../../queries/get-todos.query';
-import { Traceable } from '@bitloops/bl-boilerplate-infra-telemetry';
+import { Traceable } from '@lib/infra/telemetry';
import { TodoReadRepoPortToken } from '../../constants';
export type GetTodosQueryHandlerResponse = Either<
diff --git a/backend/src/lib/infra/mongo/index.ts b/backend/src/lib/infra/mongo/index.ts
new file mode 100644
index 000000000..cf9bf08f2
--- /dev/null
+++ b/backend/src/lib/infra/mongo/index.ts
@@ -0,0 +1 @@
+export { MongoModule } from './mongo.module';
diff --git a/backend/src/lib/infra/mongo/interfaces.ts b/backend/src/lib/infra/mongo/interfaces.ts
new file mode 100644
index 000000000..7e017ceec
--- /dev/null
+++ b/backend/src/lib/infra/mongo/interfaces.ts
@@ -0,0 +1,15 @@
+import { ModuleMetadata } from '@nestjs/common';
+import { MongoClientOptions } from 'mongodb';
+
+export interface MongoModuleAsyncOptions
+ extends Pick {
+ useFactory: (
+ ...args: any[]
+ ) => Promise | MongoModuleOptions;
+ inject?: any[];
+}
+
+export interface MongoModuleOptions {
+ url: string;
+ options?: MongoClientOptions;
+}
diff --git a/backend/src/lib/infra/mongo/mongo.constants.ts b/backend/src/lib/infra/mongo/mongo.constants.ts
new file mode 100644
index 000000000..2866cb5fc
--- /dev/null
+++ b/backend/src/lib/infra/mongo/mongo.constants.ts
@@ -0,0 +1,4 @@
+export const constants = {
+ MONGO_DB_CLIENT: 'MONGO_DB_CLIENT',
+ MONGO_DB_CONNECTION: 'MONGO_DB_CONNECTION',
+};
diff --git a/backend/src/lib/infra/mongo/mongo.module.ts b/backend/src/lib/infra/mongo/mongo.module.ts
new file mode 100644
index 000000000..162b2bb10
--- /dev/null
+++ b/backend/src/lib/infra/mongo/mongo.module.ts
@@ -0,0 +1,98 @@
+import { DynamicModule, Global, Inject, Logger, Module } from '@nestjs/common';
+import { MongoClient } from 'mongodb';
+import { constants } from './mongo.constants';
+import { MongoModuleAsyncOptions, MongoModuleOptions } from './interfaces';
+
+@Global()
+@Module({})
+export class MongoModule {
+ constructor(
+ @Inject(constants.MONGO_DB_CLIENT) private mongoDbClient: MongoClient,
+ ) {}
+ static forRoot(options: MongoModuleOptions): DynamicModule {
+ return {
+ module: MongoModule,
+ providers: [
+ Logger,
+ {
+ provide: constants.MONGO_DB_CLIENT,
+ useFactory: (): MongoClient =>
+ new MongoClient(options.url, options.options),
+ },
+ {
+ provide: constants.MONGO_DB_CONNECTION,
+ useFactory: async (client: MongoClient) => {
+ try {
+ // mongodb://localhost:27017
+ const connection = await client.connect();
+ console.log('*** After connect');
+ return connection;
+ } catch (error) {
+ console.log('*** In error');
+ throw error;
+ }
+ },
+ inject: [constants.MONGO_DB_CLIENT],
+ },
+ ],
+ exports: [constants.MONGO_DB_CLIENT, constants.MONGO_DB_CONNECTION],
+ };
+ }
+ // static forRootAsync(options: PostgresModuleAsyncOptions): DynamicModule {
+ // const poolProvider: Provider = {
+ // provide: POSTGRES_DB_CONNECTION,
+ // useFactory: async (...args: any[]) => {
+ // const poolConfig = await options.useFactory(...args);
+ // return new Pool(poolConfig);
+ // },
+ // inject: options.inject || [],
+ // };
+ // return {
+ // module: PostgresCoreModule,
+ // providers: [poolProvider],
+ // exports: [poolProvider],
+ // };
+ // }
+
+ static forRootAsync(
+ options: MongoModuleAsyncOptions,
+ // options: MongoModuleOptions,
+ ): DynamicModule {
+ return {
+ module: MongoModule,
+ imports: options.imports || [],
+ providers: [
+ {
+ provide: constants.MONGO_DB_CLIENT,
+ useFactory: async (...args: any[]) => {
+ const mongoModuleOptions = await options.useFactory(...args);
+ return new MongoClient(mongoModuleOptions.url, {
+ ...mongoModuleOptions.options,
+ });
+ },
+ inject: options.inject || [],
+ },
+ {
+ provide: constants.MONGO_DB_CONNECTION,
+ useFactory: async (client: MongoClient) => {
+ try {
+ // mongodb://localhost:27017
+ const connection = await client.connect();
+ console.log('*** After connect');
+ return connection;
+ } catch (error) {
+ console.log('*** In error');
+ throw error;
+ }
+ },
+ inject: [constants.MONGO_DB_CLIENT],
+ },
+ ],
+ exports: [constants.MONGO_DB_CLIENT, constants.MONGO_DB_CONNECTION],
+ };
+ }
+
+ async onModuleDestroy() {
+ await this.mongoDbClient.close();
+ }
+}
diff --git a/backend/src/lib/infra/nest-auth-passport/auth.module.ts b/backend/src/lib/infra/nest-auth-passport/auth.module.ts
new file mode 100644
index 000000000..ec7cec4b3
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/auth.module.ts
@@ -0,0 +1,72 @@
+import { DynamicModule, Module, Type } from '@nestjs/common';
+import { PassportModule } from '@nestjs/passport';
+import { AuthService } from './auth.service';
+import { LocalStrategy } from './local.strategy';
+import { UsersService } from './users/users.service';
+import { UserRepoPortToken } from './users/user-repo.port';
+import { JwtAuthModule } from './jwt/jwt.module';
+import { UserPostgresRepository } from './users/user-repo';
+import {
+ PostgresModule,
+ PostgresModuleAsyncOptions,
+} from '@lib/infra/postgres';
+import { JwtModuleAsyncOptions } from '@nestjs/jwt';
+import { JWTSecret, IntegrationEventBusToken } from './constants';
+import { Infra } from '@bitloops/bl-boilerplate-core';
+
+@Module({
+ imports: [PassportModule],
+ providers: [
+ AuthService,
+ LocalStrategy,
+ UsersService,
+ { provide: UserRepoPortToken, useClass: UserPostgresRepository },
+ ],
+ exports: [AuthService],
+})
+export class AuthModule {
+ static forRootAsync({
+ jwtOptions,
+ postgresOptions,
+ integrationEventBus,
+ }: {
+ jwtOptions: JwtModuleAsyncOptions;
+ postgresOptions: PostgresModuleAsyncOptions;
+ integrationEventBus: Type;
+ }): DynamicModule {
+ const jwtSecretProvider = {
+ provide: JWTSecret,
+ useFactory: async (...args: any[]) => {
+ if (!jwtOptions.useFactory) {
+ throw new Error('No useFactory function provided');
+ }
+ return ((await jwtOptions.useFactory(...args)) as any).secret;
+ },
+ inject: jwtOptions.inject,
+ };
+ const integrationEventBusProvider = {
+ provide: IntegrationEventBusToken,
+ useClass: integrationEventBus,
+ };
+
+ return {
+ module: AuthModule,
+ imports: [
+ JwtAuthModule.registerAsync(jwtOptions),
+ PostgresModule.forRootAsync(postgresOptions),
+ PostgresModule.forFeature(
+ `-- DROP TABLE users;
+ CREATE TABLE IF NOT EXISTS users (
+ "id" UUID,
+ "email" VARCHAR(100) NOT NULL,
+ "password" VARCHAR(100) NOT NULL,
+ "last_login" TIMESTAMP,
+ PRIMARY KEY ("id")
+ );`,
+ ),
+ ],
+ providers: [jwtSecretProvider, integrationEventBusProvider],
+ exports: [jwtSecretProvider],
+ };
+ }
+}
diff --git a/backend/src/lib/infra/nest-auth-passport/auth.service.ts b/backend/src/lib/infra/nest-auth-passport/auth.service.ts
new file mode 100644
index 000000000..8dfa90ed5
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/auth.service.ts
@@ -0,0 +1,49 @@
+import { Injectable } from '@nestjs/common';
+import { JwtService } from '@nestjs/jwt';
+import * as bcrypt from 'bcrypt';
+import { Application, Either } from '@bitloops/bl-boilerplate-core';
+import { UsersService } from './users/users.service';
+import { User } from './users/user.model';
+import { randomUUID } from 'crypto';
+
+@Injectable()
+export class AuthService {
+ constructor(private usersService: UsersService, private jwtService: JwtService) {}
+
+ async validateUser(email: string, pass: string): Promise {
+ const user: User | null = await this.usersService.findOne(email);
+ if (user) {
+ const passwordsMatch = await bcrypt.compare(pass, user.password);
+ if (passwordsMatch) {
+ const { password, ...result } = user;
+ return result;
+ }
+ }
+ return null;
+ }
+
+ async login(user: User) {
+ const payload = {
+ email: user.email,
+ sub: user.id,
+ };
+ return {
+ access_token: this.jwtService.sign(payload),
+ };
+ }
+
+ async register(user: User): Promise> {
+ const hashedPassword = await this.hashPassword(user.password);
+ if (!user.id) user.id = randomUUID();
+ const userToBeCreated = {
+ ...user,
+ password: hashedPassword,
+ };
+ return this.usersService.create(userToBeCreated);
+ }
+
+ private hashPassword(password: string) {
+ const saltOrRounds = 10;
+ return bcrypt.hash(password, saltOrRounds);
+ }
+}
diff --git a/backend/src/lib/infra/nest-auth-passport/constants.ts b/backend/src/lib/infra/nest-auth-passport/constants.ts
new file mode 100644
index 000000000..6f7833e0a
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/constants.ts
@@ -0,0 +1,3 @@
+export const JWTSecret = Symbol('JWTSecret');
+
+export const IntegrationEventBusToken = Symbol('IntegrationEventBusToken');
diff --git a/backend/src/lib/infra/nest-auth-passport/dto/login.dto.ts b/backend/src/lib/infra/nest-auth-passport/dto/login.dto.ts
new file mode 100644
index 000000000..73be39181
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/dto/login.dto.ts
@@ -0,0 +1,11 @@
+import { IsEmail, IsString, IsNotEmpty } from 'class-validator';
+
+export class LoginDTO {
+ @IsEmail()
+ @IsNotEmpty()
+ readonly email: string;
+
+ @IsString()
+ @IsNotEmpty()
+ readonly password: string;
+}
diff --git a/backend/src/lib/infra/nest-auth-passport/index.ts b/backend/src/lib/infra/nest-auth-passport/index.ts
new file mode 100644
index 000000000..d2fb28be2
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/index.ts
@@ -0,0 +1,13 @@
+import 'reflect-metadata';
+
+export * from './jwt/jwt.module';
+export * from './jwt/jwt-auth.guard';
+export * from './jwt/jwt-grpc-auth.guard';
+export * from './jwt/authdata.decorator';
+
+export * from './auth.module';
+export * from './auth.service';
+export * from './local-auth.guard';
+
+export * from './users/user-registered.integration-event';
+export * from './jwt/async-local-storage.interceptor';
diff --git a/backend/src/lib/infra/nest-auth-passport/jwt/async-local-storage.interceptor.ts b/backend/src/lib/infra/nest-auth-passport/jwt/async-local-storage.interceptor.ts
new file mode 100644
index 000000000..84d212d2c
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/jwt/async-local-storage.interceptor.ts
@@ -0,0 +1,55 @@
+import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
+import { asyncLocalStorage } from '@bitloops/bl-boilerplate-core';
+import { Observable } from 'rxjs';
+
+@Injectable()
+export class AsyncLocalStorageInterceptor implements NestInterceptor {
+ intercept(context: ExecutionContext, next: CallHandler): Observable {
+ if (context.getType() === 'http') {
+ // do something that is only important in the context of regular HTTP requests (REST)
+ const request: any = context.switchToHttp().getRequest();
+
+ const store = asyncLocalStorage.getStore();
+ if (!store)
+ throw new Error('No store found, did you forget to attach correlation middleware?');
+ if (!request.user) {
+ return next.handle();
+ }
+ const token = this.getJWTToken(request);
+ const email = request.user.email;
+ const userId = request.user.userId;
+ store.set('context', { userId, email, jwt: token });
+
+ return next.handle();
+ } else if (context.getType() === 'rpc') {
+ // do something that is only important in the context of Microservice requests
+ const data = context.switchToRpc().getData();
+ const requestContext: any = context.switchToRpc().getContext();
+ const { decodedToken, jwt } = requestContext;
+
+ const store = asyncLocalStorage.getStore();
+ if (!store)
+ throw new Error('No store found, did you forget to attach correlation middleware?');
+ if (!decodedToken) {
+ return next.handle();
+ }
+
+ const email = decodedToken.email;
+
+ const userId = decodedToken.sub;
+ store.set('context', { userId, email, jwt });
+ return next.handle();
+ }
+ // TODO Handle graphQL
+ return next.handle();
+ }
+
+ private getJWTToken(req: Request): string {
+ const authHeader = (req.headers as any)['authorization'];
+ if (authHeader) {
+ const token = authHeader.split('Bearer ')[1];
+ return token;
+ }
+ return '';
+ }
+}
diff --git a/backend/src/lib/infra/nest-auth-passport/jwt/authdata.decorator.ts b/backend/src/lib/infra/nest-auth-passport/jwt/authdata.decorator.ts
new file mode 100644
index 000000000..4c232d04b
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/jwt/authdata.decorator.ts
@@ -0,0 +1,11 @@
+import { createParamDecorator, ExecutionContext } from '@nestjs/common';
+
+export const GetAuthData = createParamDecorator(
+ (data: unknown, ctx: ExecutionContext) => {
+ const context = ctx.switchToRpc().getContext();
+ return {
+ user: { id: context.decodedToken.sub, email: context.decodedToken.email },
+ jwt: context.jwt,
+ };
+ },
+);
diff --git a/backend/src/lib/infra/nest-auth-passport/jwt/constants.ts b/backend/src/lib/infra/nest-auth-passport/jwt/constants.ts
new file mode 100644
index 000000000..de4937753
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/jwt/constants.ts
@@ -0,0 +1 @@
+export const JWT_SECRET = Symbol('jwtSecret');
diff --git a/backend/src/lib/infra/nest-auth-passport/jwt/jwt-auth.guard.ts b/backend/src/lib/infra/nest-auth-passport/jwt/jwt-auth.guard.ts
new file mode 100644
index 000000000..2155290ed
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/jwt/jwt-auth.guard.ts
@@ -0,0 +1,5 @@
+import { Injectable } from '@nestjs/common';
+import { AuthGuard } from '@nestjs/passport';
+
+@Injectable()
+export class JwtAuthGuard extends AuthGuard('jwt') {}
diff --git a/backend/src/lib/infra/nest-auth-passport/jwt/jwt-grpc-auth.guard.ts b/backend/src/lib/infra/nest-auth-passport/jwt/jwt-grpc-auth.guard.ts
new file mode 100644
index 000000000..64919b023
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/jwt/jwt-grpc-auth.guard.ts
@@ -0,0 +1,58 @@
+import { Injectable, ExecutionContext, Inject } from '@nestjs/common';
+import { CanActivate } from '@nestjs/common';
+import { RpcException } from '@nestjs/microservices';
+import * as jwt from 'jsonwebtoken';
+import { JWTSecret } from '../constants';
+
+@Injectable()
+export class JwtGrpcAuthGuard implements CanActivate {
+ constructor(
+ @Inject(JWTSecret)
+ private jwtSecret: string,
+ ) {}
+
+ canActivate(context: ExecutionContext): boolean {
+ const call = context.switchToRpc().getContext();
+ const metadata = call.internalRepr;
+ const bearerToken = metadata.get('authorization')?.[0].replace('Bearer ', '');
+
+ if (!bearerToken) {
+ throw new RpcException({
+ code: 3,
+ message: 'Missing required JWT token',
+ });
+ }
+
+ try {
+ const secret = this.jwtSecret;
+ const payload = jwt.verify(bearerToken, secret);
+ // if the token is an object and has the property exp, then it's a valid token
+ if (payload === undefined) {
+ throw new RpcException({
+ code: 3,
+ message: 'JWT token is missing',
+ });
+ }
+ if (payload === undefined || typeof payload !== 'object' || !payload.hasOwnProperty('exp')) {
+ throw new RpcException({
+ code: 3,
+ message: 'JWT token is invalid',
+ });
+ }
+ const decoded: jwt.JwtPayload = payload;
+
+ // check if the token is expired
+ if (decoded.exp && decoded.exp < Date.now() / 1000) {
+ throw new RpcException({
+ code: 16,
+ message: 'JWT token has expired',
+ });
+ }
+ call.decodedToken = decoded;
+ call.jwt = bearerToken;
+ return true;
+ } catch (error) {
+ throw new RpcException({ code: 3, message: 'Invalid JWT token' });
+ }
+ }
+}
diff --git a/backend/src/lib/infra/nest-auth-passport/jwt/jwt.module.ts b/backend/src/lib/infra/nest-auth-passport/jwt/jwt.module.ts
new file mode 100644
index 000000000..285b8d504
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/jwt/jwt.module.ts
@@ -0,0 +1,47 @@
+import { Module, DynamicModule } from '@nestjs/common';
+import {
+ JwtModuleOptions,
+ JwtModule,
+ JwtModuleAsyncOptions,
+} from '@nestjs/jwt';
+import { JwtStrategy } from './jwt.strategy';
+import { JWT_SECRET } from './constants';
+
+@Module({})
+export class JwtAuthModule {
+ static register(options: JwtModuleOptions): DynamicModule {
+ return {
+ module: JwtAuthModule,
+ imports: [JwtModule.register(options)],
+ providers: [
+ JwtStrategy,
+ {
+ provide: JWT_SECRET,
+ useValue: options.secret,
+ },
+ ],
+ exports: [JwtModule],
+ };
+ }
+
+ static registerAsync(options: JwtModuleAsyncOptions): DynamicModule {
+ return {
+ module: JwtAuthModule,
+ imports: [JwtModule.registerAsync(options)],
+ providers: [
+ JwtStrategy,
+ {
+ provide: JWT_SECRET,
+ useFactory: async (...args: any[]) => {
+ if (!options.useFactory) {
+ throw new Error('No useFactory function provided');
+ }
+ return ((await options.useFactory(...args)) as any).secret;
+ },
+ inject: options.inject,
+ },
+ ],
+ exports: [JwtModule],
+ };
+ }
+}
diff --git a/backend/src/lib/infra/nest-auth-passport/jwt/jwt.strategy.ts b/backend/src/lib/infra/nest-auth-passport/jwt/jwt.strategy.ts
new file mode 100644
index 000000000..b40960895
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/jwt/jwt.strategy.ts
@@ -0,0 +1,22 @@
+import { ExtractJwt, Strategy } from 'passport-jwt';
+import { PassportStrategy } from '@nestjs/passport';
+import { Inject, Injectable } from '@nestjs/common';
+import { JWT_SECRET } from './constants';
+
+@Injectable()
+export class JwtStrategy extends PassportStrategy(Strategy) {
+ constructor(
+ @Inject(JWT_SECRET)
+ private jwtSecret: string,
+ ) {
+ super({
+ jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
+ ignoreExpiration: false,
+ secretOrKey: jwtSecret,
+ });
+ }
+
+ async validate(payload: any) {
+ return { userId: payload.sub, email: payload.email };
+ }
+}
diff --git a/backend/src/lib/infra/nest-auth-passport/local-auth.guard.ts b/backend/src/lib/infra/nest-auth-passport/local-auth.guard.ts
new file mode 100644
index 000000000..e18bb58b3
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/local-auth.guard.ts
@@ -0,0 +1,20 @@
+import { BadRequestException, CanActivate, ExecutionContext, Injectable } from '@nestjs/common';
+import { AuthGuard } from '@nestjs/passport';
+import { plainToClass } from 'class-transformer';
+import { validate } from 'class-validator';
+import { LoginDTO } from './dto/login.dto';
+
+@Injectable()
+export class LocalAuthGuard extends AuthGuard('local') implements CanActivate {
+ async canActivate(context: ExecutionContext): Promise {
+ const req = context.switchToHttp().getRequest();
+ const loginDto = plainToClass(LoginDTO, req.body);
+ const errors = await validate(loginDto);
+
+ if (errors.length > 0) {
+ throw new BadRequestException(errors);
+ }
+
+ return super.canActivate(context) as Promise;
+ }
+}
diff --git a/backend/src/lib/infra/nest-auth-passport/local.strategy.ts b/backend/src/lib/infra/nest-auth-passport/local.strategy.ts
new file mode 100644
index 000000000..2609c1124
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/local.strategy.ts
@@ -0,0 +1,19 @@
+import { Strategy } from 'passport-local';
+import { PassportStrategy } from '@nestjs/passport';
+import { Injectable, UnauthorizedException } from '@nestjs/common';
+import { AuthService } from './auth.service';
+
+@Injectable()
+export class LocalStrategy extends PassportStrategy(Strategy) {
+ constructor(private authService: AuthService) {
+ super({ usernameField: 'email' });
+ }
+
+ async validate(email: string, password: string): Promise {
+ const user = await this.authService.validateUser(email, password);
+ if (!user) {
+ throw new UnauthorizedException();
+ }
+ return user;
+ }
+}
diff --git a/backend/src/lib/infra/nest-auth-passport/users/user-registered.integration-event.ts b/backend/src/lib/infra/nest-auth-passport/users/user-registered.integration-event.ts
new file mode 100644
index 000000000..886e199bc
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/users/user-registered.integration-event.ts
@@ -0,0 +1,29 @@
+import { Infra, Domain, asyncLocalStorage } from '@bitloops/bl-boilerplate-core';
+
+type UserRegisteredIntegrationSchemaV1 = {
+ userId: string;
+ email: string;
+};
+
+export class UserRegisteredIntegrationEvent
+ implements Infra.EventBus.IIntegrationEvent
+{
+ [x: string]: any;
+ public payload: UserRegisteredIntegrationSchemaV1;
+ public metadata: Infra.EventBus.TIntegrationEventMetadata;
+ static boundedContextId = 'Bitloops_IAM';
+ static versions = ['v1'];
+
+ constructor(payload: UserRegisteredIntegrationSchemaV1) {
+ this.metadata = {
+ boundedContextId: UserRegisteredIntegrationEvent.boundedContextId,
+ version: UserRegisteredIntegrationEvent.versions[0],
+ createdTimestamp: Date.now(),
+ messageId: new Domain.UUIDv4().toString(),
+ context: {},
+ correlationId: asyncLocalStorage.getStore()?.get('correlationId'),
+ };
+ this.payload = payload;
+ Object.assign(this, this.payload, this.metadata);
+ }
+}
diff --git a/backend/src/lib/infra/nest-auth-passport/users/user-repo.port.ts b/backend/src/lib/infra/nest-auth-passport/users/user-repo.port.ts
new file mode 100644
index 000000000..531f88900
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/users/user-repo.port.ts
@@ -0,0 +1,11 @@
+import { Application, Either } from '@bitloops/bl-boilerplate-core';
+import { User } from './user.model';
+
+export interface UserRepoPort {
+ getByEmail(email: string): Promise;
+ checkDoesNotExistAndCreate(
+ user: User,
+ ): Promise>;
+}
+
+export const UserRepoPortToken = Symbol('UserRepoPortToken');
diff --git a/backend/src/lib/infra/nest-auth-passport/users/user-repo.ts b/backend/src/lib/infra/nest-auth-passport/users/user-repo.ts
new file mode 100644
index 000000000..094ac182e
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/users/user-repo.ts
@@ -0,0 +1,69 @@
+import { Application, Either, ok, fail, Infra } from '@bitloops/bl-boilerplate-core';
+import { Injectable, Inject } from '@nestjs/common';
+import { constants } from '../../postgres';
+import { UserRepoPort } from './user-repo.port';
+import { UserRegisteredIntegrationEvent } from './user-registered.integration-event';
+import { User } from './user.model';
+import { IntegrationEventBusToken } from '../constants';
+
+@Injectable()
+export class UserPostgresRepository implements UserRepoPort {
+ private readonly tableName = 'users';
+ constructor(
+ @Inject(constants.pg_connection) private readonly connection: any,
+ @Inject(IntegrationEventBusToken)
+ private readonly integrationEventBus: Infra.EventBus.IEventBus,
+ ) {}
+
+ async getByEmail(email: string): Promise {
+ const result = await this.connection.query(`SELECT * FROM ${this.tableName} WHERE email = $1`, [
+ email,
+ ]);
+
+ if (!result.rows.length) {
+ return null;
+ }
+
+ const user = result.rows[0];
+
+ return user;
+ }
+
+ async checkDoesNotExistAndCreate(
+ user: User,
+ ): Promise> {
+ // note: we don't try/catch this because if connecting throws an exception
+ // we don't need to dispose of the client (it will be undefined)
+ const client = await this.connection.connect();
+
+ try {
+ await client.query('BEGIN');
+
+ const userExistsQuery = `SELECT * FROM ${this.tableName} WHERE email = $1`;
+ const res = await client.query(userExistsQuery, [user.email]);
+ if (res.rows.length > 0) {
+ throw new Application.Repo.Errors.Conflict(user.email);
+ }
+
+ const insertUserText = `INSERT INTO ${this.tableName} (id, email, password) VALUES ($1, $2, $3);`;
+
+ const { id, email, password } = user;
+ const insertUserValues = [id, email, password];
+ await this.connection.query(insertUserText, insertUserValues);
+ await client.query('COMMIT');
+
+ const event = new UserRegisteredIntegrationEvent({ userId: id!, email });
+ this.integrationEventBus.publish(event);
+ return ok();
+ } catch (e: any) {
+ await client.query('ROLLBACK');
+ if (e instanceof Application.Repo.Errors.Conflict) {
+ return fail(e);
+ }
+ console.log('Error in transaction:', e);
+ return fail(new Application.Repo.Errors.Unexpected(e.message));
+ } finally {
+ client.release();
+ }
+ }
+}
diff --git a/backend/src/lib/infra/nest-auth-passport/users/user.model.ts b/backend/src/lib/infra/nest-auth-passport/users/user.model.ts
new file mode 100644
index 000000000..238d0a0fc
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/users/user.model.ts
@@ -0,0 +1,5 @@
+export class User {
+ id?: string;
+ email: string;
+ password: string;
+}
diff --git a/backend/src/lib/infra/nest-auth-passport/users/users.service.ts b/backend/src/lib/infra/nest-auth-passport/users/users.service.ts
new file mode 100644
index 000000000..562fbf915
--- /dev/null
+++ b/backend/src/lib/infra/nest-auth-passport/users/users.service.ts
@@ -0,0 +1,23 @@
+import { Inject, Injectable } from '@nestjs/common';
+import { Application, Either } from '@bitloops/bl-boilerplate-core';
+import { UserRepoPort, UserRepoPortToken } from './user-repo.port';
+import { User } from './user.model';
+
+@Injectable()
+export class UsersService {
+ constructor(
+ @Inject(UserRepoPortToken)
+ private readonly userRepo: UserRepoPort,
+ ) {}
+
+ async findOne(email: string): Promise {
+ const user = await this.userRepo.getByEmail(email);
+ return user;
+ }
+
+ async create(
+ user: User,
+ ): Promise> {
+ return this.userRepo.checkDoesNotExistAndCreate(user);
+ }
+}
diff --git a/backend/src/lib/infra/nest-jetstream/buses/constants.ts b/backend/src/lib/infra/nest-jetstream/buses/constants.ts
new file mode 100644
index 000000000..472d6b3be
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/buses/constants.ts
@@ -0,0 +1,9 @@
+export const BUSES_TOKENS = {
+ PUBSUB_COMMAND_BUS: Symbol('PubSubCommandBus'),
+ PUBSUB_QUERY_BYS: Symbol('PubSubQueryBus'),
+ STREAMING_DOMAIN_EVENT_BUS: Symbol('StreamingDomainEventBusToken'),
+ STREAMING_INTEGRATION_EVENT_BUS: Symbol('StreamingIntegrationEventBusToken'),
+ STREAMING_COMMAND_BUS: Symbol('StreamingCommandBusToken'),
+ STREAMING_MESSAGE_BUS: Symbol('StreamingMessageBusToken'),
+ PUBSUB_INTEGRATION_EVENT_BUS: Symbol('PubSubIntegrationEventBusToken'),
+};
diff --git a/backend/src/lib/infra/nest-jetstream/buses/index.ts b/backend/src/lib/infra/nest-jetstream/buses/index.ts
new file mode 100644
index 000000000..14fd04b7b
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/buses/index.ts
@@ -0,0 +1,8 @@
+export { BUSES_TOKENS } from './constants';
+export { NatsStreamingDomainEventBus } from './nats-streaming-domain-event-bus';
+export { NatsPubSubCommandBus } from './nats-pubsub-command-bus';
+export { NatsPubSubQueryBus } from './nats-pubsub-query-bus';
+export { NatsStreamingIntegrationEventBus } from './nats-streaming-integration-event-bus';
+export { NatsStreamingCommandBus } from './nats-streaming-command-bus';
+export { NatsStreamingMessageBus } from './nats-streaming-message-bus';
+export { NatsPubSubIntegrationEventsBus } from './nats-pubsub-integration-events-bus';
diff --git a/backend/src/lib/infra/nest-jetstream/buses/nats-pubsub-command-bus.ts b/backend/src/lib/infra/nest-jetstream/buses/nats-pubsub-command-bus.ts
new file mode 100644
index 000000000..d9d63b217
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/buses/nats-pubsub-command-bus.ts
@@ -0,0 +1,151 @@
+import { Inject, Injectable, Logger } from '@nestjs/common';
+import { NatsConnection, JSONCodec, headers, Msg, MsgHdrs } from 'nats';
+import { Application, Infra } from '@bitloops/bl-boilerplate-core';
+import { ASYNC_LOCAL_STORAGE, TIMEOUT_MILLIS, ProvidersConstants } from '../jetstream.constants';
+import { ContextPropagation } from './utils/context-propagation';
+
+const jsonCodec = JSONCodec();
+
+@Injectable()
+export class NatsPubSubCommandBus implements Infra.CommandBus.IPubSubCommandBus {
+ private readonly logger = new Logger(NatsPubSubCommandBus.name);
+ private nc: NatsConnection;
+ private static commandPrefix = 'Commands_';
+
+ constructor(
+ @Inject(ProvidersConstants.JETSTREAM_PROVIDER) private readonly nats: any,
+ @Inject(ASYNC_LOCAL_STORAGE)
+ private readonly asyncLocalStorage: any,
+ @Inject(TIMEOUT_MILLIS)
+ private readonly timeoutMillis: number,
+ ) {
+ this.nc = this.nats.getConnection();
+ }
+
+ private getCorelationId() {
+ return this.asyncLocalStorage.getStore()?.get('correlationId');
+ }
+
+ private getContext() {
+ return this.asyncLocalStorage.getStore()?.get('context') || {};
+ }
+
+ async publish(command: Application.Command): Promise {
+ const topic = NatsPubSubCommandBus.getTopicFromCommandInstance(command);
+ this.logger.log('Publishing in :' + topic);
+ // TODO get from context and add both to headers and message metadata
+ command.correlationId = this.getCorelationId();
+ command.context = this.getContext();
+ const headers = this.generateHeaders(command);
+
+ this.nc.publish(topic, jsonCodec.encode(command), { headers });
+ }
+
+ async request(command: Application.Command): Promise {
+ const topic = NatsPubSubCommandBus.getTopicFromCommandInstance(command);
+
+ this.logger.log('Requesting in topic:' + topic);
+ // console.log('this.asyncLocalStorage.getStore()', this.asyncLocalStorage.getStore());
+ command.correlationId = this.getCorelationId();
+ command.context = this.getContext();
+ // command
+ const headers = this.generateHeaders(command);
+
+ try {
+ const response = await this.nc.request(topic, jsonCodec.encode(command), {
+ headers,
+ timeout: this.timeoutMillis,
+ });
+ return jsonCodec.decode(response.data);
+ } catch (error: any) {
+ this.logger.error(
+ `Error in command request for: ${topic}. Error message: ${error.message}`,
+ error.stack,
+ );
+
+ return { isOk: false, data: error.message };
+ }
+ }
+
+ async pubSubSubscribe(subject: string, handler: Application.ICommandHandler) {
+ try {
+ this.logger.log('Subscribing to:' + subject);
+ const sub = this.nc.subscribe(subject);
+ (async () => {
+ for await (const m of sub) {
+ try {
+ const command = jsonCodec.decode(m.data);
+
+ const contextData = ContextPropagation.createStoreFromMessageHeaders(m.headers);
+
+ await this.asyncLocalStorage.run(contextData, async () => {
+ return this.handleReceivedCommand(handler, command, m);
+ });
+ } catch (err: any) {
+ this.logger.error(
+ `[${subject}]: Error in command handling. Error message: ${err.message}`,
+ err.stack,
+ );
+ }
+ }
+ })();
+ } catch (err) {
+ this.logger.error('Error in command-bus subscribe::', err);
+ }
+ }
+
+ private generateHeaders(command: Application.Command): MsgHdrs {
+ const h = headers();
+ for (const [key, value] of Object.entries(command.metadata)) {
+ if (key === 'context' && value) {
+ h.append(key, JSON.stringify(value));
+ continue;
+ }
+ const header = value?.toString();
+ if (header) {
+ h.append(key, header);
+ }
+ }
+ return h;
+ }
+
+ static getTopicFromHandler(handler: Application.ICommandHandler): string {
+ const command = handler.command;
+ const boundedContext = handler.boundedContext;
+
+ return `${this.commandPrefix}${boundedContext}.${command.name}`;
+ }
+
+ static getTopicFromCommandInstance(command: Application.Command): string {
+ const boundedContext = command.metadata.boundedContextId;
+ const topic = `${this.commandPrefix}${boundedContext}.${command.constructor.name}`;
+ return topic;
+ }
+
+ private async handleReceivedCommand(
+ handler: Application.ICommandHandler,
+ command: any,
+ m: Msg,
+ ): Promise {
+ const reply = await handler.execute(command);
+ if (reply.isOk && reply.isOk() && m.reply) {
+ return this.nc.publish(
+ m.reply,
+ jsonCodec.encode({
+ isOk: true,
+ data: reply.value,
+ }),
+ );
+ } else if (reply.isFail && reply.isFail() && m.reply) {
+ return this.nc.publish(
+ m.reply,
+ jsonCodec.encode({
+ isOk: false,
+ error: reply.value,
+ }),
+ );
+ }
+ if (!reply) return;
+ else this.logger.error('Reply is neither ok nor error:' + reply);
+ }
+}
diff --git a/backend/src/lib/infra/nest-jetstream/buses/nats-pubsub-integration-events-bus.ts b/backend/src/lib/infra/nest-jetstream/buses/nats-pubsub-integration-events-bus.ts
new file mode 100644
index 000000000..4686874f5
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/buses/nats-pubsub-integration-events-bus.ts
@@ -0,0 +1,130 @@
+import { Inject, Injectable, Logger } from '@nestjs/common';
+import { NatsConnection, JSONCodec, headers, Msg, MsgHdrs } from 'nats';
+import { Application, Infra } from '@bitloops/bl-boilerplate-core';
+import { ASYNC_LOCAL_STORAGE, ProvidersConstants } from '../jetstream.constants';
+import { ContextPropagation } from './utils/context-propagation';
+
+const jsonCodec = JSONCodec>();
+
+@Injectable()
+export class NatsPubSubIntegrationEventsBus implements Infra.EventBus.IEventBus {
+ private readonly logger = new Logger(NatsPubSubIntegrationEventsBus.name);
+ private nc: NatsConnection;
+ private static topicPrefix = 'IntegrationEvents_';
+
+ constructor(
+ @Inject(ProvidersConstants.JETSTREAM_PROVIDER) private readonly nats: any,
+ @Inject(ASYNC_LOCAL_STORAGE)
+ private readonly asyncLocalStorage: any,
+ ) {
+ this.nc = this.nats.getConnection();
+ }
+
+ async publish(
+ eventsInput: Infra.EventBus.IntegrationEvent | Infra.EventBus.IntegrationEvent[],
+ ): Promise {
+ const integrationEvents: Infra.EventBus.IntegrationEvent[] = Array.isArray(eventsInput)
+ ? eventsInput
+ : [eventsInput];
+ await Promise.all(
+ integrationEvents.map(async (integrationEvent) => {
+ const topic = NatsPubSubIntegrationEventsBus.getTopicFromEventInstance(integrationEvent);
+ this.logger.log('Publishing in pubsub-integration-event-bus :' + topic);
+ integrationEvent.correlationId = this.getCorelationId();
+ integrationEvent.context = this.getContext();
+ const headers = this.generateHeaders(integrationEvent);
+
+ return this.nc.publish(topic, jsonCodec.encode(integrationEvent), {
+ headers,
+ });
+ }),
+ );
+ }
+
+ async subscribe(subject: string, handler: Application.IHandleIntegrationEvent) {
+ try {
+ this.logger.log('Subscribing to pubsub-integration-event:' + subject);
+ const sub = this.nc.subscribe(subject);
+ (async () => {
+ for await (const m of sub) {
+ const integrationEvent = jsonCodec.decode(m.data);
+
+ const contextData = ContextPropagation.createStoreFromMessageHeaders(m.headers);
+
+ await this.asyncLocalStorage.run(contextData, async () => {
+ return this.handleReceivedIntegrationEvent(handler, integrationEvent, m);
+ });
+ }
+ })();
+ } catch (err) {
+ this.logger.error('Error in pub-sub-integration-event-bus subscribe::', err);
+ }
+ }
+
+ unsubscribe(topic: string, eventHandler: Application.IHandleIntegrationEvent): Promise {
+ throw new Error('Method not implemented.');
+ }
+
+ private getCorelationId() {
+ return this.asyncLocalStorage.getStore()?.get('correlationId');
+ }
+
+ private getContext() {
+ return this.asyncLocalStorage.getStore()?.get('context') || {};
+ }
+
+ private generateHeaders(integrationEvents: Infra.EventBus.IntegrationEvent): MsgHdrs {
+ const h = headers();
+ for (const [key, value] of Object.entries(integrationEvents.metadata)) {
+ if (key === 'context' && value) {
+ h.append(key, JSON.stringify(value));
+ continue;
+ }
+ const header = value?.toString();
+ if (header) {
+ h.append(key, header);
+ }
+ }
+ return h;
+ }
+
+ static getTopicFromHandler(handler: Application.IHandleIntegrationEvent): string {
+ const event = handler.event;
+ const boundedContext = handler.boundedContext;
+
+ return `${this.topicPrefix}${boundedContext}.${event.name}`;
+ }
+
+ static getTopicFromEventInstance(integrationEvent: Infra.EventBus.IntegrationEvent): string {
+ const boundedContext = integrationEvent.metadata.boundedContextId;
+ const topic = `${this.topicPrefix}${boundedContext}.${integrationEvent.constructor.name}`;
+ return topic;
+ }
+
+ private async handleReceivedIntegrationEvent(
+ handler: Application.IHandleIntegrationEvent,
+ event: Infra.EventBus.IntegrationEvent,
+ m: Msg,
+ ) {
+ const reply = await handler.handle(event);
+ // if (reply.isOk && reply.isOk() && m.reply) {
+ // return this.nc.publish(
+ // m.reply,
+ // jsonCodec.encode({
+ // isOk: true,
+ // data: reply.value,
+ // }),
+ // );
+ // } else if (reply.isFail && reply.isFail() && m.reply) {
+ // return this.nc.publish(
+ // m.reply,
+ // jsonCodec.encode({
+ // isOk: false,
+ // error: reply.value,
+ // }),
+ // );
+ // }
+ if (!reply) return;
+ // else console.error('Reply is neither ok nor error:', reply);
+ }
+}
diff --git a/backend/src/lib/infra/nest-jetstream/buses/nats-pubsub-query-bus.ts b/backend/src/lib/infra/nest-jetstream/buses/nats-pubsub-query-bus.ts
new file mode 100644
index 000000000..ce6eae4e4
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/buses/nats-pubsub-query-bus.ts
@@ -0,0 +1,132 @@
+import { Inject, Injectable, Logger } from '@nestjs/common';
+import { NatsConnection, JSONCodec, headers, MsgHdrs } from 'nats';
+import { Application, Infra } from '@bitloops/bl-boilerplate-core';
+import { ASYNC_LOCAL_STORAGE, ProvidersConstants, TIMEOUT_MILLIS } from '../jetstream.constants';
+import { AsyncLocalStorage } from 'node:async_hooks';
+import { ContextPropagation } from './utils/context-propagation';
+
+const jsonCodec = JSONCodec();
+
+@Injectable()
+export class NatsPubSubQueryBus implements Infra.QueryBus.IQueryBus {
+ private readonly logger = new Logger(NatsPubSubQueryBus.name);
+ private nc: NatsConnection;
+ private static queryPrefix = 'Query_';
+ constructor(
+ @Inject(ProvidersConstants.JETSTREAM_PROVIDER) private readonly nats: any,
+ // @Optional()
+ @Inject(ASYNC_LOCAL_STORAGE)
+ private readonly asyncLocalStorage: AsyncLocalStorage,
+ @Inject(TIMEOUT_MILLIS)
+ private readonly timeoutMillis: number,
+ ) {
+ this.nc = this.nats.getConnection();
+ }
+
+ private getCorelationId() {
+ return this.asyncLocalStorage.getStore()?.get('correlationId');
+ }
+
+ private getContext() {
+ return this.asyncLocalStorage.getStore()?.get('context') || {};
+ }
+
+ async request(query: Application.Query): Promise {
+ const topic = NatsPubSubQueryBus.getTopicFromQueryInstance(query);
+ this.logger.log('Requesting query:' + topic);
+ query.correlationId = this.getCorelationId();
+ query.context = this.getContext();
+ const headers = this.generateHeaders(query);
+
+ try {
+ const response = await this.nc.request(topic, jsonCodec.encode(query), {
+ headers,
+ timeout: this.timeoutMillis,
+ });
+
+ const data = jsonCodec.decode(response.data);
+ this.logger.log('Response in query request:' + data);
+ return data;
+ } catch (err: any) {
+ this.logger.error(
+ `[${topic}]: Error in query request. Error message: ${err.message}`,
+ err.stack,
+ );
+ }
+ }
+
+ async pubSubSubscribe(subject: string, handler: Application.IQueryHandler) {
+ try {
+ this.logger.log('Subscribing query to: ' + subject);
+ // this.logger.log(`
+ // Subscribing ${subject}!
+ // `);
+ const sub = this.nc.subscribe(subject);
+ (async () => {
+ for await (const m of sub) {
+ try {
+ const query = jsonCodec.decode(m.data);
+
+ const contextData = ContextPropagation.createStoreFromMessageHeaders(m.headers);
+ const reply = await this.asyncLocalStorage.run(contextData, () => {
+ return handler.execute(query);
+ });
+ if (reply.isOk && reply.isOk() && m.reply) {
+ this.nc.publish(
+ m.reply,
+ jsonCodec.encode({
+ isOk: true,
+ data: reply.value,
+ }),
+ );
+ } else if (reply.isFail && reply.isFail() && m.reply) {
+ this.nc.publish(
+ m.reply,
+ jsonCodec.encode({
+ isOk: false,
+ error: reply.value,
+ }),
+ );
+ }
+
+ this.logger.log(`[${sub.getProcessed()}]: ${JSON.stringify(jsonCodec.decode(m.data))}`);
+ } catch (err: any) {
+ this.logger.error(
+ `[${subject}]: Error in query handling. Error message: ${err.message}`,
+ err.stack,
+ );
+ }
+ }
+ })();
+ } catch (err) {
+ this.logger.error('Error in query subscription:', err);
+ }
+ }
+
+ private generateHeaders(query: Application.Query): MsgHdrs {
+ const h = headers();
+ for (const [key, value] of Object.entries(query.metadata)) {
+ if (key === 'context' && value) {
+ h.append(key, JSON.stringify(value));
+ continue;
+ }
+ if (value) {
+ h.append(key, value.toString());
+ }
+ }
+ return h;
+ }
+
+ static getTopicFromHandler(handler: Application.IQueryHandler): string {
+ const query = handler.query;
+ const boundedContext = handler.boundedContext;
+
+ return `${this.queryPrefix}${boundedContext}.${query.name}`;
+ }
+
+ static getTopicFromQueryInstance(query: Application.Query): string {
+ const boundedContext = query.metadata.boundedContextId;
+ const topic = `${this.queryPrefix}${boundedContext}.${query.constructor.name}`;
+ return topic;
+ }
+}
diff --git a/backend/src/lib/infra/nest-jetstream/buses/nats-streaming-command-bus.ts b/backend/src/lib/infra/nest-jetstream/buses/nats-streaming-command-bus.ts
new file mode 100644
index 000000000..1147e743d
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/buses/nats-streaming-command-bus.ts
@@ -0,0 +1,157 @@
+import { Inject, Injectable, Logger } from '@nestjs/common';
+import {
+ NatsConnection,
+ JSONCodec,
+ JetStreamClient,
+ JetStreamPublishOptions,
+ consumerOpts,
+ createInbox,
+ headers,
+ MsgHdrs,
+} from 'nats';
+import { Application, Infra } from '@bitloops/bl-boilerplate-core';
+import { NestjsJetstream } from '../nestjs-jetstream.class';
+import { ASYNC_LOCAL_STORAGE, ProvidersConstants } from '../jetstream.constants';
+import { ContextPropagation } from './utils/context-propagation';
+
+const jsonCodec = JSONCodec();
+
+@Injectable()
+export class NatsStreamingCommandBus implements Infra.CommandBus.IStreamCommandBus {
+ private readonly logger = new Logger(NatsStreamingCommandBus.name);
+ private nc: NatsConnection;
+ private js: JetStreamClient;
+ constructor(
+ @Inject(ProvidersConstants.JETSTREAM_PROVIDER)
+ private readonly jetStreamProvider: NestjsJetstream,
+ @Inject(ASYNC_LOCAL_STORAGE)
+ private readonly asyncLocalStorage: any,
+ ) {
+ this.nc = this.jetStreamProvider.getConnection();
+ this.js = this.nc.jetstream();
+ }
+
+ private getCorelationId() {
+ return this.asyncLocalStorage.getStore()?.get('correlationId');
+ }
+
+ private getContext() {
+ return this.asyncLocalStorage.getStore()?.get('context') || {};
+ }
+
+ async publish(command: Application.Command): Promise {
+ const boundedContext = command.metadata.boundedContextId;
+ const stream = NatsStreamingCommandBus.getStreamName(boundedContext);
+ const subject = `${stream}.${command.constructor.name}`;
+ command.correlationId = this.getCorelationId();
+ command.context = this.getContext();
+ const headers = this.generateHeaders(command);
+ const options: Partial = { msgID: '', headers };
+ const message = jsonCodec.encode(command);
+ this.logger.log('publishing command to:' + subject);
+
+ await this.js.publish(subject, message, options);
+ }
+
+ async subscribe(subject: string, handler: Application.ICommandHandler) {
+ const durableName = NatsStreamingCommandBus.getDurableName(subject, handler);
+ const opts = consumerOpts();
+ opts.durable(durableName);
+ opts.manualAck();
+ opts.ackExplicit();
+ opts.deliverTo(createInbox());
+
+ const stream = subject.split('.')[0];
+ await this.jetStreamProvider.createStreamIfNotExists(stream, subject);
+
+ try {
+ this.logger.log('Subscribing to command: ' + subject);
+ // this.logger.log(`
+ // Subscribing ${subject}!
+ // `);
+ const sub = await this.js.subscribe(subject, opts);
+ (async () => {
+ for await (const m of sub) {
+ try {
+ const command = jsonCodec.decode(m.data) as any;
+
+ const contextData = ContextPropagation.createStoreFromMessageHeaders(m.headers);
+
+ const reply = await this.asyncLocalStorage.run(contextData, async () => {
+ return handler.execute(command);
+ });
+ if (reply.isFail && reply.isFail() && reply.value.nakable) {
+ m.nak();
+ } else m.ack();
+
+ this.logger.log(
+ `[Command ${sub.getProcessed()}]: ${JSON.stringify(jsonCodec.decode(m.data))}`,
+ );
+ } catch (err) {
+ // Depending on your use case, you might want to rethrow the error,
+ // nack the message, or handle the error in another way.
+ this.logger.log(
+ `[Command ${subject}]: Error executing command: ${JSON.stringify(err)}`,
+ );
+ m.ack();
+ }
+ }
+ this.logger.log('Exiting command loop...');
+ })();
+ this.logger.log('Subscribed to:' + subject);
+ } catch (err) {
+ this.logger.log(JSON.stringify({ subject, durableName }));
+ this.logger.error('Error subscribing to streaming command:', err);
+ }
+ }
+
+ unsubscribe(topic: string, commandHandler: Application.ICommandHandler): Promise {
+ throw new Error('Method not implemented.');
+ }
+
+ private generateHeaders(command: Application.Command): MsgHdrs {
+ const h = headers();
+ for (const [key, value] of Object.entries(command.metadata)) {
+ if (key === 'context' && value) {
+ h.append(key, JSON.stringify(value));
+ continue;
+ }
+ const header = value?.toString();
+ if (header) {
+ h.append(key, header);
+ }
+ }
+ return h;
+ }
+
+ static getSubjectFromHandler(handler: Application.ICommandHandler): string {
+ const command = handler.command;
+ const boundedContext = handler.boundedContext;
+
+ const stream = NatsStreamingCommandBus.getStreamName(boundedContext);
+ return `${stream}.${command?.name}`;
+ }
+
+ static getSubjectFromCommandInstance(
+ integrationEvent: Infra.EventBus.IntegrationEvent,
+ ): string {
+ const boundedContext = integrationEvent.metadata.boundedContextId;
+ const stream = NatsStreamingCommandBus.getStreamName(boundedContext);
+ const subject = `${stream}.${integrationEvent.constructor.name}`;
+ return subject;
+ }
+
+ static getStreamName(boundedContext: string) {
+ return `Streams_Commands_${boundedContext}`;
+ }
+
+ static getDurableName(
+ subject: string,
+
+ handler: Application.ICommandHandler,
+ ) {
+ // Durable name cannot contain a dot
+ const subjectWithoutDots = subject.replace(/\./g, '-');
+ return `${subjectWithoutDots}-${handler.constructor.name}`;
+ }
+}
diff --git a/backend/src/lib/infra/nest-jetstream/buses/nats-streaming-domain-event-bus.ts b/backend/src/lib/infra/nest-jetstream/buses/nats-streaming-domain-event-bus.ts
new file mode 100644
index 000000000..777f61c26
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/buses/nats-streaming-domain-event-bus.ts
@@ -0,0 +1,175 @@
+import { Inject, Injectable, Logger } from '@nestjs/common';
+import {
+ NatsConnection,
+ JSONCodec,
+ JetStreamClient,
+ JetStreamPublishOptions,
+ consumerOpts,
+ createInbox,
+ headers,
+ MsgHdrs,
+} from 'nats';
+import { Application, Domain, Infra } from '@bitloops/bl-boilerplate-core';
+import { NestjsJetstream } from '../nestjs-jetstream.class';
+import { ASYNC_LOCAL_STORAGE, ProvidersConstants } from '../jetstream.constants';
+import { ContextPropagation } from './utils/context-propagation';
+
+const jsonCodec = JSONCodec();
+
+@Injectable()
+export class NatsStreamingDomainEventBus implements Infra.EventBus.IEventBus {
+ private readonly logger = new Logger(NatsStreamingDomainEventBus.name);
+ private nc: NatsConnection;
+ private js: JetStreamClient;
+ constructor(
+ @Inject(ProvidersConstants.JETSTREAM_PROVIDER)
+ private readonly jetStreamProvider: NestjsJetstream,
+ @Inject(ASYNC_LOCAL_STORAGE)
+ private readonly asyncLocalStorage: any,
+ ) {
+ this.nc = this.jetStreamProvider.getConnection();
+ this.js = this.nc.jetstream();
+ }
+
+ async publish(
+ domainEventsInput: Domain.DomainEvent | Domain.DomainEvent[],
+ ): Promise {
+ let domainEvents: Domain.DomainEvent[];
+ Array.isArray(domainEventsInput)
+ ? (domainEvents = domainEventsInput)
+ : (domainEvents = [domainEventsInput]);
+ domainEvents.forEach(async (domainEvent) => {
+ const boundedContext = domainEvent.metadata.boundedContextId;
+ const stream = NatsStreamingDomainEventBus.getStreamName(boundedContext);
+ const subject = `${stream}.${domainEvent.constructor.name}`;
+ domainEvent.correlationId = this.getCorrelationId();
+ domainEvent.context = this.getContext();
+ const headers = this.generateHeaders(domainEvent);
+ const options: Partial = {
+ msgID: domainEvent.metadata.messageId,
+ headers,
+ };
+ // const pubAck =
+ // domainEvent.data = domainEvent.data.toPrimitives();
+ const message = jsonCodec.encode(domainEvent);
+ this.logger.log('publishing domain event to:' + subject);
+
+ try {
+ await this.js.publish(subject, message, options);
+ } catch (err) {
+ // NatsError: 503
+ this.logger.error('Error publishing domain event to:' + subject, err);
+ }
+
+ // the jetstream returns an acknowledgement with the
+ // stream that captured the message, it's assigned sequence
+ // and whether the message is a duplicate.
+ // const stream = pubAck.stream;
+ // const seq = pubAck.seq;
+ // const duplicate = pubAck.duplicate;
+ });
+ }
+
+ async subscribe(subject: string, handler: Application.IHandleDomainEvent) {
+ const durableName = NatsStreamingDomainEventBus.getDurableName(subject, handler);
+ const opts = consumerOpts();
+ opts.durable(durableName);
+ opts.manualAck();
+ opts.ackExplicit();
+ opts.deliverTo(createInbox());
+
+ const stream = subject.split('.')[0];
+ await this.jetStreamProvider.createStreamIfNotExists(stream, subject);
+
+ try {
+ this.logger.log('Subscribing domain event to: ' + subject);
+ // this.logger.log(`
+ // Subscribing ${subject}!
+ // `);
+ const sub = await this.js.subscribe(subject, opts);
+ (async () => {
+ for await (const m of sub) {
+ try {
+ const domainEvent = jsonCodec.decode(m.data) as any;
+ // domainEvent.data = Domain.EventData.fromPrimitives(domainEvent.data);
+
+ const contextData = ContextPropagation.createStoreFromMessageHeaders(m.headers);
+ const reply = await this.asyncLocalStorage.run(contextData, async () => {
+ return handler.handle(domainEvent);
+ });
+ // TODO check type
+ if (reply.isFail && reply.isFail() && reply.value.nakable) {
+ m.nak();
+ } else m.ack();
+
+ this.logger.log(
+ `[Domain Event ${sub.getProcessed()}]: ${JSON.stringify(jsonCodec.decode(m.data))}`,
+ );
+ } catch (err) {
+ // Depending on your use case, you might want to rethrow the error,
+ // nack the message, or handle the error in another way.
+ this.logger.error(
+ `[Domain Event ${subject}]: Error handling domain event: ${JSON.stringify(err)}`,
+ );
+ m.ack();
+ }
+ }
+ })();
+ } catch (err) {
+ this.logger.log(JSON.stringify({ subject, durableName }));
+ this.logger.error('Error subscribing to domain event:', err);
+ }
+ }
+
+ unsubscribe(topic: string, eventHandler: Application.IHandleDomainEvent): Promise {
+ throw new Error('Method not implemented.');
+ }
+
+ private getCorrelationId() {
+ return this.asyncLocalStorage.getStore()?.get('correlationId');
+ }
+
+ private getContext() {
+ return this.asyncLocalStorage.getStore()?.get('context') || {};
+ }
+
+ private generateHeaders(domainEvent: Domain.DomainEvent): MsgHdrs {
+ const h = headers();
+ for (const [key, value] of Object.entries(domainEvent.metadata)) {
+ if (key === 'context' && value) {
+ h.append(key, JSON.stringify(value));
+ continue;
+ }
+ const header = value?.toString();
+ if (header) {
+ h.append(key, header);
+ }
+ }
+ return h;
+ }
+
+ static getSubjectFromHandler(handler: Application.IHandleDomainEvent): string {
+ const event = handler.event;
+ const boundedContext = handler.boundedContext;
+ const stream = NatsStreamingDomainEventBus.getStreamName(boundedContext);
+ const subject = `${stream}.${event.name}`;
+ return subject;
+ }
+
+ static getSubjectFromEventInstance(domainEvent: Domain.DomainEvent): string {
+ const boundedContext = domainEvent.metadata.boundedContextId;
+ const stream = NatsStreamingDomainEventBus.getStreamName(boundedContext);
+ const subject = `${stream}.${domainEvent.constructor.name}`;
+ return subject;
+ }
+
+ static getStreamName(boundedContext: string) {
+ return `DomainEvents_${boundedContext}`;
+ }
+
+ static getDurableName(subject: string, handler: Application.IHandleDomainEvent) {
+ // Durable name cannot contain a dot
+ const subjectWithoutDots = subject.replace(/\./g, '-');
+ return `${subjectWithoutDots}-${handler.constructor.name}`;
+ }
+}
diff --git a/backend/src/lib/infra/nest-jetstream/buses/nats-streaming-integration-event-bus.ts b/backend/src/lib/infra/nest-jetstream/buses/nats-streaming-integration-event-bus.ts
new file mode 100644
index 000000000..c16b1fa56
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/buses/nats-streaming-integration-event-bus.ts
@@ -0,0 +1,176 @@
+import { Inject, Injectable, Logger } from '@nestjs/common';
+import {
+ NatsConnection,
+ JSONCodec,
+ JetStreamClient,
+ JetStreamPublishOptions,
+ consumerOpts,
+ createInbox,
+ MsgHdrs,
+ headers,
+} from 'nats';
+import { Application, Domain, Infra } from '@bitloops/bl-boilerplate-core';
+import { NestjsJetstream } from '../nestjs-jetstream.class';
+import { ASYNC_LOCAL_STORAGE, METADATA_HEADERS, ProvidersConstants } from '../jetstream.constants';
+import { ContextPropagation } from './utils/context-propagation';
+
+const jsonCodec = JSONCodec();
+
+@Injectable()
+export class NatsStreamingIntegrationEventBus implements Infra.EventBus.IEventBus {
+ private readonly logger = new Logger(NatsStreamingIntegrationEventBus.name);
+ private nc: NatsConnection;
+ private js: JetStreamClient;
+ constructor(
+ @Inject(ProvidersConstants.JETSTREAM_PROVIDER)
+ private readonly jetStreamProvider: NestjsJetstream,
+ @Inject(ASYNC_LOCAL_STORAGE)
+ private readonly asyncLocalStorage: any,
+ ) {
+ this.nc = this.jetStreamProvider.getConnection();
+ this.js = this.nc.jetstream();
+ }
+
+ async publish(
+ eventsInput: Infra.EventBus.IntegrationEvent | Infra.EventBus.IntegrationEvent[],
+ ): Promise {
+ let integrationEvents: Infra.EventBus.IntegrationEvent[];
+ Array.isArray(eventsInput)
+ ? (integrationEvents = eventsInput)
+ : (integrationEvents = [eventsInput]);
+ integrationEvents.forEach(async (integrationEvent) => {
+ integrationEvent.correlationId = this.getCorelationId();
+ integrationEvent.context = this.getContext();
+ const headers = this.generateHeaders(integrationEvent);
+ const options: Partial = {
+ msgID: integrationEvent.metadata.messageId,
+ headers,
+ };
+
+ const message = jsonCodec.encode(integrationEvent);
+ const subject =
+ NatsStreamingIntegrationEventBus.getSubjectFromEventInstance(integrationEvent);
+ this.logger.log('publishing integration event to:', subject);
+
+ try {
+ await this.js.publish(subject, message, options);
+ } catch (err) {
+ // NatsError: 503
+ this.logger.error('Error publishing integration event to:' + subject, err);
+ }
+
+ // the jetstream returns an acknowledgement with the
+ // stream that captured the message, it's assigned sequence
+ // and whether the message is a duplicate.
+ // const stream = pubAck.stream;
+ // const seq = pubAck.seq;
+ // const duplicate = pubAck.duplicate;
+ });
+ }
+
+ async subscribe(subject: string, handler: Application.IHandleIntegrationEvent) {
+ const durableName = NatsStreamingIntegrationEventBus.getDurableName(subject, handler);
+
+ const stream = subject.split('.')[0];
+ await this.jetStreamProvider.createStreamIfNotExists(stream, subject);
+ const opts = consumerOpts();
+ opts.durable(durableName);
+ opts.manualAck();
+ opts.ackExplicit();
+ opts.deliverTo(createInbox());
+
+ try {
+ this.logger.log('Subscribing integration event to: ', subject);
+ // this.logger.log(`
+ // Subscribing ${subject}!
+ // `);
+ const sub = await this.js.subscribe(subject, opts);
+ (async () => {
+ for await (const m of sub) {
+ try {
+ const integrationEvent = jsonCodec.decode(m.data) as any;
+
+ const contextData = ContextPropagation.createStoreFromMessageHeaders(m.headers);
+ const reply = await this.asyncLocalStorage.run(contextData, async () => {
+ return handler.handle(integrationEvent);
+ });
+
+ if (reply.isFail && reply.isFail() && reply.value.nakable) {
+ m.nak();
+ } else m.ack();
+
+ this.logger.log(`[${sub.getProcessed()}]: ${JSON.stringify(jsonCodec.decode(m.data))}`);
+ } catch (err) {
+ // Depending on your use case, you might want to rethrow the error,
+ // nack the message, or handle the error in another way.
+ this.logger.error(
+ `[${subject}]: Error handling integration event:, ${JSON.stringify(err)}`,
+ );
+ m.ack();
+ }
+ }
+ })();
+ } catch (err) {
+ this.logger.error('Error subscribing to integration event:', err);
+ }
+ }
+
+ unsubscribe>(
+ topic: string,
+ eventHandler: Application.IHandleIntegrationEvent,
+ ): Promise {
+ throw new Error('Method not implemented.');
+ }
+
+ private getCorelationId() {
+ return this.asyncLocalStorage.getStore()?.get('correlationId');
+ }
+
+ private getContext() {
+ return this.asyncLocalStorage.getStore()?.get('context') || {};
+ }
+
+ private generateHeaders(domainEvent: Infra.EventBus.IntegrationEvent): MsgHdrs {
+ const h = headers();
+ for (const [key, value] of Object.entries(domainEvent.metadata)) {
+ if (key === 'context' && value) {
+ h.append(key, JSON.stringify(value));
+ continue;
+ }
+ const header = value?.toString();
+ if (header) {
+ h.append(key, header);
+ }
+ }
+ return h;
+ }
+
+ static getSubjectFromHandler(handler: Application.IHandleIntegrationEvent): string {
+ const event = handler.event;
+ const boundedContext = handler.boundedContext;
+ const stream = NatsStreamingIntegrationEventBus.getStreamName(boundedContext);
+ const version = handler.version;
+ const subject = `${stream}.${event.name}.${version}`;
+ return subject;
+ }
+
+ static getSubjectFromEventInstance(
+ integrationEvent: Infra.EventBus.IntegrationEvent,
+ ): string {
+ const boundedContext = integrationEvent.metadata.boundedContextId;
+ const stream = NatsStreamingIntegrationEventBus.getStreamName(boundedContext);
+ const version = integrationEvent.metadata.version;
+ const subject = `${stream}.${integrationEvent.constructor.name}.${version}`;
+ return subject;
+ }
+
+ static getStreamName(boundedContext: string) {
+ return `Streams_IntegrationEvents_${boundedContext}`;
+ }
+
+ static getDurableName(subject: string, handler: Application.IHandleIntegrationEvent) {
+ // Durable name cannot contain a dot
+ const subjectWithoutDots = subject.replace(/\./g, '-');
+ return `${subjectWithoutDots}-${handler.constructor.name}`;
+ }
+}
diff --git a/backend/src/lib/infra/nest-jetstream/buses/nats-streaming-message-bus.ts b/backend/src/lib/infra/nest-jetstream/buses/nats-streaming-message-bus.ts
new file mode 100644
index 000000000..1b51af746
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/buses/nats-streaming-message-bus.ts
@@ -0,0 +1,83 @@
+import { Inject, Injectable, Logger } from '@nestjs/common';
+import {
+ NatsConnection,
+ JSONCodec,
+ JetStreamClient,
+ JetStreamPublishOptions,
+ consumerOpts,
+ createInbox,
+} from 'nats';
+import { randomUUID } from 'crypto';
+import { Infra, Domain } from '@bitloops/bl-boilerplate-core';
+import { NestjsJetstream } from '../nestjs-jetstream.class';
+import { ProvidersConstants } from '../jetstream.constants';
+
+const jsonCodec = JSONCodec();
+
+@Injectable()
+export class NatsStreamingMessageBus implements Infra.MessageBus.ISystemMessageBus {
+ private readonly logger = new Logger(NatsStreamingMessageBus.name);
+ private nc: NatsConnection;
+ private js: JetStreamClient;
+ constructor(
+ @Inject(ProvidersConstants.JETSTREAM_PROVIDER)
+ private readonly jetStreamProvider: NestjsJetstream,
+ ) {
+ this.nc = this.jetStreamProvider.getConnection();
+ this.js = this.nc.jetstream();
+ }
+
+ async publish(topic: string, message: Infra.MessageBus.IMessage): Promise {
+ const options: Partial = { msgID: randomUUID() };
+
+ const messageEncoded = jsonCodec.encode(message);
+
+ try {
+ await this.js.publish(topic, messageEncoded, options);
+ } catch (err) {
+ // NatsError: 503
+ this.logger.error('Error publishing message to topic: ' + topic, err);
+ }
+ }
+
+ async subscribe(subject: string, handler: Infra.MessageBus.SubscriberHandler) {
+ // TODO: Fix durable name
+ const durableName = 'test';
+
+ const stream = subject.split('.')[0];
+ await this.jetStreamProvider.createStreamIfNotExists(stream, subject);
+ const opts = consumerOpts();
+ opts.durable(durableName);
+ opts.manualAck();
+ opts.ackExplicit();
+ opts.deliverTo(createInbox());
+
+ try {
+ // this.logger.log(`
+ // Subscribing ${subject}!
+ // `);
+ const sub = await this.js.subscribe(subject, opts);
+ (async () => {
+ for await (const m of sub) {
+ const message = jsonCodec.decode(m.data) as any;
+
+ await handler(message);
+ m.ack();
+ }
+ })();
+ } catch (err) {
+ this.logger.error('Error subscribing to topic:', subject, err);
+ }
+ }
+ unsubscribe(
+ topic: string,
+ subscriberHandler: Infra.MessageBus.SubscriberHandler,
+ ): Promise {
+ throw new Error('Method not implemented.');
+ }
+ getSubscriberHandlers(
+ topic: string,
+ ): Infra.MessageBus.SubscriberHandler[] {
+ throw new Error('Method not implemented.');
+ }
+}
diff --git a/backend/src/lib/infra/nest-jetstream/buses/utils/context-propagation.ts b/backend/src/lib/infra/nest-jetstream/buses/utils/context-propagation.ts
new file mode 100644
index 000000000..803e2de0b
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/buses/utils/context-propagation.ts
@@ -0,0 +1,25 @@
+import { AsyncLocalStorageStore } from '@bitloops/bl-boilerplate-core';
+import { MsgHdrs } from 'nats';
+import { METADATA_HEADERS } from '../../jetstream.constants';
+
+export class ContextPropagation {
+ static createStoreFromMessageHeaders(headers?: MsgHdrs): AsyncLocalStorageStore {
+ const correlationId = headers?.get(METADATA_HEADERS.CORRELATION_ID);
+ const context = headers?.get(METADATA_HEADERS.CONTEXT);
+
+ if (!correlationId || !context) {
+ console.error('Missing correlationId or context', {
+ correlationId,
+ context,
+ });
+ }
+
+ const contextData: AsyncLocalStorageStore = new Map(
+ Object.entries({
+ correlationId,
+ context: context ? JSON.parse(context) : {},
+ }),
+ );
+ return contextData;
+ }
+}
diff --git a/backend/src/lib/infra/nest-jetstream/index.ts b/backend/src/lib/infra/nest-jetstream/index.ts
new file mode 100644
index 000000000..3d594cc91
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/index.ts
@@ -0,0 +1,4 @@
+import 'reflect-metadata';
+
+export * from './jetstream.module';
+export * from './buses';
diff --git a/backend/src/lib/infra/nest-jetstream/interfaces/module-feature-input.interface.ts b/backend/src/lib/infra/nest-jetstream/interfaces/module-feature-input.interface.ts
new file mode 100644
index 000000000..9c902c614
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/interfaces/module-feature-input.interface.ts
@@ -0,0 +1,9 @@
+export interface JetstreamModuleFeatureConfig {
+ moduleOfHandlers: any;
+ pubSubCommandHandlers?: any[];
+ pubSubQueryHandlers?: any[];
+ streamingDomainEventHandlers?: any[];
+ streamingIntegrationEventHandlers?: any[];
+ streamingCommandHandlers?: any[];
+ pubSubIntegrationEventHandlers?: any[];
+}
diff --git a/backend/src/lib/infra/nest-jetstream/jetstream-core.module.ts b/backend/src/lib/infra/nest-jetstream/jetstream-core.module.ts
new file mode 100644
index 000000000..2c24ab05b
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/jetstream-core.module.ts
@@ -0,0 +1,176 @@
+import { DynamicModule, Global, Module, Provider } from '@nestjs/common';
+import { ConnectionOptions } from 'nats';
+import { Application, asyncLocalStorage } from '@bitloops/bl-boilerplate-core';
+import { NestjsJetstream } from './nestjs-jetstream.class';
+import { NatsPubSubCommandBus } from './buses/nats-pubsub-command-bus';
+import { NatsPubSubQueryBus } from './buses/nats-pubsub-query-bus';
+import { NatsStreamingDomainEventBus } from './buses/nats-streaming-domain-event-bus';
+import { JetstreamModuleFeatureConfig } from './interfaces/module-feature-input.interface';
+import { BUSES_TOKENS } from './buses/constants';
+import { NatsStreamingIntegrationEventBus, NatsStreamingCommandBus } from './buses';
+import { SubscriptionsService } from './jetstream.subscriptions.service';
+import {
+ ASYNC_LOCAL_STORAGE,
+ HANDLERS_TOKENS,
+ ProvidersConstants,
+ TIMEOUT_MILLIS,
+} from './jetstream.constants';
+import { NatsPubSubIntegrationEventsBus } from './buses/nats-pubsub-integration-events-bus';
+
+const pubSubCommandBus = {
+ provide: BUSES_TOKENS.PUBSUB_COMMAND_BUS,
+ useClass: NatsPubSubCommandBus,
+};
+const pubSubQueryBus = {
+ provide: BUSES_TOKENS.PUBSUB_QUERY_BYS,
+ useClass: NatsPubSubQueryBus,
+};
+
+const streamingDomainEventBus = {
+ provide: BUSES_TOKENS.STREAMING_DOMAIN_EVENT_BUS,
+ useClass: NatsStreamingDomainEventBus,
+};
+
+const streamingIntegrationEventBus = {
+ provide: BUSES_TOKENS.STREAMING_INTEGRATION_EVENT_BUS,
+ useClass: NatsStreamingIntegrationEventBus,
+};
+
+const streamingCommandBus = {
+ provide: BUSES_TOKENS.STREAMING_COMMAND_BUS,
+ useClass: NatsStreamingCommandBus,
+};
+
+const streamingMessageBus = {
+ provide: BUSES_TOKENS.STREAMING_MESSAGE_BUS,
+ useClass: NatsStreamingCommandBus,
+};
+const pubSubIntegrationEventBus = {
+ provide: BUSES_TOKENS.PUBSUB_INTEGRATION_EVENT_BUS,
+ useClass: NatsPubSubIntegrationEventsBus,
+};
+
+@Global()
+@Module({})
+export class JetstreamCoreModule {
+ static forRoot(connectionOptions: ConnectionOptions, timeoutMillis?: number): DynamicModule {
+ const jetstreamProviders = {
+ provide: ProvidersConstants.JETSTREAM_PROVIDER,
+ useFactory: (): any => {
+ return new NestjsJetstream().connect(connectionOptions);
+ },
+ };
+
+ const asyncLocalStorageProvider = {
+ provide: ASYNC_LOCAL_STORAGE,
+ useValue: asyncLocalStorage,
+ };
+
+ const timeoutMillisProvider = {
+ provide: TIMEOUT_MILLIS,
+ useValue: timeoutMillis ?? 10000,
+ };
+
+ return {
+ module: JetstreamCoreModule,
+ providers: [
+ jetstreamProviders,
+ pubSubCommandBus,
+ pubSubQueryBus,
+ streamingDomainEventBus,
+ streamingIntegrationEventBus,
+ streamingCommandBus,
+ streamingMessageBus,
+ pubSubIntegrationEventBus,
+ asyncLocalStorageProvider,
+ timeoutMillisProvider,
+ ],
+ exports: [
+ jetstreamProviders,
+ pubSubCommandBus,
+ pubSubQueryBus,
+ streamingDomainEventBus,
+ streamingIntegrationEventBus,
+ streamingCommandBus,
+ streamingMessageBus,
+ pubSubIntegrationEventBus,
+ asyncLocalStorageProvider,
+ timeoutMillisProvider,
+ ],
+ };
+ }
+
+ static forFeature(config: JetstreamModuleFeatureConfig): DynamicModule {
+ if (config === undefined || config === null) {
+ throw new Error('Config missing');
+ }
+ const { moduleOfHandlers } = config;
+ let {
+ pubSubCommandHandlers,
+ pubSubQueryHandlers,
+ streamingDomainEventHandlers,
+ streamingIntegrationEventHandlers,
+ streamingCommandHandlers,
+ pubSubIntegrationEventHandlers,
+ } = config;
+ if (!pubSubCommandHandlers) pubSubCommandHandlers = [];
+ if (!pubSubQueryHandlers) pubSubQueryHandlers = [];
+ if (!streamingDomainEventHandlers) streamingDomainEventHandlers = [];
+ if (!streamingIntegrationEventHandlers) streamingIntegrationEventHandlers = [];
+ if (!streamingCommandHandlers) streamingCommandHandlers = [];
+ if (!pubSubIntegrationEventHandlers) pubSubIntegrationEventHandlers = [];
+
+ const handlers: Provider[] = [
+ {
+ provide: HANDLERS_TOKENS.PUBSUB_COMMAND_HANDLERS,
+ useFactory: (...commandHandlers) => {
+ return commandHandlers;
+ },
+ inject: [...pubSubCommandHandlers],
+ },
+ {
+ provide: HANDLERS_TOKENS.PUBSUB_QUERY_HANDLERS,
+ useFactory: (...queryHandlers) => {
+ return queryHandlers;
+ },
+ inject: [...pubSubQueryHandlers],
+ },
+ {
+ provide: HANDLERS_TOKENS.STREAMING_DOMAIN_EVENT_HANDLERS,
+ useFactory: (...domainEventHandlers: Application.IHandleDomainEvent[]) => {
+ return domainEventHandlers;
+ },
+ inject: [...streamingDomainEventHandlers],
+ },
+
+ {
+ provide: HANDLERS_TOKENS.STREAMING_INTEGRATION_EVENT_HANDLERS,
+ useFactory: (...integrationEventHandlers: Application.IHandleIntegrationEvent[]) => {
+ return integrationEventHandlers;
+ },
+ inject: [...streamingIntegrationEventHandlers],
+ },
+
+ {
+ provide: HANDLERS_TOKENS.STREAMING_COMMAND_HANDLERS,
+ useFactory: (...commandHandlers: Application.ICommandHandler[]) => {
+ return commandHandlers;
+ },
+ inject: [...streamingCommandHandlers],
+ },
+ {
+ provide: HANDLERS_TOKENS.PUBSUB_INTEGRATION_EVENT_HANDLERS,
+ useFactory: (...integrationEventHandlers: Application.IHandleIntegrationEvent[]) => {
+ return integrationEventHandlers;
+ },
+ inject: [...pubSubIntegrationEventHandlers],
+ },
+ ];
+
+ return {
+ imports: [moduleOfHandlers],
+ module: JetstreamCoreModule,
+ providers: [...handlers, SubscriptionsService],
+ };
+ }
+}
diff --git a/backend/src/lib/infra/nest-jetstream/jetstream.constants.ts b/backend/src/lib/infra/nest-jetstream/jetstream.constants.ts
new file mode 100644
index 000000000..470fed9e3
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/jetstream.constants.ts
@@ -0,0 +1,19 @@
+export const ProvidersConstants = {
+ JETSTREAM_PROVIDER: 'JETSTREAM_PROVIDER',
+};
+export const HANDLERS_TOKENS = {
+ STREAMING_COMMAND_HANDLERS: 'StreamingCommandHandlers',
+ STREAMING_DOMAIN_EVENT_HANDLERS: 'StreamingDomainEventHandlers',
+ STREAMING_INTEGRATION_EVENT_HANDLERS: 'StreamingIntegrationEventHandlers',
+ PUBSUB_COMMAND_HANDLERS: 'PubSubCommandHandlers',
+ PUBSUB_QUERY_HANDLERS: 'PubSubQueryHandlers',
+ PUBSUB_INTEGRATION_EVENT_HANDLERS: 'PubSubIntegrationEventHandlers',
+};
+
+export const ASYNC_LOCAL_STORAGE = Symbol('ASYNC_LOCAL_STORAGE');
+export const TIMEOUT_MILLIS = Symbol('TIMEOUT_MILLIS');
+
+export const METADATA_HEADERS = {
+ CORRELATION_ID: 'correlationId',
+ CONTEXT: 'context',
+};
diff --git a/backend/src/lib/infra/nest-jetstream/jetstream.module.ts b/backend/src/lib/infra/nest-jetstream/jetstream.module.ts
new file mode 100644
index 000000000..c8e030032
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/jetstream.module.ts
@@ -0,0 +1,22 @@
+import { DynamicModule, Module } from '@nestjs/common';
+import { ConnectionOptions } from 'nats';
+
+import { JetstreamModuleFeatureConfig } from './interfaces/module-feature-input.interface';
+import { JetstreamCoreModule } from './jetstream-core.module';
+
+@Module({})
+export class JetstreamModule {
+ static forRoot(connectionOptions: ConnectionOptions, timeoutMillis?: number): DynamicModule {
+ return {
+ module: JetstreamModule,
+ imports: [JetstreamCoreModule.forRoot(connectionOptions, timeoutMillis)],
+ };
+ }
+
+ static forFeature(config: JetstreamModuleFeatureConfig): DynamicModule {
+ return {
+ module: JetstreamModule,
+ imports: [JetstreamCoreModule.forFeature(config)],
+ };
+ }
+}
diff --git a/backend/src/lib/infra/nest-jetstream/jetstream.subscriptions.service.ts b/backend/src/lib/infra/nest-jetstream/jetstream.subscriptions.service.ts
new file mode 100644
index 000000000..4ee4fde29
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/jetstream.subscriptions.service.ts
@@ -0,0 +1,94 @@
+import { Injectable, Inject } from '@nestjs/common';
+import {
+ BUSES_TOKENS,
+ NatsPubSubCommandBus,
+ NatsPubSubQueryBus,
+ NatsStreamingCommandBus,
+ NatsStreamingDomainEventBus,
+ NatsStreamingIntegrationEventBus,
+} from './buses';
+import { HANDLERS_TOKENS } from './jetstream.constants';
+import { Application, Infra } from '@bitloops/bl-boilerplate-core';
+import { NatsPubSubIntegrationEventsBus } from './buses/nats-pubsub-integration-events-bus';
+
+@Injectable()
+export class SubscriptionsService {
+ constructor(
+ @Inject(HANDLERS_TOKENS.STREAMING_DOMAIN_EVENT_HANDLERS)
+ private domainEventHandlers: any[],
+ @Inject(HANDLERS_TOKENS.PUBSUB_COMMAND_HANDLERS)
+ private commandHandlers: any[],
+ @Inject(HANDLERS_TOKENS.PUBSUB_QUERY_HANDLERS) private queryHandlers: any[],
+ @Inject(HANDLERS_TOKENS.STREAMING_INTEGRATION_EVENT_HANDLERS)
+ private integrationEventHandlers: any[],
+ @Inject(HANDLERS_TOKENS.STREAMING_COMMAND_HANDLERS)
+ private streamingCommandHandlers: any[],
+ @Inject(HANDLERS_TOKENS.PUBSUB_INTEGRATION_EVENT_HANDLERS)
+ private pubSubIntegrationEventHandlers: any[],
+ @Inject(BUSES_TOKENS.PUBSUB_COMMAND_BUS)
+ private commandBus: Infra.CommandBus.IPubSubCommandBus,
+ @Inject(BUSES_TOKENS.PUBSUB_QUERY_BYS)
+ private queryBus: Infra.QueryBus.IQueryBus,
+ @Inject(BUSES_TOKENS.STREAMING_DOMAIN_EVENT_BUS)
+ private eventBus: NatsStreamingDomainEventBus,
+ @Inject(BUSES_TOKENS.STREAMING_INTEGRATION_EVENT_BUS)
+ private integrationEventBus: NatsStreamingIntegrationEventBus,
+ @Inject(BUSES_TOKENS.STREAMING_COMMAND_BUS)
+ private streamingCommandBus: NatsStreamingCommandBus,
+ @Inject(BUSES_TOKENS.PUBSUB_INTEGRATION_EVENT_BUS)
+ private pubSubIntegrationEventBus: NatsPubSubIntegrationEventsBus,
+ ) {
+ this.subscribePubSubCommandHandlers(commandHandlers);
+ this.subscribePubSubQueryHandlers(queryHandlers);
+ this.subscribeStreamingDomainEventHandlers(domainEventHandlers);
+ this.subscribeStreamingIntegrationEventHandlers(integrationEventHandlers);
+ this.subscribeStreamingCommandHandlers(streamingCommandHandlers);
+ this.subscribePubSubIntegrationEventHandlers(pubSubIntegrationEventHandlers);
+ }
+
+ private subscribePubSubCommandHandlers(commandHandlers: any[]) {
+ commandHandlers.forEach((handler) => {
+ this.commandBus.pubSubSubscribe(NatsPubSubCommandBus.getTopicFromHandler(handler), handler);
+ });
+ }
+
+ private subscribePubSubQueryHandlers(queryHandlers: any[]) {
+ queryHandlers.forEach((handler) => {
+ this.queryBus.pubSubSubscribe(NatsPubSubQueryBus.getTopicFromHandler(handler), handler);
+ });
+ }
+
+ private subscribePubSubIntegrationEventHandlers(
+ integrationEventHandlers: Application.IHandleIntegrationEvent[],
+ ) {
+ integrationEventHandlers.forEach((handler) => {
+ this.pubSubIntegrationEventBus.subscribe(
+ NatsPubSubIntegrationEventsBus.getTopicFromHandler(handler),
+ handler,
+ );
+ });
+ }
+
+ private subscribeStreamingDomainEventHandlers(domainEventHandlers: any[]) {
+ return Promise.all(
+ domainEventHandlers.map((handler) => {
+ const subject = NatsStreamingDomainEventBus.getSubjectFromHandler(handler);
+ return this.eventBus.subscribe(subject, handler);
+ }),
+ );
+ }
+
+ private subscribeStreamingIntegrationEventHandlers(integrationEventHandlers: any[]) {
+ integrationEventHandlers.forEach((handler) => {
+ const subject = NatsStreamingIntegrationEventBus.getSubjectFromHandler(handler);
+ this.integrationEventBus.subscribe(subject, handler);
+ });
+ }
+
+ private subscribeStreamingCommandHandlers(streamingCommandHandlers: any[]) {
+ streamingCommandHandlers.forEach((handler) => {
+ const subject = NatsStreamingCommandBus.getSubjectFromHandler(handler);
+ this.streamingCommandBus.subscribe(subject, handler);
+ });
+ }
+}
diff --git a/backend/src/lib/infra/nest-jetstream/nestjs-jetstream.class.ts b/backend/src/lib/infra/nest-jetstream/nestjs-jetstream.class.ts
new file mode 100644
index 000000000..9d1d01917
--- /dev/null
+++ b/backend/src/lib/infra/nest-jetstream/nestjs-jetstream.class.ts
@@ -0,0 +1,96 @@
+import { Logger } from '@nestjs/common';
+import { Mutex } from 'async-mutex';
+import { connect, JetStreamManager, NatsConnection, ConnectionOptions } from 'nats';
+
+/**
+ * @description NATS setup from https://github.com/nats-io/nats.js
+ */
+export class NestjsJetstream {
+ private logger: Logger = new Logger(this.constructor.name);
+ private nc: NatsConnection;
+ private jsm: JetStreamManager;
+ private mutex: Mutex;
+
+ constructor() {
+ this.mutex = new Mutex();
+ }
+
+ async connect(options: ConnectionOptions) {
+ try {
+ this.nc = await connect(options);
+ this.jsm = await this.nc.jetstreamManager();
+ this.logger.log(`connected to ${this.nc.getServer()}`);
+
+ return this;
+ } catch (e: any) {
+ this.logger.error(e);
+ throw new Error(e);
+ }
+ }
+
+ getConnection() {
+ return this.nc;
+ }
+
+ isConnected() {
+ return this.nc && !this.nc.isClosed() === true;
+ }
+
+ /**
+ * Close NATS connection
+ */
+ async close() {
+ await this.nc.close();
+ return this;
+ }
+
+ async listAllStreams(): Promise> {
+ const streams = await this.jsm.streams.list().next();
+ return streams.map((stream) => ({
+ name: stream.config.name,
+ subjects: stream.config.subjects,
+ }));
+ }
+
+ async createStreamIfNotExists(stream: string, subject: string): Promise {
+ // We use locks here, because of race conditions when run by multiple subscribes in parallel
+ await this.mutex.runExclusive(async () => {
+ if (await this.streamAndSubjectExists(stream, subject)) return;
+
+ if (await this.streamExists(stream)) {
+ await this.addSubjectToStream(stream, subject);
+ return;
+ }
+
+ await this.createStreamWithSubject(stream, subject);
+ });
+ }
+
+ async streamAndSubjectExists(stream: string, subject: string): Promise {
+ const streams = await this.listAllStreams();
+ const streamExists = streams.find((s) => s.name === stream);
+ if (!streamExists) return false;
+ const subjectExists = streamExists.subjects.find((s) => s === subject);
+ return !!subjectExists;
+ }
+ async streamExists(stream: string): Promise {
+ const streams = await this.listAllStreams();
+ const streamExists = streams.find((s) => s.name === stream);
+ return !!streamExists;
+ }
+
+ async addSubjectToStream(stream: string, subject: string): Promise {
+ const streamInfo = await this.jsm.streams.info(stream);
+
+ streamInfo.config.subjects.push(subject);
+ await this.jsm.streams.update(stream, streamInfo.config);
+ }
+
+ async createStreamWithSubject(stream: string, subject: string): Promise {
+ await this.jsm.streams.add({ name: stream, subjects: [subject] });
+ }
+
+ async deleteStream(stream: string): Promise {
+ await this.jsm.streams.delete(stream);
+ }
+}
diff --git a/backend/src/lib/infra/postgres/index.ts b/backend/src/lib/infra/postgres/index.ts
new file mode 100644
index 000000000..0b0bee7d6
--- /dev/null
+++ b/backend/src/lib/infra/postgres/index.ts
@@ -0,0 +1,2 @@
+export { PostgresModule, PostgresModuleAsyncOptions } from './postgres.module';
+export { constants } from './postgres.constants';
diff --git a/backend/src/lib/infra/postgres/postgres-core.module.ts b/backend/src/lib/infra/postgres/postgres-core.module.ts
new file mode 100644
index 000000000..bf338e304
--- /dev/null
+++ b/backend/src/lib/infra/postgres/postgres-core.module.ts
@@ -0,0 +1,62 @@
+import { Module, DynamicModule, Provider, Inject, Global } from '@nestjs/common';
+import { Pool, PoolConfig } from 'pg';
+import { constants } from './postgres.constants';
+import { PostgresModuleAsyncOptions } from './postgres.module';
+
+const POSTGRES_DB_CONNECTION = constants.pg_connection;
+@Global()
+@Module({})
+export class PostgresCoreModule {
+ constructor(@Inject(POSTGRES_DB_CONNECTION) private pool: Pool) {}
+ static forRoot(options: PoolConfig): DynamicModule {
+ const poolProvider: Provider = {
+ provide: POSTGRES_DB_CONNECTION,
+ useFactory: () => new Pool(options),
+ };
+ return {
+ module: PostgresCoreModule,
+ providers: [poolProvider],
+ exports: [poolProvider],
+ };
+ }
+
+ static forRootAsync(options: PostgresModuleAsyncOptions): DynamicModule {
+ const poolProvider: Provider = {
+ provide: POSTGRES_DB_CONNECTION,
+ useFactory: async (...args: any[]) => {
+ const poolConfig = await options.useFactory(...args);
+ return new Pool(poolConfig);
+ },
+ inject: options.inject || [],
+ };
+ return {
+ module: PostgresCoreModule,
+ providers: [poolProvider],
+ exports: [poolProvider],
+ };
+ }
+
+ static forFeature(sqlStatement: string): DynamicModule {
+ const createTableIfNotExists: Provider = {
+ provide: 'CREATE_TABLE_IF_NOT_EXISTS',
+ useFactory: async (pool: Pool) => {
+ const client = await pool.connect();
+ try {
+ const res = await client.query(sqlStatement);
+ // console.log('queryResult: ', res);
+ } catch (error) {
+ console.log('postgres statement error:', error);
+ } finally {
+ client.release();
+ }
+ },
+ inject: [{ token: POSTGRES_DB_CONNECTION, optional: false }],
+ };
+ return {
+ module: PostgresCoreModule,
+ providers: [createTableIfNotExists],
+ };
+
+ // Get pg connection and run sql statement on it
+ }
+}
diff --git a/backend/src/lib/infra/postgres/postgres.constants.ts b/backend/src/lib/infra/postgres/postgres.constants.ts
new file mode 100644
index 000000000..5478b1475
--- /dev/null
+++ b/backend/src/lib/infra/postgres/postgres.constants.ts
@@ -0,0 +1,3 @@
+export const constants = {
+ pg_connection: 'POSTGRES_DB_CONNECTION',
+};
diff --git a/backend/src/lib/infra/postgres/postgres.module.ts b/backend/src/lib/infra/postgres/postgres.module.ts
new file mode 100644
index 000000000..baaec5cae
--- /dev/null
+++ b/backend/src/lib/infra/postgres/postgres.module.ts
@@ -0,0 +1,40 @@
+import { Module, DynamicModule, Inject, ModuleMetadata } from '@nestjs/common';
+
+import { Pool, PoolConfig } from 'pg';
+import { PostgresCoreModule } from './postgres-core.module';
+import { constants } from './postgres.constants';
+
+export interface PostgresModuleAsyncOptions extends Pick {
+ // useExisting?: Type;
+ // useClass?: Type;
+ useFactory: (...args: any[]) => Promise | PoolConfig;
+ inject?: any[];
+}
+
+@Module({})
+export class PostgresModule {
+ constructor(@Inject(constants.pg_connection) private pool: Pool) {}
+ static forRoot(options: PoolConfig): DynamicModule {
+ return {
+ module: PostgresModule,
+ imports: [PostgresCoreModule.forRoot(options)],
+ };
+ }
+
+ static forRootAsync(options: PostgresModuleAsyncOptions): DynamicModule {
+ return {
+ module: PostgresModule,
+ imports: [PostgresCoreModule.forRootAsync(options)],
+ };
+ }
+
+ static forFeature(sqlStatement: string): DynamicModule {
+ return {
+ module: PostgresModule,
+ imports: [PostgresCoreModule.forFeature(sqlStatement)],
+ };
+ // return {
+ // module: PostgresModule,
+ // };
+ }
+}
diff --git a/backend/src/lib/infra/telemetry/async-local-storage.service.ts b/backend/src/lib/infra/telemetry/async-local-storage.service.ts
new file mode 100644
index 000000000..40bd2763e
--- /dev/null
+++ b/backend/src/lib/infra/telemetry/async-local-storage.service.ts
@@ -0,0 +1,57 @@
+import { AsyncLocalStorage } from 'node:async_hooks';
+import { Injectable } from '@nestjs/common';
+import { AsyncLocalStorageStore, asyncLocalStorage } from '@bitloops/bl-boilerplate-core';
+
+export interface IAsyncLocalStorageService {
+ asyncLocalStorage: AsyncLocalStorage;
+ getAsyncLocalStore(): AsyncLocalStorageStore;
+ getCorrelationId(): string;
+ setCorrelationId(correlationId: string): void;
+}
+
+/**
+ * There is the async local storage.
+ * On each run it contains the store, which is a map of keys and values.
+ *
+ */
+@Injectable()
+export class AsyncLocalStorageService implements IAsyncLocalStorageService {
+ private static _asyncLocalStorage = asyncLocalStorage;
+ constructor() {
+ console.log('AsyncLocalStorageService constructor');
+ }
+
+ get asyncLocalStorage() {
+ return AsyncLocalStorageService._asyncLocalStorage;
+ }
+
+ static get asyncLocalStorage() {
+ return AsyncLocalStorageService._asyncLocalStorage;
+ }
+
+ public getAsyncLocalStore(): AsyncLocalStorageStore {
+ const store = this.asyncLocalStorage.getStore();
+ if (!store) {
+ throw new Error('No async local storage store found');
+ }
+ return store;
+ }
+
+ public getCorrelationId(): string {
+ const store = this.getAsyncLocalStore();
+ const correlationId = store.get('correlationId');
+ if (!correlationId) {
+ throw new Error('No correlation id found');
+ }
+ return correlationId;
+ }
+
+ public setCorrelationId(correlationId: string) {
+ const store = this.getAsyncLocalStore();
+ store.set('correlationId', correlationId);
+ }
+
+ public returnEmptyStore(): AsyncLocalStorageStore {
+ return new Map();
+ }
+}
diff --git a/backend/src/lib/infra/telemetry/constants.ts b/backend/src/lib/infra/telemetry/constants.ts
new file mode 100644
index 000000000..957b4fed8
--- /dev/null
+++ b/backend/src/lib/infra/telemetry/constants.ts
@@ -0,0 +1 @@
+export const MESSAGE_BUS_TOKEN = 'MESSAGE_BUS';
diff --git a/backend/src/lib/infra/telemetry/correlation-id.interceptor.ts b/backend/src/lib/infra/telemetry/correlation-id.interceptor.ts
new file mode 100644
index 000000000..ebf04d63e
--- /dev/null
+++ b/backend/src/lib/infra/telemetry/correlation-id.interceptor.ts
@@ -0,0 +1,30 @@
+import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
+import { randomUUID } from 'crypto';
+import { Observable, tap } from 'rxjs';
+import { asyncLocalStorage } from '@bitloops/bl-boilerplate-core';
+
+@Injectable()
+export class CorrelationIdInterceptor implements NestInterceptor {
+ async intercept(context: ExecutionContext, next: CallHandler): Promise> {
+ const correlationId: string = randomUUID().replace(/-/g, '');
+ console.log(`Request (interceptor)... ${correlationId}`);
+ const initialStore = new Map();
+ initialStore.set('correlationId', correlationId);
+ return new Observable((observer) => {
+ // create a new execution context for this observable
+ asyncLocalStorage.run(initialStore, () => {
+ // execute the next function in the context of this observable
+ const next$ = next.handle();
+ // subscribe to the observable returned by next
+ next$.subscribe(observer);
+ });
+ }).pipe(
+ tap({
+ complete: () => {
+ // clean up the context object when the observable completes
+ asyncLocalStorage.disable();
+ },
+ }),
+ );
+ }
+}
diff --git a/backend/src/lib/infra/telemetry/definitons.ts b/backend/src/lib/infra/telemetry/definitons.ts
new file mode 100644
index 000000000..3fbeaa0a5
--- /dev/null
+++ b/backend/src/lib/infra/telemetry/definitons.ts
@@ -0,0 +1,22 @@
+export interface TelemetryEvent {
+ trace: TraceEvent;
+ metric?: MetricsEvent;
+}
+export interface TraceEvent {
+ correlationId: string;
+ processId?: string;
+ operation: string;
+ startTime: number;
+ endTime: number;
+}
+
+export interface MetricsEvent {
+ name: string;
+ category: string;
+}
+
+export interface TraceableDecoratorInput {
+ operation: string;
+ metrics?: MetricsEvent;
+ serviceName?: string;
+}
diff --git a/backend/src/lib/infra/telemetry/index.ts b/backend/src/lib/infra/telemetry/index.ts
new file mode 100644
index 000000000..dcb0e167f
--- /dev/null
+++ b/backend/src/lib/infra/telemetry/index.ts
@@ -0,0 +1,9 @@
+import { AsyncLocalStorageService } from './async-local-storage.service';
+
+export { Traceable } from './traceable.decorator';
+export { CorrelationIdMiddleware } from './traces.middleware';
+export { TracingModule } from './tracing.module';
+export { CorrelationIdInterceptor } from './correlation-id.interceptor';
+
+// This is to be removed, and replaced with the AsyncLocalStorageService
+export const asyncLocalStorage = AsyncLocalStorageService.asyncLocalStorage;
diff --git a/backend/src/lib/infra/telemetry/traceable.decorator.ts b/backend/src/lib/infra/telemetry/traceable.decorator.ts
new file mode 100644
index 000000000..ef53fe59b
--- /dev/null
+++ b/backend/src/lib/infra/telemetry/traceable.decorator.ts
@@ -0,0 +1,67 @@
+import { Inject } from '@nestjs/common';
+import { AsyncLocalStorageService } from './async-local-storage.service';
+import { MESSAGE_BUS_TOKEN } from './constants';
+import { Infra } from '@bitloops/bl-boilerplate-core';
+import { isAsyncFunction } from './utils';
+import { TelemetryEvent, TraceableDecoratorInput } from './definitons';
+
+const TRACING_TOPIC = 'trace_events';
+
+/**
+ * the traceable decorator accesses the AsyncLocalStorageService
+ * and gets the correlationId from the store.
+ * */
+export function Traceable(input: TraceableDecoratorInput) {
+ const asyncLocalStorageInjector = Inject(AsyncLocalStorageService);
+ const messageBusInjector = Inject(MESSAGE_BUS_TOKEN);
+
+ return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
+ const originalMethod = descriptor.value;
+ // For now we only trace async functions
+ if (!isAsyncFunction(originalMethod)) {
+ throw new Error('Traceable decorator can only be applied to async methods for now');
+ }
+
+ const asyncLocalStorageServiceKey = 'asyncLocalStorageService';
+ const messageBusServiceKey = 'messageBusService';
+ asyncLocalStorageInjector(target, asyncLocalStorageServiceKey);
+ messageBusInjector(target, messageBusServiceKey);
+
+ descriptor.value = async function (...args: any[]) {
+ console.log(`Started executing ... [${this.constructor.name}][${propertyKey}]`);
+ const startTime = Date.now();
+
+ const asyncLocalStorage = this[
+ asyncLocalStorageServiceKey as keyof PropertyDescriptor
+ ] as AsyncLocalStorageService;
+
+ console.log('asyncLocalStorage', asyncLocalStorage);
+
+ const correlationId = asyncLocalStorage.getCorrelationId();
+ console.table({
+ correlationId,
+ });
+ try {
+ return await originalMethod.apply(this, args);
+ } finally {
+ const endTime = Date.now();
+ const traceEvent: TelemetryEvent = {
+ trace: {
+ correlationId,
+ operation: input.operation,
+ startTime,
+ endTime,
+ },
+ };
+ if (input.metrics) {
+ traceEvent.metric = input.metrics;
+ }
+ const messageBus = this[
+ messageBusServiceKey as keyof PropertyDescriptor
+ ] as Infra.MessageBus.ISystemMessageBus;
+ await messageBus.publish(TRACING_TOPIC, traceEvent);
+ console.log(`Finished executing ... [${this.constructor.name}][${propertyKey}].`);
+ }
+ };
+ };
+}
diff --git a/backend/src/lib/infra/telemetry/traces.middleware.ts b/backend/src/lib/infra/telemetry/traces.middleware.ts
new file mode 100644
index 000000000..2d276a280
--- /dev/null
+++ b/backend/src/lib/infra/telemetry/traces.middleware.ts
@@ -0,0 +1,21 @@
+import { Injectable, NestMiddleware } from '@nestjs/common';
+import { FastifyRequest, FastifyReply } from 'fastify';
+import { randomUUID } from 'crypto';
+import { AsyncLocalStorageService } from './async-local-storage.service';
+
+@Injectable()
+export class CorrelationIdMiddleware implements NestMiddleware {
+ constructor(private readonly asyncLocalStorageService: AsyncLocalStorageService) {}
+
+ use(req: FastifyRequest['raw'], res: FastifyReply['raw'], next: () => void) {
+ const asyncLocalStorage = this.asyncLocalStorageService.asyncLocalStorage;
+
+ // req.headers['x-correlation-id'] ||
+ const correlationId: string = randomUUID().replace(/-/g, '');
+ console.log(`Request... ${correlationId}`);
+ asyncLocalStorage.run(this.asyncLocalStorageService.returnEmptyStore(), () => {
+ this.asyncLocalStorageService.setCorrelationId(correlationId);
+ next();
+ });
+ }
+}
diff --git a/backend/src/lib/infra/telemetry/tracing.module.ts b/backend/src/lib/infra/telemetry/tracing.module.ts
new file mode 100644
index 000000000..469485426
--- /dev/null
+++ b/backend/src/lib/infra/telemetry/tracing.module.ts
@@ -0,0 +1,25 @@
+import { Global, Module, Type } from '@nestjs/common';
+import { AsyncLocalStorageService } from './async-local-storage.service';
+import { Infra } from '@bitloops/bl-boilerplate-core';
+import { MESSAGE_BUS_TOKEN } from './constants';
+
+@Global()
+@Module({})
+export class TracingModule {
+ static register(params: { messageBus: Type }): {
+ module: Type;
+ providers: any[];
+ exports: any[];
+ } {
+ const { messageBus } = params;
+ const messageBusProvider = {
+ provide: MESSAGE_BUS_TOKEN,
+ useClass: messageBus,
+ };
+ return {
+ module: TracingModule,
+ providers: [AsyncLocalStorageService, messageBusProvider],
+ exports: [AsyncLocalStorageService, messageBusProvider],
+ };
+ }
+}
diff --git a/backend/src/lib/infra/telemetry/utils.ts b/backend/src/lib/infra/telemetry/utils.ts
new file mode 100644
index 000000000..a0cb9f034
--- /dev/null
+++ b/backend/src/lib/infra/telemetry/utils.ts
@@ -0,0 +1,5 @@
+export const isAsyncFunction = (fn: any) => {
+ // util.types.isAsyncFunction(fn); // Node 10+
+ // Note that the above only reports back what the JavaScript engine is seeing; in particular, the return value may not match the original source code if a transpilation tool was used.
+ return fn && fn.constructor && fn.constructor.name === 'AsyncFunction';
+};
diff --git a/backend/src/main.ts b/backend/src/main.ts
index bfe50a272..c26afee16 100644
--- a/backend/src/main.ts
+++ b/backend/src/main.ts
@@ -4,28 +4,14 @@ import {
FastifyAdapter,
NestFastifyApplication,
} from '@nestjs/platform-fastify';
-import { GrpcOptions, Transport } from '@nestjs/microservices';
+import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
import { AppModule } from './app.module';
import { ApiModule } from './api/api.module';
import config from './config/configuration';
-import { AsyncLocalStorageInterceptor } from '@bitloops/bl-boilerplate-infra-nest-auth-passport';
-import { CorrelationIdInterceptor } from '@bitloops/bl-boilerplate-infra-telemetry';
-
-// gRPC microservice configuration
-const grpcMicroserviceOptions: () => GrpcOptions = () => {
- const grpcConfig = config().grpc;
- console.log('grpcConfig', grpcConfig);
-
- return {
- transport: Transport.GRPC,
- options: {
- url: `${grpcConfig.ip}:${grpcConfig.port}`,
- package: grpcConfig.packageName,
- protoPath: grpcConfig.protoPath,
- },
- };
-};
+import { AsyncLocalStorageInterceptor } from './lib/infra/nest-auth-passport';
+import { CorrelationIdInterceptor } from './lib/infra/telemetry';
+import { writeFileSync } from 'fs';
async function bootstrap() {
const api = await NestFactory.create(
@@ -35,8 +21,26 @@ async function bootstrap() {
}),
{ abortOnError: false },
);
+
+ // Swagger configuration
+ const swaggerConfig = new DocumentBuilder()
+ .setTitle('API Documentation')
+ .setDescription('API description')
+ .setVersion('1.0')
+ .addBearerAuth()
+ .build();
+
+ const document = SwaggerModule.createDocument(api, swaggerConfig);
+ SwaggerModule.setup('api', api, document);
+
+ writeFileSync('swagger.json', JSON.stringify(document, null, 2));
+
api.enableCors({
- origin: '*',
+ origin: ['http://localhost:5175', 'http://localhost:4173'],
+ methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'PATCH'],
+ allowedHeaders: ['Content-Type', 'Accept', 'Authorization', 'Cache-Control', 'Last-Event-ID', 'x-request-id', 'x-user-agent', 'cache-hash'],
+ exposedHeaders: ['Authorization', 'Content-Type'],
+ credentials: true,
});
const appConfig = config();
api.useGlobalInterceptors(
@@ -48,19 +52,7 @@ async function bootstrap() {
console.log(
`HTTP server is listening on ${appConfig.http.ip}:${appConfig.http.port}`,
);
- });
-
- // Initialize the gRPC server
- const grpcApp = await NestFactory.createMicroservice(
- ApiModule,
- grpcMicroserviceOptions(),
- );
-
- // Start the gRPC server
- grpcApp.listen().then(() => {
- console.log(
- `gRPC server is listening on ${appConfig.grpc.ip}:${appConfig.grpc.port}`,
- );
+ console.log(`Swagger documentation available at http://${appConfig.http.ip}:${appConfig.http.port}/api`);
});
await NestFactory.createMicroservice(AppModule);
diff --git a/backend/src/setup-jest.js b/backend/src/setup-jest.js
index 4c8ed7fa3..a88f0fbfc 100644
--- a/backend/src/setup-jest.js
+++ b/backend/src/setup-jest.js
@@ -7,7 +7,7 @@ Object.defineProperty(global, 'crypto', {
},
});
-jest.mock('@bitloops/bl-boilerplate-infra-telemetry', () => ({
+jest.mock('@lib/infra/telemetry', () => ({
Traceable: () => jest.fn(),
}));
diff --git a/backend/swagger.json b/backend/swagger.json
new file mode 100644
index 000000000..a2f054b41
--- /dev/null
+++ b/backend/swagger.json
@@ -0,0 +1,430 @@
+{
+ "openapi": "3.0.0",
+ "paths": {
+ "/auth/login": {
+ "post": {
+ "operationId": "AuthController_",
+ "parameters": [],
+ "responses": {
+ "201": {
+ "description": ""
+ }
+ },
+ "tags": [
+ "Auth"
+ ]
+ }
+ },
+ "/auth/updateEmail": {
+ "patch": {
+ "operationId": "AuthController_updateEmail",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateEmailRequestDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": ""
+ }
+ },
+ "tags": [
+ "Auth"
+ ]
+ }
+ },
+ "/auth/register": {
+ "post": {
+ "operationId": "AuthController_register",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/RegisterRequestDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": ""
+ }
+ },
+ "tags": [
+ "Auth"
+ ]
+ }
+ },
+ "/todos": {
+ "post": {
+ "operationId": "TodoController_addTodo",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AddTodoRequestDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "201": {
+ "description": "Todo created successfully"
+ },
+ "400": {
+ "description": "Invalid input"
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Create a new todo",
+ "tags": [
+ "todos"
+ ]
+ },
+ "get": {
+ "operationId": "TodoController_getAll",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Returns all todos",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/GetAllTodosResponseDto"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Get all todos",
+ "tags": [
+ "todos"
+ ]
+ }
+ },
+ "/todos/{id}/complete": {
+ "patch": {
+ "operationId": "TodoController_completeTodo",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "description": "Todo ID",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Todo marked as completed"
+ },
+ "400": {
+ "description": "Invalid todo ID"
+ },
+ "404": {
+ "description": "Todo not found"
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Mark a todo as completed",
+ "tags": [
+ "todos"
+ ]
+ }
+ },
+ "/todos/{id}/uncomplete": {
+ "patch": {
+ "operationId": "TodoController_uncompleteTodo",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "description": "Todo ID",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Todo marked as uncompleted"
+ },
+ "400": {
+ "description": "Invalid todo ID"
+ },
+ "404": {
+ "description": "Todo not found"
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Mark a todo as uncompleted",
+ "tags": [
+ "todos"
+ ]
+ }
+ },
+ "/todos/{id}/title": {
+ "patch": {
+ "operationId": "TodoController_modifyTitle",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "description": "Todo ID",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ModifyTodoTitleRequestDto"
+ }
+ }
+ }
+ },
+ "responses": {
+ "204": {
+ "description": "Todo title updated"
+ },
+ "400": {
+ "description": "Invalid input"
+ },
+ "404": {
+ "description": "Todo not found"
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Update a todo title",
+ "tags": [
+ "todos"
+ ]
+ }
+ },
+ "/todos/{id}": {
+ "delete": {
+ "operationId": "TodoController_deleteTodo",
+ "parameters": [
+ {
+ "name": "id",
+ "required": true,
+ "in": "path",
+ "description": "Todo ID",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Todo deleted"
+ },
+ "400": {
+ "description": "Invalid todo ID"
+ },
+ "404": {
+ "description": "Todo not found"
+ }
+ },
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "summary": "Delete a todo",
+ "tags": [
+ "todos"
+ ]
+ }
+ },
+ "/sse/todos/stream": {
+ "get": {
+ "operationId": "TodoSSEController_stream",
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": ""
+ }
+ },
+ "tags": [
+ "TodoSSE"
+ ]
+ }
+ },
+ "/sse/todos/On": {
+ "post": {
+ "operationId": "TodoSSEController_on",
+ "parameters": [],
+ "responses": {
+ "201": {
+ "description": ""
+ }
+ },
+ "tags": [
+ "TodoSSE"
+ ]
+ }
+ }
+ },
+ "info": {
+ "title": "API Documentation",
+ "description": "API description",
+ "version": "1.0",
+ "contact": {}
+ },
+ "tags": [],
+ "servers": [],
+ "components": {
+ "securitySchemes": {
+ "bearer": {
+ "scheme": "bearer",
+ "bearerFormat": "JWT",
+ "type": "http"
+ }
+ },
+ "schemas": {
+ "UpdateEmailRequestDto": {
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string",
+ "description": "The new email address"
+ }
+ },
+ "required": [
+ "email"
+ ]
+ },
+ "RegisterRequestDto": {
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string",
+ "description": "The email address"
+ },
+ "password": {
+ "type": "string",
+ "description": "The password"
+ }
+ },
+ "required": [
+ "email",
+ "password"
+ ]
+ },
+ "AddTodoRequestDto": {
+ "type": "object",
+ "properties": {
+ "title": {
+ "type": "string",
+ "description": "The title of the todo"
+ }
+ },
+ "required": [
+ "title"
+ ]
+ },
+ "TodoDto": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The unique identifier of the todo"
+ },
+ "title": {
+ "type": "string",
+ "description": "The title of the todo"
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "The completion status of the todo"
+ },
+ "createdAt": {
+ "type": "number",
+ "description": "The creation timestamp of the todo"
+ },
+ "updatedAt": {
+ "type": "number",
+ "description": "The last update timestamp of the todo"
+ }
+ },
+ "required": [
+ "id",
+ "title",
+ "completed",
+ "createdAt"
+ ]
+ },
+ "GetAllTodosResponseDto": {
+ "type": "object",
+ "properties": {
+ "todos": {
+ "description": "Array of todo items",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/TodoDto"
+ }
+ }
+ },
+ "required": [
+ "todos"
+ ]
+ },
+ "ModifyTodoTitleRequestDto": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The unique identifier of the todo"
+ },
+ "title": {
+ "type": "string",
+ "description": "The new title of the todo"
+ }
+ },
+ "required": [
+ "id",
+ "title"
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/backend/tsconfig.json b/backend/tsconfig.json
index e28e906b5..4756609be 100644
--- a/backend/tsconfig.json
+++ b/backend/tsconfig.json
@@ -21,9 +21,10 @@
"@src/*": ["src/*"],
"@modules/*": ["src/modules/*"],
"@config/*": ["src/configs/*"],
- "@bitloops/*": ["src/bitloops/*"],
- "@lib": ["src/lib/*"],
+ "@lib/*": ["src/lib/*"],
"@tests/*": ["tests/*"]
}
- }
+ },
+ "exclude": ["node_modules", "dist", "build"],
+ "include": ["src/**/*.ts", "test/**/*.ts"]
}
diff --git a/backend/yarn.lock b/backend/yarn.lock
index 31108a159..e9cb6a54b 100644
--- a/backend/yarn.lock
+++ b/backend/yarn.lock
@@ -4,828 +4,92 @@
"@aashutoshrathi/word-wrap@^1.2.3":
version "1.2.6"
- resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf"
+ resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz"
integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
"@ampproject/remapping@^2.2.0":
version "2.2.0"
- resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d"
+ resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz"
integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==
dependencies:
"@jridgewell/gen-mapping" "^0.1.0"
"@jridgewell/trace-mapping" "^0.3.9"
-"@angular-devkit/core@16.0.1":
- version "16.0.1"
- resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-16.0.1.tgz#1af4177d503d8d1babdf29c95d8901660a557243"
- integrity sha512-2uz98IqkKJlgnHbWQ7VeL4pb+snGAZXIama2KXi+k9GsRntdcw+udX8rL3G9SdUGUF+m6+147Y1oRBMHsO/v4w==
+"@angular-devkit/core@19.2.6":
+ version "19.2.6"
+ resolved "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.6.tgz"
+ integrity sha512-WFgiYhrDMq83UNaGRAneIM7CYYdBozD+yYA9BjoU8AgBLKtrvn6S8ZcjKAk5heoHtY/u8pEb0mwDTz9gxFmJZQ==
dependencies:
- ajv "8.12.0"
- ajv-formats "2.1.1"
- jsonc-parser "3.2.0"
+ ajv "8.17.1"
+ ajv-formats "3.0.1"
+ jsonc-parser "3.3.1"
+ picomatch "4.0.2"
rxjs "7.8.1"
source-map "0.7.4"
-"@angular-devkit/schematics-cli@16.0.1":
- version "16.0.1"
- resolved "https://registry.yarnpkg.com/@angular-devkit/schematics-cli/-/schematics-cli-16.0.1.tgz#9d50ddc2008969e4efaa011347ff38ca937bcf0d"
- integrity sha512-6KLA125dpgd6oJGtiO2JpZAb92uOG3njQGIt7NFcuQGW/5GO7J41vMXH9cBAfdtbV8SIggSmR/cIEE9ijfj6YQ==
+"@angular-devkit/core@19.2.8":
+ version "19.2.8"
+ resolved "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.8.tgz"
+ integrity sha512-kcxUHKf5Hi98r4gAvMP3ntJV8wuQ3/i6wuU9RcMP0UKUt2Rer5Ryis3MPqT92jvVVwg6lhrLIhXsFuWJMiYjXQ==
dependencies:
- "@angular-devkit/core" "16.0.1"
- "@angular-devkit/schematics" "16.0.1"
+ ajv "8.17.1"
+ ajv-formats "3.0.1"
+ jsonc-parser "3.3.1"
+ picomatch "4.0.2"
+ rxjs "7.8.1"
+ source-map "0.7.4"
+
+"@angular-devkit/schematics-cli@19.2.8":
+ version "19.2.8"
+ resolved "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-19.2.8.tgz"
+ integrity sha512-RFnlyu4Ld8I4xvu/eqrhjbQ6kQTr27w79omMiTbQcQZvP3E6oUyZdBjobyih4Np+1VVQrbdEeNz76daP2iUDig==
+ dependencies:
+ "@angular-devkit/core" "19.2.8"
+ "@angular-devkit/schematics" "19.2.8"
+ "@inquirer/prompts" "7.3.2"
ansi-colors "4.1.3"
- inquirer "8.2.4"
symbol-observable "4.0.0"
yargs-parser "21.1.1"
-"@angular-devkit/schematics@16.0.1":
- version "16.0.1"
- resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-16.0.1.tgz#d49387e9e41c9cce98b155da51b0e193333dd178"
- integrity sha512-A9D0LTYmiqiBa90GKcSuWb7hUouGIbm/AHbJbjL85WLLRbQA2PwKl7P5Mpd6nS/ZC0kfG4VQY3VOaDvb3qpI9g==
+"@angular-devkit/schematics@19.2.6":
+ version "19.2.6"
+ resolved "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.6.tgz"
+ integrity sha512-YTAxNnT++5eflx19OUHmOWu597/TbTel+QARiZCv1xQw99+X8DCKKOUXtqBRd53CAHlREDI33Rn/JLY3NYgMLQ==
dependencies:
- "@angular-devkit/core" "16.0.1"
- jsonc-parser "3.2.0"
- magic-string "0.30.0"
+ "@angular-devkit/core" "19.2.6"
+ jsonc-parser "3.3.1"
+ magic-string "0.30.17"
ora "5.4.1"
rxjs "7.8.1"
-"@aws-crypto/ie11-detection@^3.0.0":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz#640ae66b4ec3395cee6a8e94ebcd9f80c24cd688"
- integrity sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==
- dependencies:
- tslib "^1.11.1"
-
-"@aws-crypto/sha256-browser@3.0.0":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz#05f160138ab893f1c6ba5be57cfd108f05827766"
- integrity sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==
- dependencies:
- "@aws-crypto/ie11-detection" "^3.0.0"
- "@aws-crypto/sha256-js" "^3.0.0"
- "@aws-crypto/supports-web-crypto" "^3.0.0"
- "@aws-crypto/util" "^3.0.0"
- "@aws-sdk/types" "^3.222.0"
- "@aws-sdk/util-locate-window" "^3.0.0"
- "@aws-sdk/util-utf8-browser" "^3.0.0"
- tslib "^1.11.1"
-
-"@aws-crypto/sha256-js@3.0.0", "@aws-crypto/sha256-js@^3.0.0":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz#f06b84d550d25521e60d2a0e2a90139341e007c2"
- integrity sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==
- dependencies:
- "@aws-crypto/util" "^3.0.0"
- "@aws-sdk/types" "^3.222.0"
- tslib "^1.11.1"
-
-"@aws-crypto/supports-web-crypto@^3.0.0":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz#5d1bf825afa8072af2717c3e455f35cda0103ec2"
- integrity sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==
- dependencies:
- tslib "^1.11.1"
-
-"@aws-crypto/util@^3.0.0":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-3.0.0.tgz#1c7ca90c29293f0883468ad48117937f0fe5bfb0"
- integrity sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==
- dependencies:
- "@aws-sdk/types" "^3.222.0"
- "@aws-sdk/util-utf8-browser" "^3.0.0"
- tslib "^1.11.1"
-
-"@aws-sdk/abort-controller@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.303.0.tgz#985d6cd65babdf0872b3f0224b0e151a2c1ab8c2"
- integrity sha512-LzNzpeyTppcmV/6SAQI3T/huOkMrUnFveplgVNwJxw+rVqmqmGV6z6vpg+oRICRDcjXWYiSiaClxxSVvOy0sDQ==
- dependencies:
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/client-cognito-identity@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.303.0.tgz#e28d91f36fff9e8e1c18e8f1dae84146f9f62add"
- integrity sha512-rybplTjq6aj7DttT+v8ycajT8BIFXqdo66lkQjO1YykEIyVTnY4L9McTyNFOZsvNmG1LMSqb95/eYP463Lp7fg==
- dependencies:
- "@aws-crypto/sha256-browser" "3.0.0"
- "@aws-crypto/sha256-js" "3.0.0"
- "@aws-sdk/client-sts" "3.303.0"
- "@aws-sdk/config-resolver" "3.303.0"
- "@aws-sdk/credential-provider-node" "3.303.0"
- "@aws-sdk/fetch-http-handler" "3.303.0"
- "@aws-sdk/hash-node" "3.303.0"
- "@aws-sdk/invalid-dependency" "3.303.0"
- "@aws-sdk/middleware-content-length" "3.303.0"
- "@aws-sdk/middleware-endpoint" "3.303.0"
- "@aws-sdk/middleware-host-header" "3.303.0"
- "@aws-sdk/middleware-logger" "3.303.0"
- "@aws-sdk/middleware-recursion-detection" "3.303.0"
- "@aws-sdk/middleware-retry" "3.303.0"
- "@aws-sdk/middleware-serde" "3.303.0"
- "@aws-sdk/middleware-signing" "3.303.0"
- "@aws-sdk/middleware-stack" "3.303.0"
- "@aws-sdk/middleware-user-agent" "3.303.0"
- "@aws-sdk/node-config-provider" "3.303.0"
- "@aws-sdk/node-http-handler" "3.303.0"
- "@aws-sdk/protocol-http" "3.303.0"
- "@aws-sdk/smithy-client" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- "@aws-sdk/url-parser" "3.303.0"
- "@aws-sdk/util-base64" "3.303.0"
- "@aws-sdk/util-body-length-browser" "3.303.0"
- "@aws-sdk/util-body-length-node" "3.303.0"
- "@aws-sdk/util-defaults-mode-browser" "3.303.0"
- "@aws-sdk/util-defaults-mode-node" "3.303.0"
- "@aws-sdk/util-endpoints" "3.303.0"
- "@aws-sdk/util-retry" "3.303.0"
- "@aws-sdk/util-user-agent-browser" "3.303.0"
- "@aws-sdk/util-user-agent-node" "3.303.0"
- "@aws-sdk/util-utf8" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/client-sso-oidc@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.303.0.tgz#e05b53a2fbd439375c8494bdad168deb28313a12"
- integrity sha512-oOdDcBjxGiJ6mFWUMVr+A1hAzGRpcZ+oLAhCakpvpXCUG50PZSBFP+vOQXgHY/XNolqDg+IHq60oE9HoPzGleg==
- dependencies:
- "@aws-crypto/sha256-browser" "3.0.0"
- "@aws-crypto/sha256-js" "3.0.0"
- "@aws-sdk/config-resolver" "3.303.0"
- "@aws-sdk/fetch-http-handler" "3.303.0"
- "@aws-sdk/hash-node" "3.303.0"
- "@aws-sdk/invalid-dependency" "3.303.0"
- "@aws-sdk/middleware-content-length" "3.303.0"
- "@aws-sdk/middleware-endpoint" "3.303.0"
- "@aws-sdk/middleware-host-header" "3.303.0"
- "@aws-sdk/middleware-logger" "3.303.0"
- "@aws-sdk/middleware-recursion-detection" "3.303.0"
- "@aws-sdk/middleware-retry" "3.303.0"
- "@aws-sdk/middleware-serde" "3.303.0"
- "@aws-sdk/middleware-stack" "3.303.0"
- "@aws-sdk/middleware-user-agent" "3.303.0"
- "@aws-sdk/node-config-provider" "3.303.0"
- "@aws-sdk/node-http-handler" "3.303.0"
- "@aws-sdk/protocol-http" "3.303.0"
- "@aws-sdk/smithy-client" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- "@aws-sdk/url-parser" "3.303.0"
- "@aws-sdk/util-base64" "3.303.0"
- "@aws-sdk/util-body-length-browser" "3.303.0"
- "@aws-sdk/util-body-length-node" "3.303.0"
- "@aws-sdk/util-defaults-mode-browser" "3.303.0"
- "@aws-sdk/util-defaults-mode-node" "3.303.0"
- "@aws-sdk/util-endpoints" "3.303.0"
- "@aws-sdk/util-retry" "3.303.0"
- "@aws-sdk/util-user-agent-browser" "3.303.0"
- "@aws-sdk/util-user-agent-node" "3.303.0"
- "@aws-sdk/util-utf8" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/client-sso@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.303.0.tgz#727fea832f57d437cbe213bf77bcd400c47fef3b"
- integrity sha512-LZ+Z6vGnEdqmxx0dqtZP97n5VX5uUKu4lJmDR3sdGolxAUqCY1FxHDZd9DzCFXR8rwoJK4VJTL+exzeVp4Ly/g==
- dependencies:
- "@aws-crypto/sha256-browser" "3.0.0"
- "@aws-crypto/sha256-js" "3.0.0"
- "@aws-sdk/config-resolver" "3.303.0"
- "@aws-sdk/fetch-http-handler" "3.303.0"
- "@aws-sdk/hash-node" "3.303.0"
- "@aws-sdk/invalid-dependency" "3.303.0"
- "@aws-sdk/middleware-content-length" "3.303.0"
- "@aws-sdk/middleware-endpoint" "3.303.0"
- "@aws-sdk/middleware-host-header" "3.303.0"
- "@aws-sdk/middleware-logger" "3.303.0"
- "@aws-sdk/middleware-recursion-detection" "3.303.0"
- "@aws-sdk/middleware-retry" "3.303.0"
- "@aws-sdk/middleware-serde" "3.303.0"
- "@aws-sdk/middleware-stack" "3.303.0"
- "@aws-sdk/middleware-user-agent" "3.303.0"
- "@aws-sdk/node-config-provider" "3.303.0"
- "@aws-sdk/node-http-handler" "3.303.0"
- "@aws-sdk/protocol-http" "3.303.0"
- "@aws-sdk/smithy-client" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- "@aws-sdk/url-parser" "3.303.0"
- "@aws-sdk/util-base64" "3.303.0"
- "@aws-sdk/util-body-length-browser" "3.303.0"
- "@aws-sdk/util-body-length-node" "3.303.0"
- "@aws-sdk/util-defaults-mode-browser" "3.303.0"
- "@aws-sdk/util-defaults-mode-node" "3.303.0"
- "@aws-sdk/util-endpoints" "3.303.0"
- "@aws-sdk/util-retry" "3.303.0"
- "@aws-sdk/util-user-agent-browser" "3.303.0"
- "@aws-sdk/util-user-agent-node" "3.303.0"
- "@aws-sdk/util-utf8" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/client-sts@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.303.0.tgz#1cdfeef723ca351e25067d5263af9901a85089d3"
- integrity sha512-oda7mOfGyJZe62DZ5BVH3L84yeDM0Ja/fSpTjwV9hqFqzgtW83TCpiNegcJmvmGWDYaPmE2qpfDPqPzymB0sBg==
- dependencies:
- "@aws-crypto/sha256-browser" "3.0.0"
- "@aws-crypto/sha256-js" "3.0.0"
- "@aws-sdk/config-resolver" "3.303.0"
- "@aws-sdk/credential-provider-node" "3.303.0"
- "@aws-sdk/fetch-http-handler" "3.303.0"
- "@aws-sdk/hash-node" "3.303.0"
- "@aws-sdk/invalid-dependency" "3.303.0"
- "@aws-sdk/middleware-content-length" "3.303.0"
- "@aws-sdk/middleware-endpoint" "3.303.0"
- "@aws-sdk/middleware-host-header" "3.303.0"
- "@aws-sdk/middleware-logger" "3.303.0"
- "@aws-sdk/middleware-recursion-detection" "3.303.0"
- "@aws-sdk/middleware-retry" "3.303.0"
- "@aws-sdk/middleware-sdk-sts" "3.303.0"
- "@aws-sdk/middleware-serde" "3.303.0"
- "@aws-sdk/middleware-signing" "3.303.0"
- "@aws-sdk/middleware-stack" "3.303.0"
- "@aws-sdk/middleware-user-agent" "3.303.0"
- "@aws-sdk/node-config-provider" "3.303.0"
- "@aws-sdk/node-http-handler" "3.303.0"
- "@aws-sdk/protocol-http" "3.303.0"
- "@aws-sdk/smithy-client" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- "@aws-sdk/url-parser" "3.303.0"
- "@aws-sdk/util-base64" "3.303.0"
- "@aws-sdk/util-body-length-browser" "3.303.0"
- "@aws-sdk/util-body-length-node" "3.303.0"
- "@aws-sdk/util-defaults-mode-browser" "3.303.0"
- "@aws-sdk/util-defaults-mode-node" "3.303.0"
- "@aws-sdk/util-endpoints" "3.303.0"
- "@aws-sdk/util-retry" "3.303.0"
- "@aws-sdk/util-user-agent-browser" "3.303.0"
- "@aws-sdk/util-user-agent-node" "3.303.0"
- "@aws-sdk/util-utf8" "3.303.0"
- fast-xml-parser "4.1.2"
- tslib "^2.5.0"
-
-"@aws-sdk/config-resolver@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.303.0.tgz#0cb7c7c11c2f0786a2400af773aabd2a9507669a"
- integrity sha512-uGZ47jcH86AwWcjZjuOL5jK5qE4izrEol8oF7KY214kjmavbKQstyUqmcwL2lr/YpDNFkCYgUxWRpduqVm8zmw==
- dependencies:
- "@aws-sdk/types" "3.303.0"
- "@aws-sdk/util-config-provider" "3.295.0"
- "@aws-sdk/util-middleware" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/credential-provider-cognito-identity@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.303.0.tgz#e709af936f4684c74c28ba92b15e7dba172ac33d"
- integrity sha512-9MYsGJCNLsm61PW/JFm4y0Cv6aluCkZmE5D/g4vYnEFOZSKyK15m1a10RKGAh391fh6Bg1kU9WOoqkGk3Nyqng==
- dependencies:
- "@aws-sdk/client-cognito-identity" "3.303.0"
- "@aws-sdk/property-provider" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/credential-provider-env@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.303.0.tgz#65ec25f5470ee2b04bba608d49f5e3a603c9575e"
- integrity sha512-rtXumfF4cGrVk9fWACeLCfdpmlzlDUkzwSR60/3enC5Antcxl3fFY5T1BzNFvz0mB0zcwm4kaAwIcljX67DNRA==
- dependencies:
- "@aws-sdk/property-provider" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/credential-provider-imds@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.303.0.tgz#40450f1e523f4b15ea0db1420b2373a8f272ddfb"
- integrity sha512-ruomcFkKUpJkZb87em698//A0AVpt1KN9dn8N8eVyOuvZzebVxSW4AJoVgOKd5Av4PVcZgEqRX0kOOVp0iTrWg==
- dependencies:
- "@aws-sdk/node-config-provider" "3.303.0"
- "@aws-sdk/property-provider" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- "@aws-sdk/url-parser" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/credential-provider-ini@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.303.0.tgz#a4bf44827fee4f65faf16aa863a0f0cebab1c163"
- integrity sha512-4J50F6fEjQmAstSQOpJFG+rnbEqtwA7nDG6PxNm98VSTH2mYJV0YgBdvydfBKrKINAT4xYZta5Sc4WEIpSo0TA==
- dependencies:
- "@aws-sdk/credential-provider-env" "3.303.0"
- "@aws-sdk/credential-provider-imds" "3.303.0"
- "@aws-sdk/credential-provider-process" "3.303.0"
- "@aws-sdk/credential-provider-sso" "3.303.0"
- "@aws-sdk/credential-provider-web-identity" "3.303.0"
- "@aws-sdk/property-provider" "3.303.0"
- "@aws-sdk/shared-ini-file-loader" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/credential-provider-node@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.303.0.tgz#0fe017e7ed2985a168fd2bff3c57d0a35b42d201"
- integrity sha512-OlKb7O2jDtrzkzLT/PUb5kxuGGTIyPn2alXzGT+7LdJ9/tP8KlqSVMtnH2UYPPdcc/daK16+MRNL5ylxmnRJ7Q==
- dependencies:
- "@aws-sdk/credential-provider-env" "3.303.0"
- "@aws-sdk/credential-provider-imds" "3.303.0"
- "@aws-sdk/credential-provider-ini" "3.303.0"
- "@aws-sdk/credential-provider-process" "3.303.0"
- "@aws-sdk/credential-provider-sso" "3.303.0"
- "@aws-sdk/credential-provider-web-identity" "3.303.0"
- "@aws-sdk/property-provider" "3.303.0"
- "@aws-sdk/shared-ini-file-loader" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/credential-provider-process@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.303.0.tgz#ee04ab23bec26aa9d6540d8280714b1c41600c11"
- integrity sha512-1pxDYRscGlERAjFE5hSF1KQdcyOGzssuRTdLvez4I/mSIOAJLMmBAnmHGI/DME2LzDVrC9dklA6LHSC2sn3quQ==
- dependencies:
- "@aws-sdk/property-provider" "3.303.0"
- "@aws-sdk/shared-ini-file-loader" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/credential-provider-sso@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.303.0.tgz#df776289d0076b1bbb62945952eb8dbf32926945"
- integrity sha512-/szzM1BzZGjHwV4mSiZo65cyDleJqnxM9Y4autg55mb3dFwcCiMGI6TGbdegumrNZZlCTeTA1lIhA9PdT4gDAQ==
- dependencies:
- "@aws-sdk/client-sso" "3.303.0"
- "@aws-sdk/property-provider" "3.303.0"
- "@aws-sdk/shared-ini-file-loader" "3.303.0"
- "@aws-sdk/token-providers" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/credential-provider-web-identity@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.303.0.tgz#f83cf1cb50794b13b2772b4d8930a3f315e5f531"
- integrity sha512-qi5CP4ocseqdj3kMi0vgLx8XrdanLNvCAfgiEF6LjUJI88R2snZAYNUSd+Y2n04mKAalns+mUwfUN2JyL66d5g==
- dependencies:
- "@aws-sdk/property-provider" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/credential-providers@^3.186.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.303.0.tgz#fee78e55cf423dc76a3b4b33e03b0e9f6b798b94"
- integrity sha512-ueO8UKvYyzt2lexvIdg50TFC7EO2shRWbMWPsVi6Ul7euoQzthr/TPQts4OLZIt9XeIFd4s9dhFwYSobcRfVGw==
- dependencies:
- "@aws-sdk/client-cognito-identity" "3.303.0"
- "@aws-sdk/client-sso" "3.303.0"
- "@aws-sdk/client-sts" "3.303.0"
- "@aws-sdk/credential-provider-cognito-identity" "3.303.0"
- "@aws-sdk/credential-provider-env" "3.303.0"
- "@aws-sdk/credential-provider-imds" "3.303.0"
- "@aws-sdk/credential-provider-ini" "3.303.0"
- "@aws-sdk/credential-provider-node" "3.303.0"
- "@aws-sdk/credential-provider-process" "3.303.0"
- "@aws-sdk/credential-provider-sso" "3.303.0"
- "@aws-sdk/credential-provider-web-identity" "3.303.0"
- "@aws-sdk/property-provider" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/fetch-http-handler@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.303.0.tgz#ea3fb86f4e33896ca95d4e96cada891b978a99f4"
- integrity sha512-Bc6C86/KQOSWPa741h9QEVcApyignYV5vC5+zZjmKkcyPxrVxTmL3kTJidpVOtVfCmTIrNN/WhAVDzLBbh1ycQ==
- dependencies:
- "@aws-sdk/protocol-http" "3.303.0"
- "@aws-sdk/querystring-builder" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- "@aws-sdk/util-base64" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/hash-node@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.303.0.tgz#aaaf3ce0d596284a98d6a6d4b67da2e7d6392664"
- integrity sha512-jSo4A/JxTabZ9jHrx7nhKIXnOmvPg/SSYnoHaFdVS5URJrNt1w+nSvW1wLGMEMOvu5+NU3bldBBSb+h0Ocwv1A==
- dependencies:
- "@aws-sdk/types" "3.303.0"
- "@aws-sdk/util-buffer-from" "3.303.0"
- "@aws-sdk/util-utf8" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/invalid-dependency@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.303.0.tgz#0e3844d4e4a26879f6fa3f9469386b67976ab4aa"
- integrity sha512-RXNcLxOrUJaMMqk5uIYEf6X9XCMockT27bS8Dde/0ms015VOo8Wn2hHU9wEmGeFvLccC2UU4gPzvmj74w70q2Q==
- dependencies:
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/is-array-buffer@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.303.0.tgz#8cc85c805e679ad8468e5551fddb6ed92fc14548"
- integrity sha512-IitBTr+pou7v5BrYLFH/SbIf3g1LIgMhcI3bDXBq2FjzmDftj4bW8BOmg05b9YKf2TrrggvJ4yk/jH+yYFXoJQ==
- dependencies:
- tslib "^2.5.0"
-
-"@aws-sdk/middleware-content-length@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.303.0.tgz#16281fb3ba2a018a657ee07fdd29fea27d54cc07"
- integrity sha512-0UL5TWSL1JRpjT6gjGsZXfia5oL7vxzj+CfMCqkP6gjVF69eRcgu426Xc6TJwDcr6jIFPeamDBTLyt9ZAAr6hg==
- dependencies:
- "@aws-sdk/protocol-http" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/middleware-endpoint@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.303.0.tgz#bf3443fce9818ce606d2ecbe54e5c9bacba742cc"
- integrity sha512-z2i8LJ6YTKbqXh9rY/KbXihvhq6P0JVI6SnkwT2hesJp0Nfldx85jsaLzj1+ioNKlQ+51u9UmBnO404DgNCAbg==
- dependencies:
- "@aws-sdk/middleware-serde" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- "@aws-sdk/url-parser" "3.303.0"
- "@aws-sdk/util-middleware" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/middleware-host-header@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.303.0.tgz#817a71465525cac86670e00d55ccce7e071ca7cd"
- integrity sha512-LUyhtjbuosrD0QAsBZJwT3yp146I7Xjehf42OP3dWbRuklMEilI0Res5K2/nknf3/ZKUj6sf7BbJoU8E+SpRiQ==
- dependencies:
- "@aws-sdk/protocol-http" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/middleware-logger@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.303.0.tgz#207a94bcbf8cd11b703f6d67654c2d2f2237f208"
- integrity sha512-y2sqmmBdm4gXUL4SyN+ucfO/sxtOEDj2sB12ArRpDGyerfNLhAf7xpL4lXkjPx/7wTIjlBWoO2G/yK6t00P6fA==
- dependencies:
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/middleware-recursion-detection@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.303.0.tgz#d1c3e16fbb1d19f95802e870c25959e44ea90ab6"
- integrity sha512-z3MTsZMtPg6hYWl6a0o07q7zgsDXPYeP14XFVMc8NXqiAyNcm/OYwanpXyNjsEKI/X0nlpJ/Rs+IRCbaIqV9Mw==
- dependencies:
- "@aws-sdk/protocol-http" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/middleware-retry@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.303.0.tgz#f4b25a8a3b52937abbf2ccd05ee149fe0d8207a1"
- integrity sha512-wxlqrdGOrCm2Jsra7YyfLyO34YRB/FNlXzwuJiZkqoAb/40ZAuFcWqDv41SP44y8liFXqfsMGuywJ7mK2cHvnA==
- dependencies:
- "@aws-sdk/protocol-http" "3.303.0"
- "@aws-sdk/service-error-classification" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- "@aws-sdk/util-middleware" "3.303.0"
- "@aws-sdk/util-retry" "3.303.0"
- tslib "^2.5.0"
- uuid "^8.3.2"
-
-"@aws-sdk/middleware-sdk-sts@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.303.0.tgz#728077cc28ee9173ecddd11a4a0213c2f3d0d9e0"
- integrity sha512-igp7htNCUPhVL9Q6rJSgcx3qy/P2l2KAiS0oozOTaTXt3h0LbOusSXtwyA7qvLYeRthnw6msVW+rVBAW3Vo+3g==
- dependencies:
- "@aws-sdk/middleware-signing" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/middleware-serde@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.303.0.tgz#498766aa4adadbb7c18314608e04a483b213834f"
- integrity sha512-mmZozwYKgUgXkJrLVqgIYoOQ8DfKZS3pBBT3ZxWzv5Hz5M3oRqFgfVYljkeDM2CTvBweHpqVRTWqPDMcZisucg==
- dependencies:
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/middleware-signing@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.303.0.tgz#f18ede6a143679a9a4941e3a604837f67a6034a2"
- integrity sha512-rrLQcS2wFsUGj9Kyx78LRgRS8jwiixz/Nyv06SmcKhP680sweETpQz/EA+wcVEVRXmUI6vs4NtqXz36dU0X8Nw==
- dependencies:
- "@aws-sdk/property-provider" "3.303.0"
- "@aws-sdk/protocol-http" "3.303.0"
- "@aws-sdk/signature-v4" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- "@aws-sdk/util-middleware" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/middleware-stack@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.303.0.tgz#af14d8eae7a0faaed959e8c0388366f140cb86dc"
- integrity sha512-6KmdroXLexzILGxF/Xq0cGBs+B8Ipm1pff8qnWCT6KldYp+Q40bVcJrExkVHDN1uOsOxu20ixW2yujOKS356zg==
- dependencies:
- tslib "^2.5.0"
-
-"@aws-sdk/middleware-user-agent@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.303.0.tgz#35a9df0bb7306762179e27ec418be6b5dfffba33"
- integrity sha512-ZVMVNxPRn2jXog3V4xWokSYoQxTKAdKlNoCfjqFplsF70r8sXfgZtOMF5ZhGo+Hgsx7GqpR/NWPKJtZD2nigpg==
- dependencies:
- "@aws-sdk/protocol-http" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- "@aws-sdk/util-endpoints" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/node-config-provider@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.303.0.tgz#ba8f17b7cafc224fddddee20c22535dd89399f6d"
- integrity sha512-Ywbo9+2SkbdmNgCoxYJrv+YrFDtBH7hHtn2ywtzP4t57d4t0V/LNrNQsrAsXxqy48OS5r2ovOLHiqJS5jp1oyw==
- dependencies:
- "@aws-sdk/property-provider" "3.303.0"
- "@aws-sdk/shared-ini-file-loader" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/node-http-handler@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.303.0.tgz#d131f5789f5214542e0f9fa31b86fad53a465cda"
- integrity sha512-5Te+mwBIOiQr2nM7/SNVFkvYHOH/CswOmUMV4Gxc7YjuervhrYvVFs2P+lL+c8rfiVMTLWjnJ6JiL2JdJfYgnQ==
- dependencies:
- "@aws-sdk/abort-controller" "3.303.0"
- "@aws-sdk/protocol-http" "3.303.0"
- "@aws-sdk/querystring-builder" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/property-provider@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.303.0.tgz#a46d0a4c5e7c281de2738ca617f258ccb403787e"
- integrity sha512-d1qbn0pCz+jvB0dcWMWuIlWYM8dWCg3185ngMgUQxkgUk7/kEbwGBsmT+xtZAMQcwcgPkSm8qeATEQ7ToiH8eQ==
- dependencies:
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/protocol-http@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.303.0.tgz#2bf0ced8b5a264e2191237e74de370bff7891113"
- integrity sha512-eqblSsdmKBzgNl06dUnL4toq/OQgZyxVsxHCz2nI/xBk5lI/qAZIJyEgP2GmP8aoWwneAq33roG0VLZoxQ8exg==
- dependencies:
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/querystring-builder@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.303.0.tgz#75308ba0635595056138942c12d30222c33a579c"
- integrity sha512-0eMp2gd7Ro0svJ6YVnp9cUiGtrc1d/HynyMfbDkLkqWJAnHMz7Oc1GjK5YyL1hdxm0W+JWZCPR0SovLiaboKDw==
- dependencies:
- "@aws-sdk/types" "3.303.0"
- "@aws-sdk/util-uri-escape" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/querystring-parser@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.303.0.tgz#0a5e17b9e1e98ae7bc5bf19f2e7939e5d90a3669"
- integrity sha512-KNJSQiTFiA7W5eYCox8bLGM7kghC3Azad86HQhdsYO0jCoPxcgj8MeP6T7fPTIC4WcTwcWb7T1MpzoeBiKMOTQ==
- dependencies:
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/service-error-classification@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.303.0.tgz#31201ca94870cc2ae73e60a2e3c235a0fd79638d"
- integrity sha512-eO13PzdtRO9C+g3tyFOpIblX2SbDrIbg2bNtB8JOfjVi3E1b5VsSTXXU/cKV+lbZ9XMzMn3VzGSvpo6AjzfpxA==
-
-"@aws-sdk/shared-ini-file-loader@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.303.0.tgz#a6ada5fc4df9be84bcd562ba997b8ca93325d0e4"
- integrity sha512-yI84mnnh3pdQtIOo+oGWofaI0rvfhp3DOavB8KHIkQr+RcjF+fxsqbelRfVb25gx7yEWPNCMB8wM+HhklSEFJg==
- dependencies:
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/signature-v4@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.303.0.tgz#7f9e9b65291a8d790d674e1f6126072212149b1d"
- integrity sha512-muw5yclLOgXPHIxv60mhO6R0GVjKbf+M6E/cWvIEVGq8Ke+mLMYNFYNdKP/f/8JgTtW2xwQ7pIK3U8x284ZqPw==
- dependencies:
- "@aws-sdk/is-array-buffer" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- "@aws-sdk/util-hex-encoding" "3.295.0"
- "@aws-sdk/util-middleware" "3.303.0"
- "@aws-sdk/util-uri-escape" "3.303.0"
- "@aws-sdk/util-utf8" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/smithy-client@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.303.0.tgz#bc15c5ca7b917a85895cf5446336c7987bd31a29"
- integrity sha512-WDTC9ODdpRAXo8+Mtr5hsPJeR3y3LxfZZFg5dplJgkaxV+MFdnsUCxZfAZMnxcGy5Q2qTzlLLNk9CpadS72v+g==
- dependencies:
- "@aws-sdk/middleware-stack" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/token-providers@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.303.0.tgz#1b4b8e128785ff3309cfc06bcf1a00692e5ce157"
- integrity sha512-7G7VYbqyX0v6RTD/m7XmArZToMek4jYXR/TuuGHK6ifNJeMDwkU4BcoVDj37vvTPYp6qKU5IE+bE3XmPyVWnGQ==
- dependencies:
- "@aws-sdk/client-sso-oidc" "3.303.0"
- "@aws-sdk/property-provider" "3.303.0"
- "@aws-sdk/shared-ini-file-loader" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/types@3.303.0", "@aws-sdk/types@^3.222.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.303.0.tgz#6ac0e4ea2fec9d82e4e8a18d31f5c4767b222a21"
- integrity sha512-H+Cy8JDTsK87MID6MJbV9ad5xdS9YvaLZSeveC2Zs1WNu2Rp6X9j+mg3EqDSmBKUQVAFRy2b+CSKkH3nnBMedw==
- dependencies:
- tslib "^2.5.0"
-
-"@aws-sdk/url-parser@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.303.0.tgz#65ff9e7825f7626727d692c38bbd51dc5a21a7a9"
- integrity sha512-PXMXGhr89s0MiPTf8Ft/v3sPzh2geSrFhTVSO/01blfBQqtuu0JMqORhLheOdi16AhQNVlYHDW2tWdx7/T+KsA==
- dependencies:
- "@aws-sdk/querystring-parser" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/util-base64@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64/-/util-base64-3.303.0.tgz#653281b7c1abfafc3f7a4c6f3b00d0733a4c455a"
- integrity sha512-oj+p/GHHPcZEKjiiOHU/CyNQeh8i+8dfMMzU+VGdoK5jHaVG8h2b+V7GPf7I4wDkG2ySCK5b5Jw5NUHwdTJ13Q==
- dependencies:
- "@aws-sdk/util-buffer-from" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/util-body-length-browser@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.303.0.tgz#837cd63e59c1fda1d6a657a5c08fff7758ce4dc7"
- integrity sha512-T643m0pKzgjAvPFy4W8zL+aszG3T22U8hb6stlMvT0z++Smv8QfIvkIkXjWyH2KlOt5GKliHwdOv8SAi0FSMJQ==
- dependencies:
- tslib "^2.5.0"
-
-"@aws-sdk/util-body-length-node@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.303.0.tgz#56c66486a9416e6497227e1ed3618b8bd7a0d710"
- integrity sha512-/hS8z6e18Le60hJr2TUIFoUjUiAsnQsuDn6DxX74GXhMOHeSwZDJ9jHF39quYkNMmAE37GrVH4MI9vE0pN27qw==
- dependencies:
- tslib "^2.5.0"
-
-"@aws-sdk/util-buffer-from@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.303.0.tgz#4ec18ecdf380d3434a80d9f9762264725516651a"
- integrity sha512-hUU+NW+SW6RNojtAKnnmz+tDShVKlEx2YsS4a5fSfrKRUes+zWz10cxVX0RQfysd3R6tdSHhbjsSj8eCIybheg==
- dependencies:
- "@aws-sdk/is-array-buffer" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/util-config-provider@3.295.0":
- version "3.295.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-config-provider/-/util-config-provider-3.295.0.tgz#c0f76407181722791b0a7bf80a9f01e78fd80250"
- integrity sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==
- dependencies:
- tslib "^2.5.0"
-
-"@aws-sdk/util-defaults-mode-browser@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.303.0.tgz#c0bf85c5f8941334ca29b591b86d05eeddf508f4"
- integrity sha512-jtZgCKelFe4/SHDHQu9ydbYttxSfqSlQojA5qxTJxLvzryIB+/GTHQ+sYWyMyzaD489W9elt1/cSsXd4LtPK0A==
- dependencies:
- "@aws-sdk/property-provider" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- bowser "^2.11.0"
- tslib "^2.5.0"
-
-"@aws-sdk/util-defaults-mode-node@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.303.0.tgz#951301d11da24876126b6337fccbe65c95837f9c"
- integrity sha512-c86iyot/u9bCVcy/rlWL+0kdR51c7C2d2yDXvO9iFCdMKAs28Hw1ijGczVmOcUQ61zKNFSGYx+VekHXN9IWYOg==
- dependencies:
- "@aws-sdk/config-resolver" "3.303.0"
- "@aws-sdk/credential-provider-imds" "3.303.0"
- "@aws-sdk/node-config-provider" "3.303.0"
- "@aws-sdk/property-provider" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/util-endpoints@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.303.0.tgz#03b4866faf9bc4302044a309e416e31fc59747bd"
- integrity sha512-dPg9+l3VY3nclWFiWAVNWek5lQwgdtY8oRYOgCeyntce9FlNrPQgCRTVr36D0iQ0aNCs0GWzfjgL+rIdCF66/w==
- dependencies:
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/util-hex-encoding@3.295.0":
- version "3.295.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.295.0.tgz#13acb924f88785d317c9bec37e5ca173ccc4a0ca"
- integrity sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==
- dependencies:
- tslib "^2.5.0"
-
-"@aws-sdk/util-locate-window@^3.0.0":
- version "3.295.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.295.0.tgz#b421047b977ef53a8575b7b72780c7209ff5480e"
- integrity sha512-d/s+zhUx5Kh4l/ecMP/TBjzp1GR/g89Q4nWH6+wH5WgdHsK+LG+vmsk6mVNuP/8wsCofYG4NBqp5Ulbztbm9QA==
- dependencies:
- tslib "^2.5.0"
-
-"@aws-sdk/util-middleware@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.303.0.tgz#7cb6c5628dad9876fe5fb938163e49e3eab1a24c"
- integrity sha512-HAfBcbZw1+pY3dIEDM4jVpH1ViFcGH5s0q1dr+x4rcLGpMM3B4dH0HUgDPtycG8sw+nk+9jGgiEtgaCNOpJLGA==
- dependencies:
- tslib "^2.5.0"
-
-"@aws-sdk/util-retry@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-retry/-/util-retry-3.303.0.tgz#e0d08c93347c4d4e684d01b86a1038774f8eece8"
- integrity sha512-RWwRNjoWMcpDouz69wPuFXWFVzwYtUkTbJfa46SjKl1IwqMHS4f9yjJfCwJIoLOW9M/o2JB7nD0Ij3gqqzajLw==
- dependencies:
- "@aws-sdk/service-error-classification" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/util-uri-escape@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.303.0.tgz#3101c27e0bf630fdcb288704d72412f75fa74bb8"
- integrity sha512-N3ULNuHCL3QzAlCTY+XRRkRQTYCTU8RRuzFCJX0pDpz9t2K+tLT7DbxqupWGNFGl5Xlulf1Is14J3BP/Dx91rA==
- dependencies:
- tslib "^2.5.0"
-
-"@aws-sdk/util-user-agent-browser@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.303.0.tgz#3e0e9e17d0b6c3702e242ce0d66315d6392167a1"
- integrity sha512-Kex3abpUrTX9z129jiI8sfjIUmQDwiWjhkvBkPmrwjFY/sZcnOcXj5nP2iwJ+k6CnA5ZK5PjZ6P62t+eJ5MTXw==
- dependencies:
- "@aws-sdk/types" "3.303.0"
- bowser "^2.11.0"
- tslib "^2.5.0"
-
-"@aws-sdk/util-user-agent-node@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.303.0.tgz#318a9e06516ad94df53e6801ccccecfb7f05ab0e"
- integrity sha512-QYUg8F/Ho6AsVZaSSRMf/LWoEPDyOwgKZBw3AbKoH6RxAdAsdL1SXz5t4A6jHakP9TLVN2Yw2WRbHDe4LATASQ==
+"@angular-devkit/schematics@19.2.8":
+ version "19.2.8"
+ resolved "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.8.tgz"
+ integrity sha512-QsmFuYdAyeCyg9WF/AJBhFXDUfCwmDFTEbsv5t5KPSP6slhk0GoLNZApniiFytU2siRlSxVNpve2uATyYuAYkQ==
dependencies:
- "@aws-sdk/node-config-provider" "3.303.0"
- "@aws-sdk/types" "3.303.0"
- tslib "^2.5.0"
-
-"@aws-sdk/util-utf8-browser@^3.0.0":
- version "3.259.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff"
- integrity sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==
- dependencies:
- tslib "^2.3.1"
-
-"@aws-sdk/util-utf8@3.303.0":
- version "3.303.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8/-/util-utf8-3.303.0.tgz#c6a3caacfc3f5460132379d586dc9c2a08b8f45e"
- integrity sha512-tZXVuMOIONPOuOGBs/XRdzxv6jUvTM620dRFFIHZwlGiW8bo0x0LlonrzDAJZA4e9ZwmxJIj8Ji13WVRBGvZWg==
- dependencies:
- "@aws-sdk/util-buffer-from" "3.303.0"
- tslib "^2.5.0"
-
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.23.5":
- version "7.23.5"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244"
- integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==
- dependencies:
- "@babel/highlight" "^7.23.4"
- chalk "^2.4.2"
+ "@angular-devkit/core" "19.2.8"
+ jsonc-parser "3.3.1"
+ magic-string "0.30.17"
+ ora "5.4.1"
+ rxjs "7.8.1"
-"@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4":
- version "7.21.4"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39"
- integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz"
+ integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==
dependencies:
- "@babel/highlight" "^7.18.6"
-
-"@babel/compat-data@^7.21.4":
- version "7.21.4"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.4.tgz#457ffe647c480dff59c2be092fc3acf71195c87f"
- integrity sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==
+ "@babel/helper-validator-identifier" "^7.27.1"
+ js-tokens "^4.0.0"
+ picocolors "^1.1.1"
"@babel/compat-data@^7.23.5":
version "7.23.5"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98"
+ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz"
integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==
-"@babel/core@^7.11.6", "@babel/core@^7.12.3":
- version "7.21.4"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.4.tgz#c6dc73242507b8e2a27fd13a9c1814f9fa34a659"
- integrity sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==
- dependencies:
- "@ampproject/remapping" "^2.2.0"
- "@babel/code-frame" "^7.21.4"
- "@babel/generator" "^7.21.4"
- "@babel/helper-compilation-targets" "^7.21.4"
- "@babel/helper-module-transforms" "^7.21.2"
- "@babel/helpers" "^7.21.0"
- "@babel/parser" "^7.21.4"
- "@babel/template" "^7.20.7"
- "@babel/traverse" "^7.21.4"
- "@babel/types" "^7.21.4"
- convert-source-map "^1.7.0"
- debug "^4.1.0"
- gensync "^1.0.0-beta.2"
- json5 "^2.2.2"
- semver "^6.3.0"
-
-"@babel/core@^7.23.9":
+"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9":
version "7.23.9"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1"
+ resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz"
integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==
dependencies:
"@ampproject/remapping" "^2.2.0"
@@ -844,19 +108,9 @@
json5 "^2.2.3"
semver "^6.3.1"
-"@babel/generator@^7.21.4", "@babel/generator@^7.7.2":
- version "7.21.4"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc"
- integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==
- dependencies:
- "@babel/types" "^7.21.4"
- "@jridgewell/gen-mapping" "^0.3.2"
- "@jridgewell/trace-mapping" "^0.3.17"
- jsesc "^2.5.1"
-
-"@babel/generator@^7.23.6":
+"@babel/generator@^7.23.6", "@babel/generator@^7.7.2":
version "7.23.6"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e"
+ resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz"
integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==
dependencies:
"@babel/types" "^7.23.6"
@@ -864,20 +118,9 @@
"@jridgewell/trace-mapping" "^0.3.17"
jsesc "^2.5.1"
-"@babel/helper-compilation-targets@^7.21.4":
- version "7.21.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz#770cd1ce0889097ceacb99418ee6934ef0572656"
- integrity sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==
- dependencies:
- "@babel/compat-data" "^7.21.4"
- "@babel/helper-validator-option" "^7.21.0"
- browserslist "^4.21.3"
- lru-cache "^5.1.1"
- semver "^6.3.0"
-
"@babel/helper-compilation-targets@^7.23.6":
version "7.23.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991"
+ resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz"
integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==
dependencies:
"@babel/compat-data" "^7.23.5"
@@ -886,19 +129,14 @@
lru-cache "^5.1.1"
semver "^6.3.1"
-"@babel/helper-environment-visitor@^7.18.9":
- version "7.18.9"
- resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
- integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
-
"@babel/helper-environment-visitor@^7.22.20":
version "7.22.20"
- resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167"
+ resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz"
integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==
"@babel/helper-function-name@^7.23.0":
version "7.23.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759"
+ resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz"
integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==
dependencies:
"@babel/template" "^7.22.15"
@@ -906,42 +144,21 @@
"@babel/helper-hoist-variables@^7.22.5":
version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb"
+ resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz"
integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==
dependencies:
"@babel/types" "^7.22.5"
-"@babel/helper-module-imports@^7.18.6":
- version "7.21.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af"
- integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==
- dependencies:
- "@babel/types" "^7.21.4"
-
"@babel/helper-module-imports@^7.22.15":
version "7.22.15"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0"
+ resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz"
integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==
dependencies:
"@babel/types" "^7.22.15"
-"@babel/helper-module-transforms@^7.21.2":
- version "7.21.2"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2"
- integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==
- dependencies:
- "@babel/helper-environment-visitor" "^7.18.9"
- "@babel/helper-module-imports" "^7.18.6"
- "@babel/helper-simple-access" "^7.20.2"
- "@babel/helper-split-export-declaration" "^7.18.6"
- "@babel/helper-validator-identifier" "^7.19.1"
- "@babel/template" "^7.20.7"
- "@babel/traverse" "^7.21.2"
- "@babel/types" "^7.21.2"
-
"@babel/helper-module-transforms@^7.23.3":
version "7.23.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1"
+ resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz"
integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==
dependencies:
"@babel/helper-environment-visitor" "^7.22.20"
@@ -952,223 +169,163 @@
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0":
version "7.20.2"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629"
+ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz"
integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==
-"@babel/helper-simple-access@^7.20.2":
- version "7.20.2"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9"
- integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==
- dependencies:
- "@babel/types" "^7.20.2"
-
"@babel/helper-simple-access@^7.22.5":
version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de"
+ resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz"
integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==
dependencies:
"@babel/types" "^7.22.5"
-"@babel/helper-split-export-declaration@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075"
- integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==
- dependencies:
- "@babel/types" "^7.18.6"
-
"@babel/helper-split-export-declaration@^7.22.6":
version "7.22.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c"
+ resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz"
integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==
dependencies:
"@babel/types" "^7.22.5"
-"@babel/helper-string-parser@^7.19.4":
- version "7.19.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
- integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
+"@babel/helper-string-parser@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz"
+ integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
-"@babel/helper-string-parser@^7.23.4":
- version "7.23.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83"
- integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==
-
-"@babel/helper-validator-identifier@^7.19.1":
- version "7.19.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
- integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
-
-"@babel/helper-validator-identifier@^7.22.20":
- version "7.22.20"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0"
- integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
-
-"@babel/helper-validator-option@^7.21.0":
- version "7.21.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180"
- integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==
+"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz"
+ integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==
"@babel/helper-validator-option@^7.23.5":
version "7.23.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307"
+ resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz"
integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==
-"@babel/helpers@^7.21.0":
- version "7.21.0"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e"
- integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==
- dependencies:
- "@babel/template" "^7.20.7"
- "@babel/traverse" "^7.21.0"
- "@babel/types" "^7.21.0"
-
"@babel/helpers@^7.23.9":
- version "7.23.9"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d"
- integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==
+ version "7.27.6"
+ resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz"
+ integrity sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==
dependencies:
- "@babel/template" "^7.23.9"
- "@babel/traverse" "^7.23.9"
- "@babel/types" "^7.23.9"
+ "@babel/template" "^7.27.2"
+ "@babel/types" "^7.27.6"
-"@babel/highlight@^7.18.6", "@babel/highlight@^7.23.4":
- version "7.23.4"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b"
- integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==
+"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.2":
+ version "7.27.5"
+ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz"
+ integrity sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==
dependencies:
- "@babel/helper-validator-identifier" "^7.22.20"
- chalk "^2.4.2"
- js-tokens "^4.0.0"
-
-"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.4":
- version "7.21.4"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17"
- integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==
-
-"@babel/parser@^7.23.9":
- version "7.23.9"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b"
- integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==
+ "@babel/types" "^7.27.3"
"@babel/plugin-syntax-async-generators@^7.8.4":
version "7.8.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz"
integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-bigint@^7.8.3":
version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz"
integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-class-properties@^7.8.3":
version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz"
integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
"@babel/plugin-syntax-import-meta@^7.8.3":
version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz"
integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
"@babel/plugin-syntax-json-strings@^7.8.3":
version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz"
integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-jsx@^7.7.2":
version "7.21.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz"
integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==
dependencies:
"@babel/helper-plugin-utils" "^7.20.2"
"@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz"
integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz"
integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-numeric-separator@^7.8.3":
version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz"
integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
"@babel/plugin-syntax-object-rest-spread@^7.8.3":
version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz"
integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-optional-catch-binding@^7.8.3":
version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz"
integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-optional-chaining@^7.8.3":
version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz"
integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-top-level-await@^7.8.3":
version "7.14.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz"
integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/plugin-syntax-typescript@^7.7.2":
version "7.21.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz"
integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==
dependencies:
"@babel/helper-plugin-utils" "^7.20.2"
-"@babel/template@^7.20.7", "@babel/template@^7.3.3":
- version "7.20.7"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8"
- integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==
- dependencies:
- "@babel/code-frame" "^7.18.6"
- "@babel/parser" "^7.20.7"
- "@babel/types" "^7.20.7"
-
-"@babel/template@^7.22.15", "@babel/template@^7.23.9":
- version "7.23.9"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a"
- integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==
+"@babel/template@^7.22.15", "@babel/template@^7.23.9", "@babel/template@^7.27.2", "@babel/template@^7.3.3":
+ version "7.27.2"
+ resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz"
+ integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==
dependencies:
- "@babel/code-frame" "^7.23.5"
- "@babel/parser" "^7.23.9"
- "@babel/types" "^7.23.9"
+ "@babel/code-frame" "^7.27.1"
+ "@babel/parser" "^7.27.2"
+ "@babel/types" "^7.27.1"
-"@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4", "@babel/traverse@^7.23.9":
+"@babel/traverse@^7.23.9":
version "7.23.9"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950"
+ resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz"
integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==
dependencies:
"@babel/code-frame" "^7.23.5"
@@ -1182,110 +339,55 @@
debug "^4.3.1"
globals "^11.1.0"
-"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3":
- version "7.21.4"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4"
- integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==
+"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3":
+ version "7.27.6"
+ resolved "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz"
+ integrity sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==
dependencies:
- "@babel/helper-string-parser" "^7.19.4"
- "@babel/helper-validator-identifier" "^7.19.1"
- to-fast-properties "^2.0.0"
-
-"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.23.9":
- version "7.23.9"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002"
- integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==
- dependencies:
- "@babel/helper-string-parser" "^7.23.4"
- "@babel/helper-validator-identifier" "^7.22.20"
- to-fast-properties "^2.0.0"
+ "@babel/helper-string-parser" "^7.27.1"
+ "@babel/helper-validator-identifier" "^7.27.1"
"@bcoe/v8-coverage@^0.2.3":
version "0.2.3"
- resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
+ resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
"@bitloops/bl-boilerplate-core@^0.3.6":
version "0.3.6"
- resolved "https://registry.yarnpkg.com/@bitloops/bl-boilerplate-core/-/bl-boilerplate-core-0.3.6.tgz#b9036edeba48566aa307e26d0248002ee892725c"
+ resolved "https://registry.npmjs.org/@bitloops/bl-boilerplate-core/-/bl-boilerplate-core-0.3.6.tgz"
integrity sha512-qGWwY8alc5npl9mdKlQal8D1XWT3hCk8ui1iNyQlmiQcvdbQGDPyN2FK+XdsqSmQs5UQtYC4lWFFKShnSHDHqw==
dependencies:
class-transformer "^0.5.1"
nats "^2.10.2"
reflect-metadata "^0.1.13"
-"@bitloops/bl-boilerplate-infra-mongo@^0.1.2":
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/@bitloops/bl-boilerplate-infra-mongo/-/bl-boilerplate-infra-mongo-0.1.2.tgz#0b40e2f21a5422f796aed2349b44088b5e79d66a"
- integrity sha512-PKIM8qQrlCwdhveEVU5TvgY5CwaCHB9b6SYMM0KiZpxbfmmzHJn3y43rHlGUz26DJb2AIEGz+bACrLecF4DxLA==
- dependencies:
- "@nestjs/common" "^9.0.0"
- mongodb "^4.10.0"
-
-"@bitloops/bl-boilerplate-infra-nest-auth-passport@^0.1.4":
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/@bitloops/bl-boilerplate-infra-nest-auth-passport/-/bl-boilerplate-infra-nest-auth-passport-0.1.4.tgz#41bf4e80c4e949224d70713df3910b1065c0d28f"
- integrity sha512-QEt49TpX4Z27DPDBdxnR7f7cJOUlYdIfDzVR4wsZY/53IA6kqdWjMjGXnJGqsIO4Bm24nCHpg3mHD3oW2WcdvQ==
- dependencies:
- "@bitloops/bl-boilerplate-infra-postgres" "^0.1.1"
- "@nestjs/jwt" "^10.0.2"
- "@nestjs/passport" "^9.0.3"
- bcrypt "^5.1.0"
- class-validator "^0.14.0"
- passport-jwt "^4.0.1"
- passport-local "^1.0.0"
- rxjs "^7.8.0"
-
-"@bitloops/bl-boilerplate-infra-nest-jetstream@^0.0.8":
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/@bitloops/bl-boilerplate-infra-nest-jetstream/-/bl-boilerplate-infra-nest-jetstream-0.0.8.tgz#4cb277e6cd35d5b60b187c1ec5513958f03c8e02"
- integrity sha512-gKHXBTbq5XPWmKZHzH3tz5ZUFpLV6zUU3Hlsc3+imIlCYXBLQQAJII92GfhjA8eNLA1T2QJVC//MiWOAzBWSOA==
- dependencies:
- async-mutex "^0.4.0"
- nats "^2.13.1"
-
-"@bitloops/bl-boilerplate-infra-postgres@^0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@bitloops/bl-boilerplate-infra-postgres/-/bl-boilerplate-infra-postgres-0.1.1.tgz#195bc43cc366c05f502164a4c95c2248ceb4b8ed"
- integrity sha512-4+iUhQdgTVguKxBg4NKOfozDXZ1B+OzSKLCTISsfSpnFGV/SQP2K+kDH8TXM47kzKMDeF13vrBCh+2CQ5VW9CA==
- dependencies:
- "@nestjs/common" "^9.0.0"
- pg "^8.10.0"
-
-"@bitloops/bl-boilerplate-infra-telemetry@^0.1.3":
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/@bitloops/bl-boilerplate-infra-telemetry/-/bl-boilerplate-infra-telemetry-0.1.3.tgz#361165cb315b1ea10cd3c2cecb0ec2a8928a3667"
- integrity sha512-R0WkRIxoEpUcjngeFKIkDxtPBuGLQs1FZMGHkf22SY+PRX2wjTLyIxz8sqCZUtyevVo+SJoJVOqt3/mzSB348Q==
- dependencies:
- fastify "^4.15.0"
-
"@colors/colors@1.5.0":
version "1.5.0"
- resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9"
+ resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz"
integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==
"@cspotcode/source-map-support@^0.8.0":
version "0.8.1"
- resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
+ resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz"
integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==
dependencies:
"@jridgewell/trace-mapping" "0.3.9"
"@eslint-community/eslint-utils@^4.2.0":
version "4.4.0"
- resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
+ resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz"
integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
dependencies:
eslint-visitor-keys "^3.3.0"
"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1":
version "4.10.0"
- resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63"
+ resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz"
integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==
"@eslint/eslintrc@^2.1.4":
version "2.1.4"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad"
+ resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz"
integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
dependencies:
ajv "^6.12.4"
@@ -1300,84 +402,160 @@
"@eslint/js@8.57.0":
version "8.57.0"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f"
+ resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz"
integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
-"@fastify/ajv-compiler@^3.5.0":
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz#459bff00fefbf86c96ec30e62e933d2379e46670"
- integrity sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==
+"@fastify/accept-negotiator@^2.0.0":
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-2.0.1.tgz"
+ integrity sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==
+
+"@fastify/ajv-compiler@^4.0.0":
+ version "4.0.2"
+ resolved "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.2.tgz"
+ integrity sha512-Rkiu/8wIjpsf46Rr+Fitd3HRP+VsxUFDDeag0hs9L0ksfnwx2g7SPQQTFL0E8Qv+rfXzQOxBJnjUB9ITUDjfWQ==
dependencies:
- ajv "^8.11.0"
- ajv-formats "^2.1.1"
- fast-uri "^2.0.0"
+ ajv "^8.12.0"
+ ajv-formats "^3.0.1"
+ fast-uri "^3.0.0"
+
+"@fastify/autoload@^6.3.1":
+ version "6.3.1"
+ resolved "https://registry.npmjs.org/@fastify/autoload/-/autoload-6.3.1.tgz"
+ integrity sha512-0fsG+lO3m5yEZVjXKpltCe+2eHhM6rfAPQhvlGUgLUFTw/N2wA9WqPTObMtrF3oUCUrxbSDv60HlUIoh+aFM1A==
-"@fastify/cors@8.3.0":
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/@fastify/cors/-/cors-8.3.0.tgz#f03d745731b770793a1a15344da7220ca0d19619"
- integrity sha512-oj9xkka2Tg0MrwuKhsSUumcAkfp2YCnKxmFEusi01pjk1YrdDsuSYTHXEelWNW+ilSy/ApZq0c2SvhKrLX0H1g==
+"@fastify/cors@11.0.1", "@fastify/cors@^11.0.1":
+ version "11.0.1"
+ resolved "https://registry.npmjs.org/@fastify/cors/-/cors-11.0.1.tgz"
+ integrity sha512-dmZaE7M1f4SM8ZZuk5RhSsDJ+ezTgI7v3HHRj8Ow9CneczsPLZV6+2j2uwdaSLn8zhTv6QV0F4ZRcqdalGx1pQ==
dependencies:
- fastify-plugin "^4.0.0"
- mnemonist "0.39.5"
+ fastify-plugin "^5.0.0"
+ toad-cache "^3.7.0"
-"@fastify/error@^3.0.0", "@fastify/error@^3.2.0", "@fastify/error@^3.3.0":
- version "3.4.1"
- resolved "https://registry.yarnpkg.com/@fastify/error/-/error-3.4.1.tgz#b14bb4cac3dd4ec614becbc643d1511331a6425c"
- integrity sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==
+"@fastify/error@^4.0.0":
+ version "4.2.0"
+ resolved "https://registry.npmjs.org/@fastify/error/-/error-4.2.0.tgz"
+ integrity sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==
-"@fastify/fast-json-stringify-compiler@^4.2.0", "@fastify/fast-json-stringify-compiler@^4.3.0":
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz#5df89fa4d1592cbb8780f78998355feb471646d5"
- integrity sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==
+"@fastify/fast-json-stringify-compiler@^5.0.0":
+ version "5.0.3"
+ resolved "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.3.tgz"
+ integrity sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==
dependencies:
- fast-json-stringify "^5.7.0"
+ fast-json-stringify "^6.0.0"
-"@fastify/formbody@7.4.0":
- version "7.4.0"
- resolved "https://registry.yarnpkg.com/@fastify/formbody/-/formbody-7.4.0.tgz#5370b16d1ee58b9023008d1e883de60353a132ad"
- integrity sha512-H3C6h1GN56/SMrZS8N2vCT2cZr7mIHzBHzOBa5OPpjfB/D6FzP9mMpE02ZzrFX0ANeh0BAJdoXKOF2e7IbV+Og==
+"@fastify/formbody@8.0.2":
+ version "8.0.2"
+ resolved "https://registry.npmjs.org/@fastify/formbody/-/formbody-8.0.2.tgz"
+ integrity sha512-84v5J2KrkXzjgBpYnaNRPqwgMsmY7ZDjuj0YVuMR3NXCJRCgKEZy/taSP1wUYGn0onfxJpLyRGDLa+NMaDJtnA==
dependencies:
- fast-querystring "^1.0.0"
- fastify-plugin "^4.0.0"
+ fast-querystring "^1.1.2"
+ fastify-plugin "^5.0.0"
-"@fastify/merge-json-schemas@^0.1.0":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz#3551857b8a17a24e8c799e9f51795edb07baa0bc"
- integrity sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==
+"@fastify/forwarded@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/@fastify/forwarded/-/forwarded-3.0.0.tgz"
+ integrity sha512-kJExsp4JCms7ipzg7SJ3y8DwmePaELHxKYtg+tZow+k0znUTf3cb+npgyqm8+ATZOdmfgfydIebPDWM172wfyA==
+
+"@fastify/helmet@^13.0.1":
+ version "13.0.1"
+ resolved "https://registry.npmjs.org/@fastify/helmet/-/helmet-13.0.1.tgz"
+ integrity sha512-i+ifqazG3d0HwHL3zuZdg6B/WPc9Ee6kVfGpwGho4nxm0UaK1htss0zq+1rVhOoAorZlCgTZ3/i4S58hUGkkoA==
dependencies:
- fast-deep-equal "^3.1.3"
+ fastify-plugin "^5.0.0"
+ helmet "^8.0.0"
-"@fastify/middie@8.3.0":
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/@fastify/middie/-/middie-8.3.0.tgz#1325e9e4373c98d69366d1e38211337dee1b9ccd"
- integrity sha512-h+zBxCzMlkEkh4fM7pZaSGzqS7P9M0Z6rXnWPdUEPfe7x1BCj++wEk/pQ5jpyYY4pF8AknFqb77n7uwh8HdxEA==
+"@fastify/merge-json-schemas@^0.2.0":
+ version "0.2.1"
+ resolved "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.2.1.tgz"
+ integrity sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==
+ dependencies:
+ dequal "^2.0.3"
+
+"@fastify/middie@9.0.3":
+ version "9.0.3"
+ resolved "https://registry.npmjs.org/@fastify/middie/-/middie-9.0.3.tgz"
+ integrity sha512-7OYovKXp9UKYeVMcjcFLMcSpoMkmcZmfnG+eAvtdiatN35W7c+r9y1dRfpA+pfFVNuHGGqI3W+vDTmjvcfLcMA==
dependencies:
- "@fastify/error" "^3.2.0"
- fastify-plugin "^4.0.0"
- path-to-regexp "^6.1.0"
+ "@fastify/error" "^4.0.0"
+ fastify-plugin "^5.0.0"
+ path-to-regexp "^8.1.0"
reusify "^1.0.4"
+"@fastify/proxy-addr@^5.0.0":
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/@fastify/proxy-addr/-/proxy-addr-5.0.0.tgz"
+ integrity sha512-37qVVA1qZ5sgH7KpHkkC4z9SK6StIsIcOmpjvMPXNb3vx2GQxhZocogVYbr2PbbeLCQxYIPDok307xEvRZOzGA==
+ dependencies:
+ "@fastify/forwarded" "^3.0.0"
+ ipaddr.js "^2.1.0"
+
+"@fastify/send@^4.0.0":
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/@fastify/send/-/send-4.1.0.tgz"
+ integrity sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==
+ dependencies:
+ "@lukeed/ms" "^2.0.2"
+ escape-html "~1.0.3"
+ fast-decode-uri-component "^1.0.1"
+ http-errors "^2.0.0"
+ mime "^3"
+
+"@fastify/static@^8.0.0":
+ version "8.2.0"
+ resolved "https://registry.npmjs.org/@fastify/static/-/static-8.2.0.tgz"
+ integrity sha512-PejC/DtT7p1yo3p+W7LiUtLMsV8fEvxAK15sozHy9t8kwo5r0uLYmhV/inURmGz1SkHZFz/8CNtHLPyhKcx4SQ==
+ dependencies:
+ "@fastify/accept-negotiator" "^2.0.0"
+ "@fastify/send" "^4.0.0"
+ content-disposition "^0.5.4"
+ fastify-plugin "^5.0.0"
+ fastq "^1.17.1"
+ glob "^11.0.0"
+
+"@fastify/swagger-ui@^5.2.3":
+ version "5.2.3"
+ resolved "https://registry.npmjs.org/@fastify/swagger-ui/-/swagger-ui-5.2.3.tgz"
+ integrity sha512-e7ivEJi9EpFcxTONqICx4llbpB2jmlI+LI1NQ/mR7QGQnyDOqZybPK572zJtcdHZW4YyYTBHcP3a03f1pOh0SA==
+ dependencies:
+ "@fastify/static" "^8.0.0"
+ fastify-plugin "^5.0.0"
+ openapi-types "^12.1.3"
+ rfdc "^1.3.1"
+ yaml "^2.4.1"
+
+"@fastify/swagger@^9.5.1":
+ version "9.5.1"
+ resolved "https://registry.npmjs.org/@fastify/swagger/-/swagger-9.5.1.tgz"
+ integrity sha512-EGjYLA7vDmCPK7XViAYMF6y4+K3XUy5soVTVxsyXolNe/Svb4nFQxvtuQvvoQb2Gzc9pxiF3+ZQN/iZDHhKtTg==
+ dependencies:
+ fastify-plugin "^5.0.0"
+ json-schema-resolver "^3.0.0"
+ openapi-types "^12.1.3"
+ rfdc "^1.3.1"
+ yaml "^2.4.2"
+
"@grpc/grpc-js@^1.8.13":
- version "1.10.1"
- resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.10.1.tgz#be450560c990c08274bc19d514e181ea205ccaa8"
- integrity sha512-55ONqFytZExfOIjF1RjXPcVmT/jJqFzbbDqxK9jmRV4nxiYWtL9hENSW1Jfx0SdZfrvoqd44YJ/GJTqfRrawSQ==
+ version "1.13.4"
+ resolved "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.13.4.tgz"
+ integrity sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==
dependencies:
- "@grpc/proto-loader" "^0.7.8"
- "@types/node" ">=12.12.47"
+ "@grpc/proto-loader" "^0.7.13"
+ "@js-sdsl/ordered-map" "^4.4.2"
-"@grpc/proto-loader@^0.7.8":
- version "0.7.10"
- resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.10.tgz#6bf26742b1b54d0a473067743da5d3189d06d720"
- integrity sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==
+"@grpc/proto-loader@^0.7.13":
+ version "0.7.15"
+ resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz"
+ integrity sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==
dependencies:
lodash.camelcase "^4.3.0"
long "^5.0.0"
- protobufjs "^7.2.4"
+ protobufjs "^7.2.5"
yargs "^17.7.2"
"@humanwhocodes/config-array@^0.11.14":
version "0.11.14"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b"
+ resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz"
integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==
dependencies:
"@humanwhocodes/object-schema" "^2.0.2"
@@ -1386,17 +564,189 @@
"@humanwhocodes/module-importer@^1.0.1":
version "1.0.1"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
+ resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz"
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
"@humanwhocodes/object-schema@^2.0.2":
version "2.0.2"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917"
+ resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz"
integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==
+"@inquirer/checkbox@^4.1.2", "@inquirer/checkbox@^4.1.5":
+ version "4.1.8"
+ resolved "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.8.tgz"
+ integrity sha512-d/QAsnwuHX2OPolxvYcgSj7A9DO9H6gVOy2DvBTx+P2LH2iRTo/RSGV3iwCzW024nP9hw98KIuDmdyhZQj1UQg==
+ dependencies:
+ "@inquirer/core" "^10.1.13"
+ "@inquirer/figures" "^1.0.12"
+ "@inquirer/type" "^3.0.7"
+ ansi-escapes "^4.3.2"
+ yoctocolors-cjs "^2.1.2"
+
+"@inquirer/confirm@^5.1.6", "@inquirer/confirm@^5.1.9":
+ version "5.1.12"
+ resolved "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.12.tgz"
+ integrity sha512-dpq+ielV9/bqgXRUbNH//KsY6WEw9DrGPmipkpmgC1Y46cwuBTNx7PXFWTjc3MQ+urcc0QxoVHcMI0FW4Ok0hg==
+ dependencies:
+ "@inquirer/core" "^10.1.13"
+ "@inquirer/type" "^3.0.7"
+
+"@inquirer/core@^10.1.13":
+ version "10.1.13"
+ resolved "https://registry.npmjs.org/@inquirer/core/-/core-10.1.13.tgz"
+ integrity sha512-1viSxebkYN2nJULlzCxES6G9/stgHSepZ9LqqfdIGPHj5OHhiBUXVS0a6R0bEC2A+VL4D9w6QB66ebCr6HGllA==
+ dependencies:
+ "@inquirer/figures" "^1.0.12"
+ "@inquirer/type" "^3.0.7"
+ ansi-escapes "^4.3.2"
+ cli-width "^4.1.0"
+ mute-stream "^2.0.0"
+ signal-exit "^4.1.0"
+ wrap-ansi "^6.2.0"
+ yoctocolors-cjs "^2.1.2"
+
+"@inquirer/editor@^4.2.10", "@inquirer/editor@^4.2.7":
+ version "4.2.13"
+ resolved "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.13.tgz"
+ integrity sha512-WbicD9SUQt/K8O5Vyk9iC2ojq5RHoCLK6itpp2fHsWe44VxxcA9z3GTWlvjSTGmMQpZr+lbVmrxdHcumJoLbMA==
+ dependencies:
+ "@inquirer/core" "^10.1.13"
+ "@inquirer/type" "^3.0.7"
+ external-editor "^3.1.0"
+
+"@inquirer/expand@^4.0.12", "@inquirer/expand@^4.0.9":
+ version "4.0.15"
+ resolved "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.15.tgz"
+ integrity sha512-4Y+pbr/U9Qcvf+N/goHzPEXiHH8680lM3Dr3Y9h9FFw4gHS+zVpbj8LfbKWIb/jayIB4aSO4pWiBTrBYWkvi5A==
+ dependencies:
+ "@inquirer/core" "^10.1.13"
+ "@inquirer/type" "^3.0.7"
+ yoctocolors-cjs "^2.1.2"
+
+"@inquirer/figures@^1.0.12":
+ version "1.0.12"
+ resolved "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.12.tgz"
+ integrity sha512-MJttijd8rMFcKJC8NYmprWr6hD3r9Gd9qUC0XwPNwoEPWSMVJwA2MlXxF+nhZZNMY+HXsWa+o7KY2emWYIn0jQ==
+
+"@inquirer/input@^4.1.6", "@inquirer/input@^4.1.9":
+ version "4.1.12"
+ resolved "https://registry.npmjs.org/@inquirer/input/-/input-4.1.12.tgz"
+ integrity sha512-xJ6PFZpDjC+tC1P8ImGprgcsrzQRsUh9aH3IZixm1lAZFK49UGHxM3ltFfuInN2kPYNfyoPRh+tU4ftsjPLKqQ==
+ dependencies:
+ "@inquirer/core" "^10.1.13"
+ "@inquirer/type" "^3.0.7"
+
+"@inquirer/number@^3.0.12", "@inquirer/number@^3.0.9":
+ version "3.0.15"
+ resolved "https://registry.npmjs.org/@inquirer/number/-/number-3.0.15.tgz"
+ integrity sha512-xWg+iYfqdhRiM55MvqiTCleHzszpoigUpN5+t1OMcRkJrUrw7va3AzXaxvS+Ak7Gny0j2mFSTv2JJj8sMtbV2g==
+ dependencies:
+ "@inquirer/core" "^10.1.13"
+ "@inquirer/type" "^3.0.7"
+
+"@inquirer/password@^4.0.12", "@inquirer/password@^4.0.9":
+ version "4.0.15"
+ resolved "https://registry.npmjs.org/@inquirer/password/-/password-4.0.15.tgz"
+ integrity sha512-75CT2p43DGEnfGTaqFpbDC2p2EEMrq0S+IRrf9iJvYreMy5mAWj087+mdKyLHapUEPLjN10mNvABpGbk8Wdraw==
+ dependencies:
+ "@inquirer/core" "^10.1.13"
+ "@inquirer/type" "^3.0.7"
+ ansi-escapes "^4.3.2"
+
+"@inquirer/prompts@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz"
+ integrity sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==
+ dependencies:
+ "@inquirer/checkbox" "^4.1.2"
+ "@inquirer/confirm" "^5.1.6"
+ "@inquirer/editor" "^4.2.7"
+ "@inquirer/expand" "^4.0.9"
+ "@inquirer/input" "^4.1.6"
+ "@inquirer/number" "^3.0.9"
+ "@inquirer/password" "^4.0.9"
+ "@inquirer/rawlist" "^4.0.9"
+ "@inquirer/search" "^3.0.9"
+ "@inquirer/select" "^4.0.9"
+
+"@inquirer/prompts@7.4.1":
+ version "7.4.1"
+ resolved "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.4.1.tgz"
+ integrity sha512-UlmM5FVOZF0gpoe1PT/jN4vk8JmpIWBlMvTL8M+hlvPmzN89K6z03+IFmyeu/oFCenwdwHDr2gky7nIGSEVvlA==
+ dependencies:
+ "@inquirer/checkbox" "^4.1.5"
+ "@inquirer/confirm" "^5.1.9"
+ "@inquirer/editor" "^4.2.10"
+ "@inquirer/expand" "^4.0.12"
+ "@inquirer/input" "^4.1.9"
+ "@inquirer/number" "^3.0.12"
+ "@inquirer/password" "^4.0.12"
+ "@inquirer/rawlist" "^4.0.12"
+ "@inquirer/search" "^3.0.12"
+ "@inquirer/select" "^4.1.1"
+
+"@inquirer/rawlist@^4.0.12", "@inquirer/rawlist@^4.0.9":
+ version "4.1.3"
+ resolved "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.3.tgz"
+ integrity sha512-7XrV//6kwYumNDSsvJIPeAqa8+p7GJh7H5kRuxirct2cgOcSWwwNGoXDRgpNFbY/MG2vQ4ccIWCi8+IXXyFMZA==
+ dependencies:
+ "@inquirer/core" "^10.1.13"
+ "@inquirer/type" "^3.0.7"
+ yoctocolors-cjs "^2.1.2"
+
+"@inquirer/search@^3.0.12", "@inquirer/search@^3.0.9":
+ version "3.0.15"
+ resolved "https://registry.npmjs.org/@inquirer/search/-/search-3.0.15.tgz"
+ integrity sha512-YBMwPxYBrADqyvP4nNItpwkBnGGglAvCLVW8u4pRmmvOsHUtCAUIMbUrLX5B3tFL1/WsLGdQ2HNzkqswMs5Uaw==
+ dependencies:
+ "@inquirer/core" "^10.1.13"
+ "@inquirer/figures" "^1.0.12"
+ "@inquirer/type" "^3.0.7"
+ yoctocolors-cjs "^2.1.2"
+
+"@inquirer/select@^4.0.9", "@inquirer/select@^4.1.1":
+ version "4.2.3"
+ resolved "https://registry.npmjs.org/@inquirer/select/-/select-4.2.3.tgz"
+ integrity sha512-OAGhXU0Cvh0PhLz9xTF/kx6g6x+sP+PcyTiLvCrewI99P3BBeexD+VbuwkNDvqGkk3y2h5ZiWLeRP7BFlhkUDg==
+ dependencies:
+ "@inquirer/core" "^10.1.13"
+ "@inquirer/figures" "^1.0.12"
+ "@inquirer/type" "^3.0.7"
+ ansi-escapes "^4.3.2"
+ yoctocolors-cjs "^2.1.2"
+
+"@inquirer/type@^3.0.7":
+ version "3.0.7"
+ resolved "https://registry.npmjs.org/@inquirer/type/-/type-3.0.7.tgz"
+ integrity sha512-PfunHQcjwnju84L+ycmcMKB/pTPIngjUJvfnRhKY6FKPuYXlM4aQCb/nIdTFR6BEhMjFvngzvng/vBAJMZpLSA==
+
+"@isaacs/balanced-match@^4.0.1":
+ version "4.0.1"
+ resolved "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz"
+ integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==
+
+"@isaacs/brace-expansion@^5.0.0":
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz"
+ integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==
+ dependencies:
+ "@isaacs/balanced-match" "^4.0.1"
+
+"@isaacs/cliui@^8.0.2":
+ version "8.0.2"
+ resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz"
+ integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
+ dependencies:
+ string-width "^5.1.2"
+ string-width-cjs "npm:string-width@^4.2.0"
+ strip-ansi "^7.0.1"
+ strip-ansi-cjs "npm:strip-ansi@^6.0.1"
+ wrap-ansi "^8.1.0"
+ wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
+
"@istanbuljs/load-nyc-config@^1.0.0":
version "1.1.0"
- resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
+ resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz"
integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==
dependencies:
camelcase "^5.3.1"
@@ -1407,12 +757,12 @@
"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3":
version "0.1.3"
- resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
+ resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz"
integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
"@jest/console@^29.7.0":
version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc"
+ resolved "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz"
integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==
dependencies:
"@jest/types" "^29.6.3"
@@ -1424,7 +774,7 @@
"@jest/core@^29.7.0":
version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f"
+ resolved "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz"
integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==
dependencies:
"@jest/console" "^29.7.0"
@@ -1458,7 +808,7 @@
"@jest/environment@^29.7.0":
version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7"
+ resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz"
integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==
dependencies:
"@jest/fake-timers" "^29.7.0"
@@ -1466,23 +816,16 @@
"@types/node" "*"
jest-mock "^29.7.0"
-"@jest/expect-utils@^29.5.0":
- version "29.5.0"
- resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.5.0.tgz#f74fad6b6e20f924582dc8ecbf2cb800fe43a036"
- integrity sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==
- dependencies:
- jest-get-type "^29.4.3"
-
"@jest/expect-utils@^29.7.0":
version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6"
+ resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz"
integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==
dependencies:
jest-get-type "^29.6.3"
"@jest/expect@^29.7.0":
version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2"
+ resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz"
integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==
dependencies:
expect "^29.7.0"
@@ -1490,7 +833,7 @@
"@jest/fake-timers@^29.7.0":
version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565"
+ resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz"
integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==
dependencies:
"@jest/types" "^29.6.3"
@@ -1502,7 +845,7 @@
"@jest/globals@^29.7.0":
version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d"
+ resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz"
integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==
dependencies:
"@jest/environment" "^29.7.0"
@@ -1512,7 +855,7 @@
"@jest/reporters@^29.7.0":
version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7"
+ resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz"
integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==
dependencies:
"@bcoe/v8-coverage" "^0.2.3"
@@ -1540,23 +883,16 @@
strip-ansi "^6.0.0"
v8-to-istanbul "^9.0.1"
-"@jest/schemas@^29.4.3":
- version "29.4.3"
- resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788"
- integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==
- dependencies:
- "@sinclair/typebox" "^0.25.16"
-
"@jest/schemas@^29.6.3":
version "29.6.3"
- resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03"
+ resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz"
integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==
dependencies:
"@sinclair/typebox" "^0.27.8"
"@jest/source-map@^29.6.3":
version "29.6.3"
- resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4"
+ resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz"
integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==
dependencies:
"@jridgewell/trace-mapping" "^0.3.18"
@@ -1565,7 +901,7 @@
"@jest/test-result@^29.7.0":
version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c"
+ resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz"
integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==
dependencies:
"@jest/console" "^29.7.0"
@@ -1575,7 +911,7 @@
"@jest/test-sequencer@^29.7.0":
version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce"
+ resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz"
integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==
dependencies:
"@jest/test-result" "^29.7.0"
@@ -1585,7 +921,7 @@
"@jest/transform@^29.7.0":
version "29.7.0"
- resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c"
+ resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz"
integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==
dependencies:
"@babel/core" "^7.11.6"
@@ -1604,21 +940,9 @@
slash "^3.0.0"
write-file-atomic "^4.0.2"
-"@jest/types@^29.5.0":
- version "29.5.0"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593"
- integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==
- dependencies:
- "@jest/schemas" "^29.4.3"
- "@types/istanbul-lib-coverage" "^2.0.0"
- "@types/istanbul-reports" "^3.0.0"
- "@types/node" "*"
- "@types/yargs" "^17.0.8"
- chalk "^4.0.0"
-
"@jest/types@^29.6.3":
version "29.6.3"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59"
+ resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz"
integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==
dependencies:
"@jest/schemas" "^29.6.3"
@@ -1630,95 +954,78 @@
"@jridgewell/gen-mapping@^0.1.0":
version "0.1.1"
- resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996"
+ resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz"
integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==
dependencies:
"@jridgewell/set-array" "^1.0.0"
"@jridgewell/sourcemap-codec" "^1.4.10"
-"@jridgewell/gen-mapping@^0.3.0":
- version "0.3.3"
- resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098"
- integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
+"@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5":
+ version "0.3.8"
+ resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz"
+ integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==
dependencies:
- "@jridgewell/set-array" "^1.0.1"
+ "@jridgewell/set-array" "^1.2.1"
"@jridgewell/sourcemap-codec" "^1.4.10"
- "@jridgewell/trace-mapping" "^0.3.9"
-
-"@jridgewell/gen-mapping@^0.3.2":
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
- integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
- dependencies:
- "@jridgewell/set-array" "^1.0.1"
- "@jridgewell/sourcemap-codec" "^1.4.10"
- "@jridgewell/trace-mapping" "^0.3.9"
-
-"@jridgewell/resolve-uri@3.1.0":
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
- integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
+ "@jridgewell/trace-mapping" "^0.3.24"
"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0":
version "3.1.2"
- resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
+ resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz"
integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
-"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
- integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
+"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz"
+ integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
"@jridgewell/source-map@^0.3.3":
- version "0.3.5"
- resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91"
- integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==
+ version "0.3.6"
+ resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz"
+ integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==
dependencies:
- "@jridgewell/gen-mapping" "^0.3.0"
- "@jridgewell/trace-mapping" "^0.3.9"
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.25"
-"@jridgewell/sourcemap-codec@1.4.14":
- version "1.4.14"
- resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
- integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
-
-"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14":
- version "1.4.15"
- resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
- integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0":
+ version "1.5.0"
+ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz"
+ integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
"@jridgewell/trace-mapping@0.3.9":
version "0.3.9"
- resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
+ resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz"
integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
dependencies:
"@jridgewell/resolve-uri" "^3.0.3"
"@jridgewell/sourcemap-codec" "^1.4.10"
-"@jridgewell/trace-mapping@^0.3.12":
- version "0.3.17"
- resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985"
- integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==
- dependencies:
- "@jridgewell/resolve-uri" "3.1.0"
- "@jridgewell/sourcemap-codec" "1.4.14"
-
-"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.9":
- version "0.3.23"
- resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.23.tgz#afc96847f3f07841477f303eed687707a5aacd80"
- integrity sha512-9/4foRoUKp8s96tSkh8DlAAc5A0Ty8vLXld+l9gjKKY6ckwI8G15f0hskGmuLZu78ZlGa1vtsfOa+lnB4vG6Jg==
+"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9":
+ version "0.3.25"
+ resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz"
+ integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
dependencies:
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
+"@js-sdsl/ordered-map@^4.4.2":
+ version "4.4.2"
+ resolved "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz"
+ integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==
+
"@lukeed/csprng@^1.0.0":
version "1.1.0"
- resolved "https://registry.yarnpkg.com/@lukeed/csprng/-/csprng-1.1.0.tgz#1e3e4bd05c1cc7a0b2ddbd8a03f39f6e4b5e6cfe"
+ resolved "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz"
integrity sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==
-"@mapbox/node-pre-gyp@^1.0.10", "@mapbox/node-pre-gyp@^1.0.5":
+"@lukeed/ms@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/@lukeed/ms/-/ms-2.0.2.tgz"
+ integrity sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==
+
+"@mapbox/node-pre-gyp@^1.0.5":
version "1.0.10"
- resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz#8e6735ccebbb1581e5a7e652244cadc8a844d03c"
+ resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz"
integrity sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==
dependencies:
detect-libc "^2.0.0"
@@ -1731,135 +1038,160 @@
semver "^7.3.5"
tar "^6.1.11"
+"@microsoft/tsdoc@0.15.1":
+ version "0.15.1"
+ resolved "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz"
+ integrity sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==
+
"@mongodb-js/saslprep@^1.1.0":
version "1.1.4"
- resolved "https://registry.yarnpkg.com/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz#24ec1c4915a65f5c506bb88c081731450d91bb1c"
+ resolved "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz"
integrity sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==
dependencies:
sparse-bitfield "^3.0.3"
-"@nestjs/cli@^9.0.0":
- version "9.5.0"
- resolved "https://registry.yarnpkg.com/@nestjs/cli/-/cli-9.5.0.tgz#ddf1b0e21b5507c151e0cd1a4cfcf6c55df7cb2e"
- integrity sha512-Z7q+3vNsQSG2d2r2Hl/OOj5EpfjVx3OfnJ9+KuAsOdw1sKLm7+Zc6KbhMFTd/eIvfx82ww3Nk72xdmfPYCulWA==
- dependencies:
- "@angular-devkit/core" "16.0.1"
- "@angular-devkit/schematics" "16.0.1"
- "@angular-devkit/schematics-cli" "16.0.1"
- "@nestjs/schematics" "^9.0.4"
- chalk "4.1.2"
- chokidar "3.5.3"
- cli-table3 "0.6.3"
+"@nestjs/cli@^11.0.7":
+ version "11.0.7"
+ resolved "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.7.tgz"
+ integrity sha512-svrP8j1R0/lQVJ8ZI3BlDtuZxmkvVJokUJSB04sr6uibunk2wHeVDDVLZvYBUorCdGU/RHJl1IufhqUBM91vAQ==
+ dependencies:
+ "@angular-devkit/core" "19.2.8"
+ "@angular-devkit/schematics" "19.2.8"
+ "@angular-devkit/schematics-cli" "19.2.8"
+ "@inquirer/prompts" "7.4.1"
+ "@nestjs/schematics" "^11.0.1"
+ ansis "3.17.0"
+ chokidar "4.0.3"
+ cli-table3 "0.6.5"
commander "4.1.1"
- fork-ts-checker-webpack-plugin "8.0.0"
- inquirer "8.2.5"
+ fork-ts-checker-webpack-plugin "9.1.0"
+ glob "11.0.1"
node-emoji "1.11.0"
ora "5.4.1"
- os-name "4.0.1"
- rimraf "4.4.1"
- shelljs "0.8.5"
- source-map-support "0.5.21"
tree-kill "1.2.2"
tsconfig-paths "4.2.0"
- tsconfig-paths-webpack-plugin "4.0.1"
- typescript "4.9.5"
- webpack "5.82.1"
+ tsconfig-paths-webpack-plugin "4.2.0"
+ typescript "5.8.3"
+ webpack "5.99.6"
webpack-node-externals "3.0.0"
-"@nestjs/common@^9.0.0":
- version "9.4.0"
- resolved "https://registry.yarnpkg.com/@nestjs/common/-/common-9.4.0.tgz#3597e4f3a1278486fc2e015c94e58bcbbb4f72ca"
- integrity sha512-RUcVAQsEF4WPrmzFXEOUfZnPwrLTe1UVlzXTlSyfqfqbdWDPKDGlIPVelBLfc5/+RRUQ0I5iE4+CQvpCmkqldw==
- dependencies:
- uid "2.0.2"
- iterare "1.2.1"
- tslib "2.5.0"
-
-"@nestjs/common@^9.4.0":
- version "9.4.3"
- resolved "https://registry.yarnpkg.com/@nestjs/common/-/common-9.4.3.tgz#f907c5315b4273f7675864a05c4dda7056632b87"
- integrity sha512-Gd6D4IaYj01o14Bwv81ukidn4w3bPHCblMUq+SmUmWLyosK+XQmInCS09SbDDZyL8jy86PngtBLTdhJ2bXSUig==
+"@nestjs/common@^11.1.3":
+ version "11.1.3"
+ resolved "https://registry.npmjs.org/@nestjs/common/-/common-11.1.3.tgz"
+ integrity sha512-ogEK+GriWodIwCw6buQ1rpcH4Kx+G7YQ9EwuPySI3rS05pSdtQ++UhucjusSI9apNidv+QURBztJkRecwwJQXg==
dependencies:
uid "2.0.2"
+ file-type "21.0.0"
iterare "1.2.1"
- tslib "2.5.3"
+ load-esm "1.0.2"
+ tslib "2.8.1"
-"@nestjs/config@^2.3.1":
- version "2.3.4"
- resolved "https://registry.yarnpkg.com/@nestjs/config/-/config-2.3.4.tgz#6378a3c5b163a429e9ba728f28eed7513855bd50"
- integrity sha512-IGdSF+0F9MJO6dCRTEahdxPz4iVijjtolcFBxnY+2QYM3bXYQvAgzskGZi+WkAFJN/VzR3TEp60gN5sI74GxPA==
+"@nestjs/config@^4.0.2":
+ version "4.0.2"
+ resolved "https://registry.npmjs.org/@nestjs/config/-/config-4.0.2.tgz"
+ integrity sha512-McMW6EXtpc8+CwTUwFdg6h7dYcBUpH5iUILCclAsa+MbCEvC9ZKu4dCHRlJqALuhjLw97pbQu62l4+wRwGeZqA==
dependencies:
- dotenv "16.1.4"
- dotenv-expand "10.0.0"
+ dotenv "16.4.7"
+ dotenv-expand "12.0.1"
lodash "4.17.21"
- uuid "9.0.0"
-"@nestjs/core@^9.0.0":
- version "9.4.3"
- resolved "https://registry.yarnpkg.com/@nestjs/core/-/core-9.4.3.tgz#7d6d3417e18c0a598684b87c955e4caac4f56dd4"
- integrity sha512-Qi63+wi55Jh4sDyaj5Hhx2jOpKqT386aeo+VOKsxnd+Ql9VvkO/FjmuwBGUyzkJt29ENYc+P0Sx/k5LtstNpPQ==
+"@nestjs/core@^11.1.3":
+ version "11.1.3"
+ resolved "https://registry.npmjs.org/@nestjs/core/-/core-11.1.3.tgz"
+ integrity sha512-5lTni0TCh8x7bXETRD57pQFnKnEg1T6M+VLE7wAmyQRIecKQU+2inRGZD+A4v2DC1I04eA0WffP0GKLxjOKlzw==
dependencies:
uid "2.0.2"
- "@nuxtjs/opencollective" "0.3.2"
+ "@nuxt/opencollective" "0.4.1"
fast-safe-stringify "2.1.1"
iterare "1.2.1"
- path-to-regexp "3.2.0"
- tslib "2.5.3"
+ path-to-regexp "8.2.0"
+ tslib "2.8.1"
-"@nestjs/jwt@^10.0.2":
- version "10.0.3"
- resolved "https://registry.yarnpkg.com/@nestjs/jwt/-/jwt-10.0.3.tgz#e74e992cde99df266616c8bedf2404898eec4819"
- integrity sha512-WO8MI3uEMOFKpbO+SAg6l4aRCr+9KvaL+raFMZaXuEUDphXek6pqdox+4tex9242pNSJUA0trfAMaiy/yVrXQg==
+"@nestjs/event-emitter@^3.0.1":
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/@nestjs/event-emitter/-/event-emitter-3.0.1.tgz"
+ integrity sha512-0Ln/x+7xkU6AJFOcQI9tIhUMXVF7D5itiaQGOyJbXtlAfAIt8gzDdJm+Im7cFzKoWkiW5nCXCPh6GSvdQd/3Dw==
+ dependencies:
+ eventemitter2 "6.4.9"
+
+"@nestjs/jwt@^11.0.0":
+ version "11.0.0"
+ resolved "https://registry.npmjs.org/@nestjs/jwt/-/jwt-11.0.0.tgz"
+ integrity sha512-v7YRsW3Xi8HNTsO+jeHSEEqelX37TVWgwt+BcxtkG/OfXJEOs6GZdbdza200d6KqId1pJQZ6UPj1F0M6E+mxaA==
dependencies:
- "@types/jsonwebtoken" "9.0.1"
- jsonwebtoken "9.0.0"
+ "@types/jsonwebtoken" "9.0.7"
+ jsonwebtoken "9.0.2"
+
+"@nestjs/mapped-types@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.1.0.tgz"
+ integrity sha512-W+n+rM69XsFdwORF11UqJahn4J3xi4g/ZEOlJNL6KoW5ygWSmBB2p0S2BZ4FQeS/NDH72e6xIcu35SfJnE8bXw==
-"@nestjs/microservices@^9.3.10":
- version "9.4.3"
- resolved "https://registry.yarnpkg.com/@nestjs/microservices/-/microservices-9.4.3.tgz#3587184ef65e9943e7506c02a87e137871088f4f"
- integrity sha512-piMw8d3C4ppc5St5AhQEtecMhyeBK2Q1VYk4AL3NKtG6U0fzz/6KLiETpWdKXmazeI/m7qac2upOvwmRzle0aA==
+"@nestjs/microservices@^11.1.3":
+ version "11.1.3"
+ resolved "https://registry.npmjs.org/@nestjs/microservices/-/microservices-11.1.3.tgz"
+ integrity sha512-Uzb3WKcCCF9m/KnQGAaOx3WPX3Hkh9KnRml2a8Tb0/Av7K9S2n9/f96NGmqTfe9UXu+nHHLVi9dNDWbTPU06Rw==
dependencies:
iterare "1.2.1"
- tslib "2.5.3"
-
-"@nestjs/passport@^9.0.3":
- version "9.0.3"
- resolved "https://registry.yarnpkg.com/@nestjs/passport/-/passport-9.0.3.tgz#4df0e6de3176e04a5770cb432e58f129c8e49f9e"
- integrity sha512-HplSJaimEAz1IOZEu+pdJHHJhQyBOPAYWXYHfAPQvRqWtw4FJF1VXl1Qtk9dcXQX1eKytDtH+qBzNQc19GWNEg==
-
-"@nestjs/platform-fastify@^9.4.0":
- version "9.4.3"
- resolved "https://registry.yarnpkg.com/@nestjs/platform-fastify/-/platform-fastify-9.4.3.tgz#806a8aef61034b9eb444a5c0b940cc17b40256d6"
- integrity sha512-FgJyYpZQn97oaarzGKTwcKkrRZs9tv2OdwO0/roO0l/ytnG7eigc7Y3Hv/bDcxl2LngAhY3uXMAg3MMueWojsA==
- dependencies:
- "@fastify/cors" "8.3.0"
- "@fastify/formbody" "7.4.0"
- "@fastify/middie" "8.3.0"
- fastify "4.18.0"
- light-my-request "5.9.1"
- path-to-regexp "3.2.0"
- tslib "2.5.3"
-
-"@nestjs/schematics@^9.0.0", "@nestjs/schematics@^9.0.4":
- version "9.2.0"
- resolved "https://registry.yarnpkg.com/@nestjs/schematics/-/schematics-9.2.0.tgz#f840054b5ae4b0b4e70aa9f72c09c3cf388f2512"
- integrity sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw==
- dependencies:
- "@angular-devkit/core" "16.0.1"
- "@angular-devkit/schematics" "16.0.1"
- jsonc-parser "3.2.0"
+ tslib "2.8.1"
+
+"@nestjs/passport@^11.0.5":
+ version "11.0.5"
+ resolved "https://registry.npmjs.org/@nestjs/passport/-/passport-11.0.5.tgz"
+ integrity sha512-ulQX6mbjlws92PIM15Naes4F4p2JoxGnIJuUsdXQPT+Oo2sqQmENEZXM7eYuimocfHnKlcfZOuyzbA33LwUlOQ==
+
+"@nestjs/platform-fastify@^11.1.3":
+ version "11.1.3"
+ resolved "https://registry.npmjs.org/@nestjs/platform-fastify/-/platform-fastify-11.1.3.tgz"
+ integrity sha512-SMIjGV6eAxQv6+/2OumIdNivVLebql6THWjXv8Uh4dR1CI6ipp3gMbpoiYbHP7AGXv8pzuGmpakli86VP9P8NQ==
+ dependencies:
+ "@fastify/cors" "11.0.1"
+ "@fastify/formbody" "8.0.2"
+ "@fastify/middie" "9.0.3"
+ fast-querystring "1.1.2"
+ fastify "5.3.3"
+ light-my-request "6.6.0"
+ path-to-regexp "8.2.0"
+ tslib "2.8.1"
+
+"@nestjs/schematics@^11.0.1", "@nestjs/schematics@^11.0.5":
+ version "11.0.5"
+ resolved "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.5.tgz"
+ integrity sha512-T50SCNyqCZ/fDssaOD7meBKLZ87ebRLaJqZTJPvJKjlib1VYhMOCwXYsr7bjMPmuPgiQHOwvppz77xN/m6GM7A==
+ dependencies:
+ "@angular-devkit/core" "19.2.6"
+ "@angular-devkit/schematics" "19.2.6"
+ comment-json "4.2.5"
+ jsonc-parser "3.3.1"
pluralize "8.0.0"
-"@nestjs/testing@^9.0.0":
- version "9.4.3"
- resolved "https://registry.yarnpkg.com/@nestjs/testing/-/testing-9.4.3.tgz#53ffbabdd38f500b145c30f2fbb76dedad393d79"
- integrity sha512-LDT8Ai2eKnTzvnPaJwWOK03qTaFap5uHHsJCv6dL0uKWk6hyF9jms8DjyVaGsaujCaXDG8izl1mDEER0OmxaZA==
+"@nestjs/swagger@^11.2.0":
+ version "11.2.0"
+ resolved "https://registry.npmjs.org/@nestjs/swagger/-/swagger-11.2.0.tgz"
+ integrity sha512-5wolt8GmpNcrQv34tIPUtPoV1EeFbCetm40Ij3+M0FNNnf2RJ3FyWfuQvI8SBlcJyfaounYVTKzKHreFXsUyOg==
dependencies:
- tslib "2.5.3"
+ "@microsoft/tsdoc" "0.15.1"
+ "@nestjs/mapped-types" "2.1.0"
+ js-yaml "4.1.0"
+ lodash "4.17.21"
+ path-to-regexp "8.2.0"
+ swagger-ui-dist "5.21.0"
+
+"@nestjs/testing@^11.1.3":
+ version "11.1.3"
+ resolved "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.3.tgz"
+ integrity sha512-CeXG6/eEqgFIkPkmU00y18Dd3DLOIDFhPItzJK1SWckKo6IhcnfoRJzGx75bmuvUMjb51j6An96S/+MJ2ty9jA==
+ dependencies:
+ tslib "2.8.1"
+
+"@noble/hashes@^1.1.5":
+ version "1.8.0"
+ resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz"
+ integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
dependencies:
"@nodelib/fs.stat" "2.0.5"
@@ -1867,49 +1199,54 @@
"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
version "2.0.5"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
version "1.2.8"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
dependencies:
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
-"@nuxtjs/opencollective@0.3.2":
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz#620ce1044f7ac77185e825e1936115bb38e2681c"
- integrity sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==
+"@nuxt/opencollective@0.4.1":
+ version "0.4.1"
+ resolved "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz"
+ integrity sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==
dependencies:
- chalk "^4.1.0"
- consola "^2.15.0"
- node-fetch "^2.6.1"
+ consola "^3.2.3"
+
+"@paralleldrive/cuid2@^2.2.2":
+ version "2.2.2"
+ resolved "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz"
+ integrity sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==
+ dependencies:
+ "@noble/hashes" "^1.1.5"
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
version "1.1.2"
- resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
+ resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz"
integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==
"@protobufjs/base64@^1.1.2":
version "1.1.2"
- resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735"
+ resolved "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz"
integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==
"@protobufjs/codegen@^2.0.4":
version "2.0.4"
- resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb"
+ resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz"
integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==
"@protobufjs/eventemitter@^1.1.0":
version "1.1.0"
- resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70"
+ resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz"
integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==
"@protobufjs/fetch@^1.1.0":
version "1.1.0"
- resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45"
+ resolved "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz"
integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==
dependencies:
"@protobufjs/aspromise" "^1.1.1"
@@ -1917,76 +1254,90 @@
"@protobufjs/float@^1.0.2":
version "1.0.2"
- resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1"
+ resolved "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz"
integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==
"@protobufjs/inquire@^1.1.0":
version "1.1.0"
- resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089"
+ resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz"
integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==
"@protobufjs/path@^1.1.2":
version "1.1.2"
- resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d"
+ resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz"
integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==
"@protobufjs/pool@^1.1.0":
version "1.1.0"
- resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54"
+ resolved "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz"
integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==
"@protobufjs/utf8@^1.1.0":
version "1.1.0"
- resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
+ resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz"
integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
-"@sinclair/typebox@^0.25.16":
- version "0.25.24"
- resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718"
- integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==
+"@scarf/scarf@=1.4.0":
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.4.0.tgz"
+ integrity sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==
"@sinclair/typebox@^0.27.8":
version "0.27.8"
- resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
+ resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz"
integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
"@sinonjs/commons@^2.0.0":
version "2.0.0"
- resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3"
+ resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz"
integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==
dependencies:
type-detect "4.0.8"
"@sinonjs/fake-timers@^10.0.2":
version "10.0.2"
- resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz#d10549ed1f423d80639c528b6c7f5a1017747d0c"
+ resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz"
integrity sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==
dependencies:
"@sinonjs/commons" "^2.0.0"
+"@tokenizer/inflate@^0.2.7":
+ version "0.2.7"
+ resolved "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.2.7.tgz"
+ integrity sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==
+ dependencies:
+ debug "^4.4.0"
+ fflate "^0.8.2"
+ token-types "^6.0.0"
+
+"@tokenizer/token@^0.3.0":
+ version "0.3.0"
+ resolved "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz"
+ integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==
+
"@tsconfig/node10@^1.0.7":
version "1.0.9"
- resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2"
+ resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz"
integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==
"@tsconfig/node12@^1.0.7":
version "1.0.11"
- resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d"
+ resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz"
integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==
"@tsconfig/node14@^1.0.0":
version "1.0.3"
- resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1"
+ resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz"
integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==
"@tsconfig/node16@^1.0.2":
version "1.0.4"
- resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9"
+ resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz"
integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==
"@types/babel__core@^7.1.14":
version "7.20.0"
- resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891"
+ resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz"
integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==
dependencies:
"@babel/parser" "^7.20.7"
@@ -1997,14 +1348,14 @@
"@types/babel__generator@*":
version "7.6.4"
- resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7"
+ resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz"
integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==
dependencies:
"@babel/types" "^7.0.0"
"@types/babel__template@*":
version "7.4.1"
- resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969"
+ resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz"
integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==
dependencies:
"@babel/parser" "^7.1.0"
@@ -2012,71 +1363,71 @@
"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
version "7.18.3"
- resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.3.tgz#dfc508a85781e5698d5b33443416b6268c4b3e8d"
+ resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz"
integrity sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==
dependencies:
"@babel/types" "^7.3.0"
"@types/cookiejar@^2.1.5":
version "2.1.5"
- resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.5.tgz#14a3e83fa641beb169a2dd8422d91c3c345a9a78"
+ resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz"
integrity sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==
-"@types/eslint-scope@^3.7.3":
+"@types/eslint-scope@^3.7.7":
version "3.7.7"
- resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5"
+ resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz"
integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==
dependencies:
"@types/eslint" "*"
"@types/estree" "*"
"@types/eslint@*":
- version "8.56.3"
- resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.3.tgz#d1f6b2303ac5ed53cb2cf59e0ab680cde1698f5f"
- integrity sha512-PvSf1wfv2wJpVIFUMSb+i4PvqNYkB9Rkp9ZDO3oaWzq4SKhsQk4mrMBr3ZH06I0hKrVGLBacmgl8JM4WVjb9dg==
+ version "9.6.1"
+ resolved "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz"
+ integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==
dependencies:
"@types/estree" "*"
"@types/json-schema" "*"
-"@types/estree@*", "@types/estree@^1.0.0":
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
- integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
+"@types/estree@*", "@types/estree@^1.0.6":
+ version "1.0.8"
+ resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz"
+ integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
"@types/google-protobuf@^3.15.6":
version "3.15.12"
- resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.12.tgz#eb2ba0eddd65712211a2b455dc6071d665ccf49b"
+ resolved "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.12.tgz"
integrity sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==
"@types/graceful-fs@^4.1.3":
version "4.1.6"
- resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae"
+ resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz"
integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==
dependencies:
"@types/node" "*"
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
version "2.0.4"
- resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44"
+ resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz"
integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==
"@types/istanbul-lib-report@*":
version "3.0.0"
- resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686"
+ resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz"
integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==
dependencies:
"@types/istanbul-lib-coverage" "*"
"@types/istanbul-reports@^3.0.0":
version "3.0.1"
- resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff"
+ resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz"
integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==
dependencies:
"@types/istanbul-lib-report" "*"
"@types/jest@29.5.12":
version "29.5.12"
- resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544"
+ resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz"
integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==
dependencies:
expect "^29.0.0"
@@ -2084,58 +1435,39 @@
"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
version "7.0.15"
- resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
+ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz"
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
-"@types/jsonwebtoken@9.0.1":
- version "9.0.1"
- resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz#29b1369c4774200d6d6f63135bf3d1ba3ef997a4"
- integrity sha512-c5ltxazpWabia/4UzhIoaDcIza4KViOQhdbjRlfcIGVnsE3c3brkz9Z+F/EeJIECOQP7W7US2hNE930cWWkPiw==
- dependencies:
- "@types/node" "*"
-
-"@types/jsonwebtoken@^9.0.1":
- version "9.0.5"
- resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz#0bd9b841c9e6c5a937c17656e2368f65da025588"
- integrity sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==
+"@types/jsonwebtoken@9.0.7", "@types/jsonwebtoken@^9.0.1":
+ version "9.0.7"
+ resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz"
+ integrity sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==
dependencies:
"@types/node" "*"
"@types/methods@^1.1.4":
version "1.1.4"
- resolved "https://registry.yarnpkg.com/@types/methods/-/methods-1.1.4.tgz#d3b7ac30ac47c91054ea951ce9eed07b1051e547"
+ resolved "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz"
integrity sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==
-"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0":
- version "20.11.20"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.20.tgz#f0a2aee575215149a62784210ad88b3a34843659"
- integrity sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==
- dependencies:
- undici-types "~5.26.4"
-
-"@types/node@18.15.11":
+"@types/node@*", "@types/node@18.15.11", "@types/node@>=13.7.0":
version "18.15.11"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f"
+ resolved "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz"
integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==
-"@types/parse-json@^4.0.0":
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239"
- integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==
-
"@types/semver@^7.3.12":
version "7.5.7"
- resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.7.tgz#326f5fdda70d13580777bcaa1bc6fa772a5aef0e"
+ resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.7.tgz"
integrity sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==
"@types/stack-utils@^2.0.0":
version "2.0.1"
- resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
+ resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz"
integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==
"@types/superagent@*":
version "8.1.3"
- resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-8.1.3.tgz#6222a466e89eac9c84ad8de11870d92097e6554a"
+ resolved "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.3.tgz"
integrity sha512-R/CfN6w2XsixLb1Ii8INfn+BT9sGPvw74OavfkW4SwY+jeUcAwLZv2+bXLJkndnimxjEBm0RPHgcjW9pLCa8cw==
dependencies:
"@types/cookiejar" "^2.1.5"
@@ -2144,51 +1476,43 @@
"@types/supertest@^2.0.11":
version "2.0.16"
- resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.16.tgz#7a1294edebecb960d957bbe9b26002a2b7f21cd7"
+ resolved "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.16.tgz"
integrity sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg==
dependencies:
"@types/superagent" "*"
"@types/validator@^13.11.8":
version "13.11.9"
- resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.11.9.tgz#adfe96520b437a0eaa798a475877bf2f75ee402d"
+ resolved "https://registry.npmjs.org/@types/validator/-/validator-13.11.9.tgz"
integrity sha512-FCTsikRozryfayPuiI46QzH3fnrOoctTjvOYZkho9BTFLCOZ2rgZJHMOVgCOfttjPJcgOx52EpkY0CMfy87MIw==
"@types/webidl-conversions@*":
version "7.0.3"
- resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz#1306dbfa53768bcbcfc95a1c8cde367975581859"
+ resolved "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz"
integrity sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==
"@types/whatwg-url@^11.0.2":
version "11.0.4"
- resolved "https://registry.yarnpkg.com/@types/whatwg-url/-/whatwg-url-11.0.4.tgz#ffed0dc8d89d91f62e3f368fcbda222a487c4f63"
+ resolved "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.4.tgz"
integrity sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==
dependencies:
"@types/webidl-conversions" "*"
-"@types/whatwg-url@^8.2.1":
- version "8.2.2"
- resolved "https://registry.yarnpkg.com/@types/whatwg-url/-/whatwg-url-8.2.2.tgz#749d5b3873e845897ada99be4448041d4cc39e63"
- integrity sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==
- dependencies:
- "@types/node" "*"
- "@types/webidl-conversions" "*"
-
"@types/yargs-parser@*":
version "21.0.0"
- resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b"
+ resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz"
integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==
"@types/yargs@^17.0.8":
version "17.0.24"
- resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902"
+ resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz"
integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==
dependencies:
"@types/yargs-parser" "*"
"@typescript-eslint/eslint-plugin@^5.57.1":
version "5.62.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db"
+ resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz"
integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==
dependencies:
"@eslint-community/regexpp" "^4.4.0"
@@ -2204,7 +1528,7 @@
"@typescript-eslint/parser@^5.57.0":
version "5.62.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7"
+ resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz"
integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==
dependencies:
"@typescript-eslint/scope-manager" "5.62.0"
@@ -2214,7 +1538,7 @@
"@typescript-eslint/scope-manager@5.62.0":
version "5.62.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c"
+ resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz"
integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==
dependencies:
"@typescript-eslint/types" "5.62.0"
@@ -2222,7 +1546,7 @@
"@typescript-eslint/type-utils@5.62.0":
version "5.62.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a"
+ resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz"
integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==
dependencies:
"@typescript-eslint/typescript-estree" "5.62.0"
@@ -2232,12 +1556,12 @@
"@typescript-eslint/types@5.62.0":
version "5.62.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f"
+ resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz"
integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==
"@typescript-eslint/typescript-estree@5.62.0":
version "5.62.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b"
+ resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz"
integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==
dependencies:
"@typescript-eslint/types" "5.62.0"
@@ -2250,7 +1574,7 @@
"@typescript-eslint/utils@5.62.0":
version "5.62.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86"
+ resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz"
integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
@@ -2264,7 +1588,7 @@
"@typescript-eslint/visitor-keys@5.62.0":
version "5.62.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e"
+ resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz"
integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==
dependencies:
"@typescript-eslint/types" "5.62.0"
@@ -2272,209 +1596,211 @@
"@ungap/structured-clone@^1.2.0":
version "1.2.0"
- resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
+ resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz"
integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
-"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5":
- version "1.11.6"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24"
- integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==
+"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1":
+ version "1.14.1"
+ resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz"
+ integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==
dependencies:
- "@webassemblyjs/helper-numbers" "1.11.6"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
+ "@webassemblyjs/helper-numbers" "1.13.2"
+ "@webassemblyjs/helper-wasm-bytecode" "1.13.2"
-"@webassemblyjs/floating-point-hex-parser@1.11.6":
- version "1.11.6"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431"
- integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==
+"@webassemblyjs/floating-point-hex-parser@1.13.2":
+ version "1.13.2"
+ resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz"
+ integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==
-"@webassemblyjs/helper-api-error@1.11.6":
- version "1.11.6"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768"
- integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==
+"@webassemblyjs/helper-api-error@1.13.2":
+ version "1.13.2"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz"
+ integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==
-"@webassemblyjs/helper-buffer@1.11.6":
- version "1.11.6"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093"
- integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==
+"@webassemblyjs/helper-buffer@1.14.1":
+ version "1.14.1"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz"
+ integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==
-"@webassemblyjs/helper-numbers@1.11.6":
- version "1.11.6"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5"
- integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==
+"@webassemblyjs/helper-numbers@1.13.2":
+ version "1.13.2"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz"
+ integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==
dependencies:
- "@webassemblyjs/floating-point-hex-parser" "1.11.6"
- "@webassemblyjs/helper-api-error" "1.11.6"
+ "@webassemblyjs/floating-point-hex-parser" "1.13.2"
+ "@webassemblyjs/helper-api-error" "1.13.2"
"@xtuc/long" "4.2.2"
-"@webassemblyjs/helper-wasm-bytecode@1.11.6":
- version "1.11.6"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9"
- integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==
+"@webassemblyjs/helper-wasm-bytecode@1.13.2":
+ version "1.13.2"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz"
+ integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==
-"@webassemblyjs/helper-wasm-section@1.11.6":
- version "1.11.6"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577"
- integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==
+"@webassemblyjs/helper-wasm-section@1.14.1":
+ version "1.14.1"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz"
+ integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==
dependencies:
- "@webassemblyjs/ast" "1.11.6"
- "@webassemblyjs/helper-buffer" "1.11.6"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
- "@webassemblyjs/wasm-gen" "1.11.6"
+ "@webassemblyjs/ast" "1.14.1"
+ "@webassemblyjs/helper-buffer" "1.14.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.13.2"
+ "@webassemblyjs/wasm-gen" "1.14.1"
-"@webassemblyjs/ieee754@1.11.6":
- version "1.11.6"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a"
- integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==
+"@webassemblyjs/ieee754@1.13.2":
+ version "1.13.2"
+ resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz"
+ integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==
dependencies:
"@xtuc/ieee754" "^1.2.0"
-"@webassemblyjs/leb128@1.11.6":
- version "1.11.6"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7"
- integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==
+"@webassemblyjs/leb128@1.13.2":
+ version "1.13.2"
+ resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz"
+ integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==
dependencies:
"@xtuc/long" "4.2.2"
-"@webassemblyjs/utf8@1.11.6":
- version "1.11.6"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a"
- integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==
-
-"@webassemblyjs/wasm-edit@^1.11.5":
- version "1.11.6"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab"
- integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==
- dependencies:
- "@webassemblyjs/ast" "1.11.6"
- "@webassemblyjs/helper-buffer" "1.11.6"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
- "@webassemblyjs/helper-wasm-section" "1.11.6"
- "@webassemblyjs/wasm-gen" "1.11.6"
- "@webassemblyjs/wasm-opt" "1.11.6"
- "@webassemblyjs/wasm-parser" "1.11.6"
- "@webassemblyjs/wast-printer" "1.11.6"
-
-"@webassemblyjs/wasm-gen@1.11.6":
- version "1.11.6"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268"
- integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==
- dependencies:
- "@webassemblyjs/ast" "1.11.6"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
- "@webassemblyjs/ieee754" "1.11.6"
- "@webassemblyjs/leb128" "1.11.6"
- "@webassemblyjs/utf8" "1.11.6"
-
-"@webassemblyjs/wasm-opt@1.11.6":
- version "1.11.6"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2"
- integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==
- dependencies:
- "@webassemblyjs/ast" "1.11.6"
- "@webassemblyjs/helper-buffer" "1.11.6"
- "@webassemblyjs/wasm-gen" "1.11.6"
- "@webassemblyjs/wasm-parser" "1.11.6"
-
-"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5":
- version "1.11.6"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1"
- integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==
- dependencies:
- "@webassemblyjs/ast" "1.11.6"
- "@webassemblyjs/helper-api-error" "1.11.6"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
- "@webassemblyjs/ieee754" "1.11.6"
- "@webassemblyjs/leb128" "1.11.6"
- "@webassemblyjs/utf8" "1.11.6"
-
-"@webassemblyjs/wast-printer@1.11.6":
- version "1.11.6"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20"
- integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==
- dependencies:
- "@webassemblyjs/ast" "1.11.6"
+"@webassemblyjs/utf8@1.13.2":
+ version "1.13.2"
+ resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz"
+ integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==
+
+"@webassemblyjs/wasm-edit@^1.14.1":
+ version "1.14.1"
+ resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz"
+ integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==
+ dependencies:
+ "@webassemblyjs/ast" "1.14.1"
+ "@webassemblyjs/helper-buffer" "1.14.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.13.2"
+ "@webassemblyjs/helper-wasm-section" "1.14.1"
+ "@webassemblyjs/wasm-gen" "1.14.1"
+ "@webassemblyjs/wasm-opt" "1.14.1"
+ "@webassemblyjs/wasm-parser" "1.14.1"
+ "@webassemblyjs/wast-printer" "1.14.1"
+
+"@webassemblyjs/wasm-gen@1.14.1":
+ version "1.14.1"
+ resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz"
+ integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==
+ dependencies:
+ "@webassemblyjs/ast" "1.14.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.13.2"
+ "@webassemblyjs/ieee754" "1.13.2"
+ "@webassemblyjs/leb128" "1.13.2"
+ "@webassemblyjs/utf8" "1.13.2"
+
+"@webassemblyjs/wasm-opt@1.14.1":
+ version "1.14.1"
+ resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz"
+ integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==
+ dependencies:
+ "@webassemblyjs/ast" "1.14.1"
+ "@webassemblyjs/helper-buffer" "1.14.1"
+ "@webassemblyjs/wasm-gen" "1.14.1"
+ "@webassemblyjs/wasm-parser" "1.14.1"
+
+"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1":
+ version "1.14.1"
+ resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz"
+ integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==
+ dependencies:
+ "@webassemblyjs/ast" "1.14.1"
+ "@webassemblyjs/helper-api-error" "1.13.2"
+ "@webassemblyjs/helper-wasm-bytecode" "1.13.2"
+ "@webassemblyjs/ieee754" "1.13.2"
+ "@webassemblyjs/leb128" "1.13.2"
+ "@webassemblyjs/utf8" "1.13.2"
+
+"@webassemblyjs/wast-printer@1.14.1":
+ version "1.14.1"
+ resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz"
+ integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==
+ dependencies:
+ "@webassemblyjs/ast" "1.14.1"
"@xtuc/long" "4.2.2"
"@xtuc/ieee754@^1.2.0":
version "1.2.0"
- resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
+ resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz"
integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
"@xtuc/long@4.2.2":
version "4.2.2"
- resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
+ resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz"
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
abbrev@1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+ resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz"
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-abort-controller@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
- integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
- dependencies:
- event-target-shim "^5.0.0"
-
abstract-logging@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/abstract-logging/-/abstract-logging-2.0.1.tgz#6b0c371df212db7129b57d2e7fcf282b8bf1c839"
+ resolved "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz"
integrity sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==
-acorn-import-assertions@^1.7.6:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac"
- integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==
-
acorn-jsx@^5.3.2:
version "5.3.2"
- resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
+ resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn-walk@^8.1.1:
version "8.3.2"
- resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa"
+ resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz"
integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==
-acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0:
- version "8.11.3"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
- integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
+acorn@^8.14.0, acorn@^8.4.1, acorn@^8.9.0:
+ version "8.15.0"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz"
+ integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
agent-base@6:
version "6.0.2"
- resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
+ resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz"
integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
dependencies:
debug "4"
-ajv-formats@2.1.1, ajv-formats@^2.1.1:
+ajv-formats@3.0.1, ajv-formats@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz"
+ integrity sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==
+ dependencies:
+ ajv "^8.0.0"
+
+ajv-formats@^2.1.1:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
+ resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz"
integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==
dependencies:
ajv "^8.0.0"
ajv-keywords@^3.5.2:
version "3.5.2"
- resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
+ resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
-ajv@8.12.0, ajv@^8.0.0, ajv@^8.10.0, ajv@^8.11.0:
- version "8.12.0"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
- integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
+ajv-keywords@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz"
+ integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==
dependencies:
- fast-deep-equal "^3.1.1"
+ fast-deep-equal "^3.1.3"
+
+ajv@8.17.1, ajv@^8.0.0, ajv@^8.12.0, ajv@^8.9.0:
+ version "8.17.1"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz"
+ integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
+ dependencies:
+ fast-deep-equal "^3.1.3"
+ fast-uri "^3.0.1"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
- uri-js "^4.2.2"
ajv@^6.12.4, ajv@^6.12.5:
version "6.12.6"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
dependencies:
fast-deep-equal "^3.1.1"
@@ -2484,43 +1810,51 @@ ajv@^6.12.4, ajv@^6.12.5:
ansi-colors@4.1.3:
version "4.1.3"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
+ resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz"
integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
-ansi-escapes@^4.2.1:
+ansi-escapes@^4.2.1, ansi-escapes@^4.3.2:
version "4.3.2"
- resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
+ resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz"
integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
dependencies:
type-fest "^0.21.3"
ansi-regex@^5.0.1:
version "5.0.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+ resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
-ansi-styles@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
- integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
- dependencies:
- color-convert "^1.9.0"
+ansi-regex@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz"
+ integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
version "4.3.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
ansi-styles@^5.0.0:
version "5.2.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz"
integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
-anymatch@^3.0.3, anymatch@~3.1.2:
+ansi-styles@^6.1.0:
+ version "6.2.1"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz"
+ integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+
+ansis@3.17.0:
+ version "3.17.0"
+ resolved "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz"
+ integrity sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==
+
+anymatch@^3.0.3:
version "3.1.3"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+ resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz"
integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
dependencies:
normalize-path "^3.0.0"
@@ -2528,17 +1862,12 @@ anymatch@^3.0.3, anymatch@~3.1.2:
"aproba@^1.0.3 || ^2.0.0":
version "2.0.0"
- resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc"
+ resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz"
integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==
-archy@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
- integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==
-
are-we-there-yet@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c"
+ resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz"
integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==
dependencies:
delegates "^1.0.0"
@@ -2546,61 +1875,64 @@ are-we-there-yet@^2.0.0:
arg@^4.1.0:
version "4.1.3"
- resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
+ resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz"
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
argparse@^1.0.7:
version "1.0.10"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz"
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
dependencies:
sprintf-js "~1.0.2"
argparse@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+ resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+array-timsort@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz"
+ integrity sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==
+
array-union@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz"
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
asap@^2.0.0:
version "2.0.6"
- resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
+ resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz"
integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==
-async-mutex@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.4.0.tgz#ae8048cd4d04ace94347507504b3cf15e631c25f"
- integrity sha512-eJFZ1YhRR8UN8eBLoNzcDPcy/jqjsg6I1AP+KvWQX80BqOSW1oJPJXDylPUEeMr2ZQvHgnQ//Lp6f3RQ1zI7HA==
+async-mutex@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz"
+ integrity sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==
dependencies:
tslib "^2.4.0"
asynckit@^0.4.0:
version "0.4.0"
- resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
atomic-sleep@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b"
+ resolved "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz"
integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==
-avvio@^8.2.0, avvio@^8.2.1:
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/avvio/-/avvio-8.3.0.tgz#1e019433d935730b814978a583eefac41a65082f"
- integrity sha512-VBVH0jubFr9LdFASy/vNtm5giTrnbVquWBhT0fyizuNK2rQ7e7ONU2plZQWUNqtE1EmxFEb+kbSkFRkstiaS9Q==
+avvio@^9.0.0:
+ version "9.1.0"
+ resolved "https://registry.npmjs.org/avvio/-/avvio-9.1.0.tgz"
+ integrity sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==
dependencies:
- "@fastify/error" "^3.3.0"
- archy "^1.0.0"
- debug "^4.0.0"
+ "@fastify/error" "^4.0.0"
fastq "^1.17.1"
babel-jest@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5"
+ resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz"
integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==
dependencies:
"@jest/transform" "^29.7.0"
@@ -2613,7 +1945,7 @@ babel-jest@^29.7.0:
babel-plugin-istanbul@^6.1.1:
version "6.1.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73"
+ resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz"
integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
@@ -2624,7 +1956,7 @@ babel-plugin-istanbul@^6.1.1:
babel-plugin-jest-hoist@^29.6.3:
version "29.6.3"
- resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626"
+ resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz"
integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==
dependencies:
"@babel/template" "^7.3.3"
@@ -2634,7 +1966,7 @@ babel-plugin-jest-hoist@^29.6.3:
babel-preset-current-node-syntax@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b"
+ resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz"
integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==
dependencies:
"@babel/plugin-syntax-async-generators" "^7.8.4"
@@ -2652,7 +1984,7 @@ babel-preset-current-node-syntax@^1.0.0:
babel-preset-jest@^29.6.3:
version "29.6.3"
- resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c"
+ resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz"
integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==
dependencies:
babel-plugin-jest-hoist "^29.6.3"
@@ -2660,143 +1992,96 @@ babel-preset-jest@^29.6.3:
balanced-match@^1.0.0:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
base64-js@^1.3.1:
version "1.5.1"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-bcrypt@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/bcrypt/-/bcrypt-5.1.0.tgz#bbb27665dbc400480a524d8991ac7434e8529e17"
- integrity sha512-RHBS7HI5N5tEnGTmtR/pppX0mmDSBpQ4aCBsj7CEQfYXDcO74A8sIBYcJMuCsis2E81zDxeENYhv66oZwLiA+Q==
+bcrypt@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/bcrypt/-/bcrypt-6.0.0.tgz"
+ integrity sha512-cU8v/EGSrnH+HnxV2z0J7/blxH8gq7Xh2JFT6Aroax7UohdmiJJlxApMxtKfuI7z68NvvVcmR78k2LbT6efhRg==
dependencies:
- "@mapbox/node-pre-gyp" "^1.0.10"
- node-addon-api "^5.0.0"
-
-binary-extensions@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
- integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+ node-addon-api "^8.3.0"
+ node-gyp-build "^4.8.4"
bl@^4.1.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
+ resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz"
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
dependencies:
buffer "^5.5.0"
inherits "^2.0.4"
readable-stream "^3.4.0"
-bowser@^2.11.0:
- version "2.11.0"
- resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f"
- integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==
-
brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ version "1.1.12"
+ resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz"
+ integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
-brace-expansion@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
- integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
- dependencies:
- balanced-match "^1.0.0"
-
-braces@^3.0.2, braces@~3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
- integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
- dependencies:
- fill-range "^7.0.1"
-
-browserslist@^4.14.5, browserslist@^4.22.2:
- version "4.23.0"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab"
- integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==
+braces@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz"
+ integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
dependencies:
- caniuse-lite "^1.0.30001587"
- electron-to-chromium "^1.4.668"
- node-releases "^2.0.14"
- update-browserslist-db "^1.0.13"
+ fill-range "^7.1.1"
-browserslist@^4.21.3:
- version "4.21.5"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7"
- integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==
+browserslist@^4.22.2, browserslist@^4.24.0:
+ version "4.25.1"
+ resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz"
+ integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==
dependencies:
- caniuse-lite "^1.0.30001449"
- electron-to-chromium "^1.4.284"
- node-releases "^2.0.8"
- update-browserslist-db "^1.0.10"
+ caniuse-lite "^1.0.30001726"
+ electron-to-chromium "^1.5.173"
+ node-releases "^2.0.19"
+ update-browserslist-db "^1.1.3"
bs-logger@0.x:
version "0.2.6"
- resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8"
+ resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz"
integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==
dependencies:
fast-json-stable-stringify "2.x"
bser@2.1.1:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
+ resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz"
integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
dependencies:
node-int64 "^0.4.0"
-bson@^4.7.0:
- version "4.7.2"
- resolved "https://registry.yarnpkg.com/bson/-/bson-4.7.2.tgz#320f4ad0eaf5312dd9b45dc369cc48945e2a5f2e"
- integrity sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==
- dependencies:
- buffer "^5.6.0"
-
bson@^6.2.0:
version "6.3.0"
- resolved "https://registry.yarnpkg.com/bson/-/bson-6.3.0.tgz#d47acba525ba7d7eb0e816c10538bce26a337fe0"
+ resolved "https://registry.npmjs.org/bson/-/bson-6.3.0.tgz"
integrity sha512-balJfqwwTBddxfnidJZagCBPP/f48zj9Sdp3OJswREOgsJzHiQSaOIAtApSgDQFYgHqAvFkp53AFSqjMDZoTFw==
buffer-equal-constant-time@1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
+ resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz"
integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==
buffer-from@^1.0.0:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
+ resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz"
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
-buffer-writer@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04"
- integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==
-
-buffer@^5.5.0, buffer@^5.6.0:
+buffer@^5.5.0:
version "5.7.1"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
+ resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz"
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
dependencies:
base64-js "^1.3.1"
ieee754 "^1.1.13"
-buffer@^6.0.3:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
- integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
- dependencies:
- base64-js "^1.3.1"
- ieee754 "^1.2.1"
-
call-bind@^1.0.6:
version "1.0.7"
- resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
+ resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz"
integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
dependencies:
es-define-property "^1.0.0"
@@ -2807,109 +2092,77 @@ call-bind@^1.0.6:
callsites@^3.0.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
camelcase@^5.3.1:
version "5.3.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
camelcase@^6.2.0:
version "6.3.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
+ resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
-caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001587:
- version "1.0.30001589"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001589.tgz#7ad6dba4c9bf6561aec8291976402339dc157dfb"
- integrity sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg==
+caniuse-lite@^1.0.30001726:
+ version "1.0.30001726"
+ resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz"
+ integrity sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==
-chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2:
+chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2:
version "4.1.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-chalk@^2.4.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
- integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
- dependencies:
- ansi-styles "^3.2.1"
- escape-string-regexp "^1.0.5"
- supports-color "^5.3.0"
-
char-regex@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
+ resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz"
integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==
chardet@^0.7.0:
version "0.7.0"
- resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
+ resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
-chokidar@3.5.3:
- version "3.5.3"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
- integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
- dependencies:
- anymatch "~3.1.2"
- braces "~3.0.2"
- glob-parent "~5.1.2"
- is-binary-path "~2.1.0"
- is-glob "~4.0.1"
- normalize-path "~3.0.0"
- readdirp "~3.6.0"
- optionalDependencies:
- fsevents "~2.3.2"
-
-chokidar@^3.5.3:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
- integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
- dependencies:
- anymatch "~3.1.2"
- braces "~3.0.2"
- glob-parent "~5.1.2"
- is-binary-path "~2.1.0"
- is-glob "~4.0.1"
- normalize-path "~3.0.0"
- readdirp "~3.6.0"
- optionalDependencies:
- fsevents "~2.3.2"
+chokidar@4.0.3, chokidar@^4.0.1:
+ version "4.0.3"
+ resolved "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz"
+ integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==
+ dependencies:
+ readdirp "^4.0.1"
chownr@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
+ resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz"
integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
chrome-trace-event@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
- integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz"
+ integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==
ci-info@^3.2.0:
version "3.8.0"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91"
+ resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz"
integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==
cjs-module-lexer@^1.0.0:
version "1.2.2"
- resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40"
+ resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz"
integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==
class-transformer@^0.5.1:
version "0.5.1"
- resolved "https://registry.yarnpkg.com/class-transformer/-/class-transformer-0.5.1.tgz#24147d5dffd2a6cea930a3250a677addf96ab336"
+ resolved "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz"
integrity sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==
class-validator@^0.14.0:
version "0.14.1"
- resolved "https://registry.yarnpkg.com/class-validator/-/class-validator-0.14.1.tgz#ff2411ed8134e9d76acfeb14872884448be98110"
+ resolved "https://registry.npmjs.org/class-validator/-/class-validator-0.14.1.tgz"
integrity sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==
dependencies:
"@types/validator" "^13.11.8"
@@ -2918,33 +2171,33 @@ class-validator@^0.14.0:
cli-cursor@^3.1.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
+ resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz"
integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
dependencies:
restore-cursor "^3.1.0"
cli-spinners@^2.5.0:
version "2.9.2"
- resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41"
+ resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz"
integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==
-cli-table3@0.6.3:
- version "0.6.3"
- resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2"
- integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==
+cli-table3@0.6.5:
+ version "0.6.5"
+ resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz"
+ integrity sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==
dependencies:
string-width "^4.2.0"
optionalDependencies:
"@colors/colors" "1.5.0"
-cli-width@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6"
- integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
+cli-width@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz"
+ integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==
cliui@^8.0.1:
version "8.0.1"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
+ resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz"
integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
dependencies:
string-width "^4.2.0"
@@ -2953,124 +2206,129 @@ cliui@^8.0.1:
clone@^1.0.2:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
+ resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz"
integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==
co@^4.6.0:
version "4.6.0"
- resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+ resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz"
integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
collect-v8-coverage@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59"
+ resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz"
integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==
-color-convert@^1.9.0:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
- integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
- dependencies:
- color-name "1.1.3"
-
color-convert@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
dependencies:
color-name "~1.1.4"
-color-name@1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
- integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
-
color-name@~1.1.4:
version "1.1.4"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
color-support@^1.1.2:
version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
+ resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz"
integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
combined-stream@^1.0.8:
version "1.0.8"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
dependencies:
delayed-stream "~1.0.0"
commander@4.1.1:
version "4.1.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
+ resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz"
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
commander@^2.20.0:
version "2.20.3"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+comment-json@4.2.5:
+ version "4.2.5"
+ resolved "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz"
+ integrity sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==
+ dependencies:
+ array-timsort "^1.0.3"
+ core-util-is "^1.0.3"
+ esprima "^4.0.1"
+ has-own-prop "^2.0.0"
+ repeat-string "^1.6.1"
+
component-emitter@^1.3.0:
version "1.3.1"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17"
+ resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz"
integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==
concat-map@0.0.1:
version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
-consola@^2.15.0:
- version "2.15.3"
- resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550"
- integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==
+consola@^3.2.3:
+ version "3.4.2"
+ resolved "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz"
+ integrity sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==
console-control-strings@^1.0.0, console-control-strings@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"
integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==
-convert-source-map@^1.6.0, convert-source-map@^1.7.0:
+content-disposition@^0.5.4:
+ version "0.5.4"
+ resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz"
+ integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
+ dependencies:
+ safe-buffer "5.2.1"
+
+convert-source-map@^1.6.0:
version "1.9.0"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
+ resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz"
integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
convert-source-map@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
+ resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz"
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
-cookie@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
- integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
-
-cookie@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051"
- integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==
+cookie@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz"
+ integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==
cookiejar@^2.1.4:
version "2.1.4"
- resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b"
+ resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz"
integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==
-cosmiconfig@^7.0.1:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
- integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
+core-util-is@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz"
+ integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
+
+cosmiconfig@^8.2.0:
+ version "8.3.6"
+ resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz"
+ integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==
dependencies:
- "@types/parse-json" "^4.0.0"
- import-fresh "^3.2.1"
- parse-json "^5.0.0"
+ import-fresh "^3.3.0"
+ js-yaml "^4.1.0"
+ parse-json "^5.2.0"
path-type "^4.0.0"
- yaml "^1.10.0"
create-jest@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320"
+ resolved "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz"
integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==
dependencies:
"@jest/types" "^29.6.3"
@@ -3083,50 +2341,50 @@ create-jest@^29.7.0:
create-require@^1.1.0:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
+ resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz"
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
-cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
- integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6:
+ version "7.0.6"
+ resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz"
+ integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
dependencies:
path-key "^3.1.0"
shebang-command "^2.0.0"
which "^2.0.1"
-debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
- version "4.3.4"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
- integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.0:
+ version "4.4.1"
+ resolved "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz"
+ integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==
dependencies:
- ms "2.1.2"
+ ms "^2.1.3"
dedent@^1.0.0:
version "1.5.1"
- resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff"
+ resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz"
integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==
deep-is@^0.1.3:
version "0.1.4"
- resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
+ resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
deepmerge@^4.2.2:
version "4.3.1"
- resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
+ resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz"
integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
defaults@^1.0.3:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a"
+ resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz"
integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==
dependencies:
clone "^1.0.2"
define-data-property@^1.1.2:
version "1.1.4"
- resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
+ resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz"
integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
dependencies:
es-define-property "^1.0.0"
@@ -3135,167 +2393,177 @@ define-data-property@^1.1.2:
delayed-stream@~1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
delegates@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz"
integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==
+depd@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
+ integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
+
+dequal@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz"
+ integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
+
detect-libc@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd"
+ resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz"
integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==
detect-newline@^3.0.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
+ resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz"
integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
dezalgo@^1.0.4:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81"
+ resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz"
integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==
dependencies:
asap "^2.0.0"
wrappy "1"
-diff-sequences@^29.4.3:
- version "29.4.3"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2"
- integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==
-
diff-sequences@^29.6.3:
version "29.6.3"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921"
+ resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz"
integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==
diff@^4.0.1:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
+ resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
dir-glob@^3.0.1:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz"
integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
dependencies:
path-type "^4.0.0"
doctrine@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz"
integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
dependencies:
esutils "^2.0.2"
-dotenv-expand@10.0.0:
- version "10.0.0"
- resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37"
- integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==
+dotenv-expand@12.0.1:
+ version "12.0.1"
+ resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.1.tgz"
+ integrity sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ==
+ dependencies:
+ dotenv "^16.4.5"
+
+dotenv@16.4.7, dotenv@^16.4.5:
+ version "16.4.7"
+ resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz"
+ integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==
-dotenv@16.1.4:
- version "16.1.4"
- resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.1.4.tgz#67ac1a10cd9c25f5ba604e4e08bc77c0ebe0ca8c"
- integrity sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw==
+eastasianwidth@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz"
+ integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
ecdsa-sig-formatter@1.0.11:
version "1.0.11"
- resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf"
+ resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz"
integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==
dependencies:
safe-buffer "^5.0.1"
-electron-to-chromium@^1.4.284, electron-to-chromium@^1.4.668:
- version "1.4.681"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.681.tgz#5f23fad8aa7e1f64cbb7dd9d15c7e39a1cd7e6e3"
- integrity sha512-1PpuqJUFWoXZ1E54m8bsLPVYwIVCRzvaL+n5cjigGga4z854abDnFRc+cTa2th4S79kyGqya/1xoR7h+Y5G5lg==
+electron-to-chromium@^1.5.173:
+ version "1.5.174"
+ resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.174.tgz"
+ integrity sha512-HE43yYdUUiJVjewV2A9EP8o89Kb4AqMKplMQP2IxEPUws1Etu/ZkdsgUDabUZ/WmbP4ZbvJDOcunvbBUPPIfmw==
emittery@^0.13.1:
version "0.13.1"
- resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad"
+ resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz"
integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==
emoji-regex@^8.0.0:
version "8.0.0"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
-end-of-stream@^1.1.0:
- version "1.4.4"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
- integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
- dependencies:
- once "^1.4.0"
+emoji-regex@^9.2.2:
+ version "9.2.2"
+ resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz"
+ integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
-enhanced-resolve@^5.0.0, enhanced-resolve@^5.14.0, enhanced-resolve@^5.7.0:
- version "5.15.0"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35"
- integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==
+enhanced-resolve@^5.0.0, enhanced-resolve@^5.17.1, enhanced-resolve@^5.7.0:
+ version "5.18.2"
+ resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz"
+ integrity sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.2.0"
error-ex@^1.3.1:
version "1.3.2"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
dependencies:
is-arrayish "^0.2.1"
es-define-property@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
+ resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz"
integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
dependencies:
get-intrinsic "^1.2.4"
es-errors@^1.3.0:
version "1.3.0"
- resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
+ resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz"
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
es-module-lexer@^1.2.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5"
- integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==
+ version "1.7.0"
+ resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz"
+ integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==
-escalade@^3.1.1:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
- integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
+escalade@^3.1.1, escalade@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz"
+ integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
-escape-string-regexp@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
- integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz"
+ integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
escape-string-regexp@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
+ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz"
integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
escape-string-regexp@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
+ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
eslint-config-prettier@^8.3.0:
version "8.10.0"
- resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11"
+ resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz"
integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==
eslint-plugin-prettier@^4.0.0:
version "4.2.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b"
+ resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz"
integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==
dependencies:
prettier-linter-helpers "^1.0.0"
eslint-scope@5.1.1, eslint-scope@^5.1.1:
version "5.1.1"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
+ resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz"
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
dependencies:
esrecurse "^4.3.0"
@@ -3303,7 +2571,7 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1:
eslint-scope@^7.2.2:
version "7.2.2"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
+ resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz"
integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
dependencies:
esrecurse "^4.3.0"
@@ -3311,12 +2579,12 @@ eslint-scope@^7.2.2:
eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
version "3.4.3"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
+ resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
eslint@^8.0.1:
version "8.57.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668"
+ resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz"
integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
@@ -3360,75 +2628,60 @@ eslint@^8.0.1:
espree@^9.6.0, espree@^9.6.1:
version "9.6.1"
- resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
+ resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz"
integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
dependencies:
acorn "^8.9.0"
acorn-jsx "^5.3.2"
eslint-visitor-keys "^3.4.1"
-esprima@^4.0.0:
+esprima@^4.0.0, esprima@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esquery@^1.4.2:
version "1.5.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b"
+ resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz"
integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
dependencies:
estraverse "^5.1.0"
esrecurse@^4.3.0:
version "4.3.0"
- resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+ resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz"
integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
dependencies:
estraverse "^5.2.0"
estraverse@^4.1.1:
version "4.3.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+ resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
estraverse@^5.1.0, estraverse@^5.2.0:
version "5.3.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
+ resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
esutils@^2.0.2:
version "2.0.3"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-event-target-shim@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
- integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
+eventemitter2@6.4.9:
+ version "6.4.9"
+ resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz"
+ integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==
-events@^3.2.0, events@^3.3.0:
+events@^3.2.0:
version "3.3.0"
- resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
+ resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz"
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
-execa@^4.0.2:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
- integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
- dependencies:
- cross-spawn "^7.0.0"
- get-stream "^5.0.0"
- human-signals "^1.1.1"
- is-stream "^2.0.0"
- merge-stream "^2.0.0"
- npm-run-path "^4.0.0"
- onetime "^5.1.0"
- signal-exit "^3.0.2"
- strip-final-newline "^2.0.0"
-
execa@^5.0.0:
version "5.1.1"
- resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
+ resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz"
integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
dependencies:
cross-spawn "^7.0.3"
@@ -3443,23 +2696,12 @@ execa@^5.0.0:
exit@^0.1.2:
version "0.1.2"
- resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
+ resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz"
integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==
-expect@^29.0.0:
- version "29.5.0"
- resolved "https://registry.yarnpkg.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7"
- integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==
- dependencies:
- "@jest/expect-utils" "^29.5.0"
- jest-get-type "^29.4.3"
- jest-matcher-utils "^29.5.0"
- jest-message-util "^29.5.0"
- jest-util "^29.5.0"
-
-expect@^29.7.0:
+expect@^29.0.0, expect@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc"
+ resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz"
integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==
dependencies:
"@jest/expect-utils" "^29.7.0"
@@ -3468,38 +2710,33 @@ expect@^29.7.0:
jest-message-util "^29.7.0"
jest-util "^29.7.0"
-external-editor@^3.0.3:
+external-editor@^3.1.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
+ resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz"
integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
dependencies:
chardet "^0.7.0"
iconv-lite "^0.4.24"
tmp "^0.0.33"
-fast-content-type-parse@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz#4087162bf5af3294d4726ff29b334f72e3a1092c"
- integrity sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==
-
fast-decode-uri-component@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz#46f8b6c22b30ff7a81357d4f59abfae938202543"
+ resolved "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz"
integrity sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
fast-diff@^1.1.2:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
+ resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz"
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
fast-glob@^3.2.9:
version "3.3.2"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
+ resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz"
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
dependencies:
"@nodelib/fs.stat" "^2.0.2"
@@ -3510,151 +2747,150 @@ fast-glob@^3.2.9:
fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-fast-json-stringify@^5.7.0:
- version "5.12.0"
- resolved "https://registry.yarnpkg.com/fast-json-stringify/-/fast-json-stringify-5.12.0.tgz#e9f77dc0b4face74351320c3618f1d869de5cb18"
- integrity sha512-7Nnm9UPa7SfHRbHVA1kJQrGXCRzB7LMlAAqHXQFkEQqueJm1V8owm0FsE/2Do55/4CcdhwiLQERaKomOnKQkyA==
- dependencies:
- "@fastify/merge-json-schemas" "^0.1.0"
- ajv "^8.10.0"
- ajv-formats "^2.1.1"
- fast-deep-equal "^3.1.3"
- fast-uri "^2.1.0"
- json-schema-ref-resolver "^1.0.1"
+fast-json-stringify@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-6.0.1.tgz"
+ integrity sha512-s7SJE83QKBZwg54dIbD5rCtzOBVD43V1ReWXXYqBgwCwHLYAAT0RQc/FmrQglXqWPpz6omtryJQOau5jI4Nrvg==
+ dependencies:
+ "@fastify/merge-json-schemas" "^0.2.0"
+ ajv "^8.12.0"
+ ajv-formats "^3.0.1"
+ fast-uri "^3.0.0"
+ json-schema-ref-resolver "^2.0.0"
rfdc "^1.2.0"
fast-levenshtein@^2.0.6:
version "2.0.6"
- resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
-fast-querystring@^1.0.0:
+fast-querystring@1.1.2, fast-querystring@^1.0.0, fast-querystring@^1.1.2:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/fast-querystring/-/fast-querystring-1.1.2.tgz#a6d24937b4fc6f791b4ee31dcb6f53aeafb89f53"
+ resolved "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz"
integrity sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==
dependencies:
fast-decode-uri-component "^1.0.1"
fast-redact@^3.1.1:
version "3.3.0"
- resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.3.0.tgz#7c83ce3a7be4898241a46560d51de10f653f7634"
+ resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz"
integrity sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==
fast-safe-stringify@2.1.1, fast-safe-stringify@^2.1.1:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884"
+ resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz"
integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==
-fast-uri@^2.0.0, fast-uri@^2.1.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-2.3.0.tgz#bdae493942483d299e7285dcb4627767d42e2793"
- integrity sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==
-
-fast-xml-parser@4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz#5a98c18238d28a57bbdfa9fe4cda01211fff8f4a"
- integrity sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==
- dependencies:
- strnum "^1.0.5"
+fast-uri@^3.0.0, fast-uri@^3.0.1, fast-uri@^3.0.5:
+ version "3.0.6"
+ resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz"
+ integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==
-fastify-plugin@^4.0.0:
- version "4.5.1"
- resolved "https://registry.yarnpkg.com/fastify-plugin/-/fastify-plugin-4.5.1.tgz#44dc6a3cc2cce0988bc09e13f160120bbd91dbee"
- integrity sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==
+fastify-plugin@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-5.0.1.tgz"
+ integrity sha512-HCxs+YnRaWzCl+cWRYFnHmeRFyR5GVnJTAaCJQiYzQSDwK9MgJdyAsuL3nh0EWRCYMgQ5MeziymvmAhUHYHDUQ==
-fastify@4.18.0:
- version "4.18.0"
- resolved "https://registry.yarnpkg.com/fastify/-/fastify-4.18.0.tgz#d369630ac1dcedb218e6a933380ed81447c3af11"
- integrity sha512-L5o/2GEkBastQ3HV0dtKo7SUZ497Z1+q4fcqAoPyq6JCQ/8zdk1JQEoTQwnBWCp+EmA7AQa6mxNqSAEhzP0RwQ==
+fastify@5.3.3:
+ version "5.3.3"
+ resolved "https://registry.npmjs.org/fastify/-/fastify-5.3.3.tgz"
+ integrity sha512-nCBiBCw9q6jPx+JJNVgO8JVnTXeUyrGcyTKPQikRkA/PanrFcOIo4R+ZnLeOLPZPGgzjomqfVarzE0kYx7qWiQ==
dependencies:
- "@fastify/ajv-compiler" "^3.5.0"
- "@fastify/error" "^3.2.0"
- "@fastify/fast-json-stringify-compiler" "^4.3.0"
+ "@fastify/ajv-compiler" "^4.0.0"
+ "@fastify/error" "^4.0.0"
+ "@fastify/fast-json-stringify-compiler" "^5.0.0"
+ "@fastify/proxy-addr" "^5.0.0"
abstract-logging "^2.0.1"
- avvio "^8.2.1"
- fast-content-type-parse "^1.0.0"
- fast-json-stringify "^5.7.0"
- find-my-way "^7.6.0"
- light-my-request "^5.9.1"
- pino "^8.12.0"
- process-warning "^2.2.0"
- proxy-addr "^2.0.7"
- rfdc "^1.3.0"
- secure-json-parse "^2.5.0"
- semver "^7.5.0"
- tiny-lru "^11.0.1"
-
-fastify@^4.15.0:
- version "4.15.0"
- resolved "https://registry.yarnpkg.com/fastify/-/fastify-4.15.0.tgz#4ebadaea706217467a332341f9cfa632072d51f2"
- integrity sha512-m/CaRN8nf5uyYdrDe2qqq+0z3oGyE+A++qlKQoLJTI4WI0nWK9D6R3FxXQ3MVwt/md977GMR4F43pE9oqrS2zw==
- dependencies:
- "@fastify/ajv-compiler" "^3.5.0"
- "@fastify/error" "^3.0.0"
- "@fastify/fast-json-stringify-compiler" "^4.2.0"
+ avvio "^9.0.0"
+ fast-json-stringify "^6.0.0"
+ find-my-way "^9.0.0"
+ light-my-request "^6.0.0"
+ pino "^9.0.0"
+ process-warning "^5.0.0"
+ rfdc "^1.3.1"
+ secure-json-parse "^4.0.0"
+ semver "^7.6.0"
+ toad-cache "^3.7.0"
+
+fastify@^5.4.0:
+ version "5.4.0"
+ resolved "https://registry.npmjs.org/fastify/-/fastify-5.4.0.tgz"
+ integrity sha512-I4dVlUe+WNQAhKSyv15w+dwUh2EPiEl4X2lGYMmNSgF83WzTMAPKGdWEv5tPsCQOb+SOZwz8Vlta2vF+OeDgRw==
+ dependencies:
+ "@fastify/ajv-compiler" "^4.0.0"
+ "@fastify/error" "^4.0.0"
+ "@fastify/fast-json-stringify-compiler" "^5.0.0"
+ "@fastify/proxy-addr" "^5.0.0"
abstract-logging "^2.0.1"
- avvio "^8.2.0"
- fast-content-type-parse "^1.0.0"
- find-my-way "^7.6.0"
- light-my-request "^5.6.1"
- pino "^8.5.0"
- process-warning "^2.0.0"
- proxy-addr "^2.0.7"
- rfdc "^1.3.0"
- secure-json-parse "^2.5.0"
- semver "^7.3.7"
- tiny-lru "^10.0.0"
+ avvio "^9.0.0"
+ fast-json-stringify "^6.0.0"
+ find-my-way "^9.0.0"
+ light-my-request "^6.0.0"
+ pino "^9.0.0"
+ process-warning "^5.0.0"
+ rfdc "^1.3.1"
+ secure-json-parse "^4.0.0"
+ semver "^7.6.0"
+ toad-cache "^3.7.0"
fastq@^1.17.1, fastq@^1.6.0:
version "1.17.1"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47"
+ resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz"
integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
dependencies:
reusify "^1.0.4"
fb-watchman@^2.0.0:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c"
+ resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz"
integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==
dependencies:
bser "2.1.1"
-figures@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
- integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
- dependencies:
- escape-string-regexp "^1.0.5"
+fflate@^0.8.2:
+ version "0.8.2"
+ resolved "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz"
+ integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==
file-entry-cache@^6.0.1:
version "6.0.1"
- resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
+ resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz"
integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
dependencies:
flat-cache "^3.0.4"
-fill-range@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
- integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+file-type@21.0.0:
+ version "21.0.0"
+ resolved "https://registry.npmjs.org/file-type/-/file-type-21.0.0.tgz"
+ integrity sha512-ek5xNX2YBYlXhiUXui3D/BXa3LdqPmoLJ7rqEx2bKJ7EAUEfmXgW0Das7Dc6Nr9MvqaOnIqiPV0mZk/r/UpNAg==
+ dependencies:
+ "@tokenizer/inflate" "^0.2.7"
+ strtok3 "^10.2.2"
+ token-types "^6.0.0"
+ uint8array-extras "^1.4.0"
+
+fill-range@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz"
+ integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
dependencies:
to-regex-range "^5.0.1"
-find-my-way@^7.6.0:
- version "7.7.0"
- resolved "https://registry.yarnpkg.com/find-my-way/-/find-my-way-7.7.0.tgz#d7b51ca6046782bcddd5a8435e99ad057e5a8876"
- integrity sha512-+SrHpvQ52Q6W9f3wJoJBbAQULJuNEEQwBvlvYwACDhBTLOTMiQ0HYWh4+vC3OivGP2ENcTI1oKlFA2OepJNjhQ==
+find-my-way@^9.0.0:
+ version "9.3.0"
+ resolved "https://registry.npmjs.org/find-my-way/-/find-my-way-9.3.0.tgz"
+ integrity sha512-eRoFWQw+Yv2tuYlK2pjFS2jGXSxSppAs3hSQjfxVKxM5amECzIgYYc1FEI8ZmhSh/Ig+FrKEz43NLRKJjYCZVg==
dependencies:
fast-deep-equal "^3.1.3"
fast-querystring "^1.0.0"
- safe-regex2 "^2.0.0"
+ safe-regex2 "^5.0.0"
find-up@^4.0.0, find-up@^4.1.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz"
integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
dependencies:
locate-path "^5.0.0"
@@ -3662,7 +2898,7 @@ find-up@^4.0.0, find-up@^4.1.0:
find-up@^5.0.0:
version "5.0.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+ resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
dependencies:
locate-path "^6.0.0"
@@ -3670,7 +2906,7 @@ find-up@^5.0.0:
flat-cache@^3.0.4:
version "3.2.0"
- resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee"
+ resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz"
integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==
dependencies:
flatted "^3.2.9"
@@ -3679,18 +2915,26 @@ flat-cache@^3.0.4:
flatted@^3.2.9:
version "3.3.1"
- resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
+ resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz"
integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
-fork-ts-checker-webpack-plugin@8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz#dae45dfe7298aa5d553e2580096ced79b6179504"
- integrity sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==
+foreground-child@^3.1.0:
+ version "3.3.1"
+ resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz"
+ integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==
+ dependencies:
+ cross-spawn "^7.0.6"
+ signal-exit "^4.0.1"
+
+fork-ts-checker-webpack-plugin@9.1.0:
+ version "9.1.0"
+ resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz"
+ integrity sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==
dependencies:
"@babel/code-frame" "^7.16.7"
chalk "^4.1.2"
- chokidar "^3.5.3"
- cosmiconfig "^7.0.1"
+ chokidar "^4.0.1"
+ cosmiconfig "^8.2.0"
deepmerge "^4.2.2"
fs-extra "^10.0.0"
memfs "^3.4.1"
@@ -3702,7 +2946,7 @@ fork-ts-checker-webpack-plugin@8.0.0:
form-data@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
+ resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz"
integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
dependencies:
asynckit "^0.4.0"
@@ -3710,23 +2954,18 @@ form-data@^4.0.0:
mime-types "^2.1.12"
formidable@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/formidable/-/formidable-2.1.2.tgz#fa973a2bec150e4ce7cac15589d7a25fc30ebd89"
- integrity sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==
+ version "2.1.5"
+ resolved "https://registry.npmjs.org/formidable/-/formidable-2.1.5.tgz"
+ integrity sha512-Oz5Hwvwak/DCaXVVUtPn4oLMLLy1CdclLKO1LFgU7XzDpVMUU5UjlSLpGMocyQNNk8F6IJW9M/YdooSn2MRI+Q==
dependencies:
+ "@paralleldrive/cuid2" "^2.2.2"
dezalgo "^1.0.4"
- hexoid "^1.0.0"
once "^1.4.0"
qs "^6.11.0"
-forwarded@0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
- integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
-
fs-extra@^10.0.0:
version "10.1.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
+ resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz"
integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
dependencies:
graceful-fs "^4.2.0"
@@ -3735,39 +2974,34 @@ fs-extra@^10.0.0:
fs-minipass@^2.0.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
+ resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz"
integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
dependencies:
minipass "^3.0.0"
fs-monkey@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788"
- integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==
+ version "1.0.6"
+ resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz"
+ integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==
fs.realpath@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@^2.3.2:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
- integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
-
-fsevents@~2.3.2:
version "2.3.3"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+ resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
function-bind@^1.1.2:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+ resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
gauge@^3.0.0:
version "3.0.2"
- resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395"
+ resolved "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz"
integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==
dependencies:
aproba "^1.0.3 || ^2.0.0"
@@ -3782,17 +3016,17 @@ gauge@^3.0.0:
gensync@^1.0.0-beta.2:
version "1.0.0-beta.2"
- resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
get-caller-file@^2.0.5:
version "2.0.5"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
get-intrinsic@^1.1.3, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
version "1.2.4"
- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
+ resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz"
integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
dependencies:
es-errors "^1.3.0"
@@ -3803,43 +3037,48 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
get-package-type@^0.1.0:
version "0.1.0"
- resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
+ resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz"
integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
-get-stream@^5.0.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
- integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
- dependencies:
- pump "^3.0.0"
-
get-stream@^6.0.0:
version "6.0.1"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
+ resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz"
integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
-glob-parent@^5.1.2, glob-parent@~5.1.2:
+glob-parent@^5.1.2:
version "5.1.2"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob-parent@^6.0.2:
version "6.0.2"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
+ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
dependencies:
is-glob "^4.0.3"
glob-to-regexp@^0.4.1:
version "0.4.1"
- resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
+ resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz"
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
-glob@^7.0.0, glob@^7.1.3, glob@^7.1.4:
+glob@11.0.1, glob@^11.0.0:
+ version "11.0.1"
+ resolved "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz"
+ integrity sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==
+ dependencies:
+ foreground-child "^3.1.0"
+ jackspeak "^4.0.1"
+ minimatch "^10.0.0"
+ minipass "^7.1.2"
+ package-json-from-dist "^1.0.0"
+ path-scurry "^2.0.0"
+
+glob@^7.1.3, glob@^7.1.4:
version "7.2.3"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
+ resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
dependencies:
fs.realpath "^1.0.0"
@@ -3849,31 +3088,21 @@ glob@^7.0.0, glob@^7.1.3, glob@^7.1.4:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^9.2.0:
- version "9.3.5"
- resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21"
- integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==
- dependencies:
- fs.realpath "^1.0.0"
- minimatch "^8.0.2"
- minipass "^4.2.4"
- path-scurry "^1.6.1"
-
globals@^11.1.0:
version "11.12.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
globals@^13.19.0:
version "13.24.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
+ resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz"
integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
dependencies:
type-fest "^0.20.2"
globby@^11.1.0:
version "11.1.0"
- resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
+ resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz"
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
dependencies:
array-union "^2.1.0"
@@ -3885,41 +3114,41 @@ globby@^11.1.0:
google-protobuf@3.15.8:
version "3.15.8"
- resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.15.8.tgz#5f3948905e4951c867d6bc143f385a80e2a39efe"
+ resolved "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.15.8.tgz"
integrity sha512-2jtfdqTaSxk0cuBJBtTTWsot4WtR9RVr2rXg7x7OoqiuOKopPrwXpM1G4dXIkLcUNRh3RKzz76C8IOkksZSeOw==
google-protobuf@^3.21.2:
version "3.21.2"
- resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.21.2.tgz#4580a2bea8bbb291ee579d1fefb14d6fa3070ea4"
+ resolved "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz"
integrity sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==
gopd@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
+ resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz"
integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
dependencies:
get-intrinsic "^1.1.3"
-graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
+graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
version "4.2.11"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
+ resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
graphemer@^1.4.0:
version "1.4.0"
- resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
+ resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz"
integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
grpc-tools@^1.12.4:
version "1.12.4"
- resolved "https://registry.yarnpkg.com/grpc-tools/-/grpc-tools-1.12.4.tgz#a044c9e8157941033ea7a5f144c2dc9dc4501de4"
+ resolved "https://registry.npmjs.org/grpc-tools/-/grpc-tools-1.12.4.tgz"
integrity sha512-5+mLAJJma3BjnW/KQp6JBjUMgvu7Mu3dBvBPd1dcbNIb+qiR0817zDpgPjS7gRb+l/8EVNIa3cB02xI9JLToKg==
dependencies:
"@mapbox/node-pre-gyp" "^1.0.5"
grpc_tools_node_protoc_ts@^5.3.3:
version "5.3.3"
- resolved "https://registry.yarnpkg.com/grpc_tools_node_protoc_ts/-/grpc_tools_node_protoc_ts-5.3.3.tgz#9a6c1c2f41563a1ab259c0177496d7dfed30dbfe"
+ resolved "https://registry.npmjs.org/grpc_tools_node_protoc_ts/-/grpc_tools_node_protoc_ts-5.3.3.tgz"
integrity sha512-M/YrklvVXMtuuj9kb42PxeouZhs7Ul+R4e/31XwrankUcKL8cQQP50Q9q+KEHGyHQaPt6VtKKsxMgLaKbCxeww==
dependencies:
google-protobuf "3.15.8"
@@ -3927,7 +3156,7 @@ grpc_tools_node_protoc_ts@^5.3.3:
handlebars@4.7.7:
version "4.7.7"
- resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
+ resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz"
integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==
dependencies:
minimist "^1.2.5"
@@ -3937,93 +3166,99 @@ handlebars@4.7.7:
optionalDependencies:
uglify-js "^3.1.4"
-has-flag@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
- integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
-
has-flag@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+has-own-prop@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz"
+ integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==
+
has-property-descriptors@^1.0.1:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
+ resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz"
integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
dependencies:
es-define-property "^1.0.0"
has-proto@^1.0.1:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd"
+ resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz"
integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
has-symbols@^1.0.3:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
+ resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
has-unicode@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz"
integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==
-hasown@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa"
- integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==
+hasown@^2.0.0, hasown@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz"
+ integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
dependencies:
function-bind "^1.1.2"
-hexoid@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18"
- integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==
+helmet@^8.0.0:
+ version "8.1.0"
+ resolved "https://registry.npmjs.org/helmet/-/helmet-8.1.0.tgz"
+ integrity sha512-jOiHyAZsmnr8LqoPGmCjYAaiuWwjAPLgY8ZX2XrmHawt99/u1y6RgrZMTeoPfpUbV96HOalYgz1qzkRbw54Pmg==
html-escaper@^2.0.0:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
+ resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz"
integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
+http-errors@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz"
+ integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
+ dependencies:
+ depd "2.0.0"
+ inherits "2.0.4"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ toidentifier "1.0.1"
+
https-proxy-agent@^5.0.0:
version "5.0.1"
- resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
+ resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz"
integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
dependencies:
agent-base "6"
debug "4"
-human-signals@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
- integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
-
human-signals@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
+ resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz"
integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
iconv-lite@^0.4.24:
version "0.4.24"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
dependencies:
safer-buffer ">= 2.1.2 < 3"
ieee754@^1.1.13, ieee754@^1.2.1:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
ignore@^5.2.0:
version "5.3.1"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
+ resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz"
integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
-import-fresh@^3.2.1:
+import-fresh@^3.2.1, import-fresh@^3.3.0:
version "3.3.0"
- resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz"
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
dependencies:
parent-module "^1.0.0"
@@ -4031,7 +3266,7 @@ import-fresh@^3.2.1:
import-local@^3.0.2:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4"
+ resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz"
integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==
dependencies:
pkg-dir "^4.2.0"
@@ -4039,161 +3274,99 @@ import-local@^3.0.2:
imurmurhash@^0.1.4:
version "0.1.4"
- resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
inflight@^1.0.4:
version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
dependencies:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@^2.0.3, inherits@^2.0.4:
+inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4:
version "2.0.4"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-inquirer@8.2.4:
- version "8.2.4"
- resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4"
- integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==
- dependencies:
- ansi-escapes "^4.2.1"
- chalk "^4.1.1"
- cli-cursor "^3.1.0"
- cli-width "^3.0.0"
- external-editor "^3.0.3"
- figures "^3.0.0"
- lodash "^4.17.21"
- mute-stream "0.0.8"
- ora "^5.4.1"
- run-async "^2.4.0"
- rxjs "^7.5.5"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
- through "^2.3.6"
- wrap-ansi "^7.0.0"
-
-inquirer@8.2.5:
- version "8.2.5"
- resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8"
- integrity sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==
- dependencies:
- ansi-escapes "^4.2.1"
- chalk "^4.1.1"
- cli-cursor "^3.1.0"
- cli-width "^3.0.0"
- external-editor "^3.0.3"
- figures "^3.0.0"
- lodash "^4.17.21"
- mute-stream "0.0.8"
- ora "^5.4.1"
- run-async "^2.4.0"
- rxjs "^7.5.5"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
- through "^2.3.6"
- wrap-ansi "^7.0.0"
-
-interpret@^1.0.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
- integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
-
-ip-address@^9.0.5:
- version "9.0.5"
- resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a"
- integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==
- dependencies:
- jsbn "1.1.0"
- sprintf-js "^1.1.3"
-
-ipaddr.js@1.9.1:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
- integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
+ipaddr.js@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz"
+ integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
is-arrayish@^0.2.1:
version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
-is-binary-path@~2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
- integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+is-core-module@^2.16.0:
+ version "2.16.1"
+ resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz"
+ integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
dependencies:
- binary-extensions "^2.0.0"
-
-is-core-module@^2.13.0, is-core-module@^2.9.0:
- version "2.13.1"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384"
- integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
- dependencies:
- hasown "^2.0.0"
+ hasown "^2.0.2"
is-extglob@^2.1.1:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
is-generator-fn@^2.0.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
+ resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz"
integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
-is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
version "4.0.3"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
is-extglob "^2.1.1"
is-interactive@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
+ resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz"
integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==
is-number@^7.0.0:
version "7.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
is-path-inside@^3.0.3:
version "3.0.3"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
+ resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz"
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
is-stream@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
+ resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz"
integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
is-unicode-supported@^0.1.0:
version "0.1.0"
- resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
+ resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz"
integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
isexe@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0:
version "3.2.0"
- resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3"
+ resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz"
integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==
istanbul-lib-instrument@^5.0.4:
version "5.2.1"
- resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d"
+ resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz"
integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==
dependencies:
"@babel/core" "^7.12.3"
@@ -4204,7 +3377,7 @@ istanbul-lib-instrument@^5.0.4:
istanbul-lib-instrument@^6.0.0:
version "6.0.2"
- resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz#91655936cf7380e4e473383081e38478b69993b1"
+ resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz"
integrity sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==
dependencies:
"@babel/core" "^7.23.9"
@@ -4215,7 +3388,7 @@ istanbul-lib-instrument@^6.0.0:
istanbul-lib-report@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6"
+ resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz"
integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==
dependencies:
istanbul-lib-coverage "^3.0.0"
@@ -4224,7 +3397,7 @@ istanbul-lib-report@^3.0.0:
istanbul-lib-source-maps@^4.0.0:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551"
+ resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz"
integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==
dependencies:
debug "^4.1.1"
@@ -4233,7 +3406,7 @@ istanbul-lib-source-maps@^4.0.0:
istanbul-reports@^3.1.3:
version "3.1.5"
- resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae"
+ resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz"
integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==
dependencies:
html-escaper "^2.0.0"
@@ -4241,12 +3414,19 @@ istanbul-reports@^3.1.3:
iterare@1.2.1:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/iterare/-/iterare-1.2.1.tgz#139c400ff7363690e33abffa33cbba8920f00042"
+ resolved "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz"
integrity sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==
+jackspeak@^4.0.1:
+ version "4.1.1"
+ resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz"
+ integrity sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==
+ dependencies:
+ "@isaacs/cliui" "^8.0.2"
+
jest-changed-files@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a"
+ resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz"
integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==
dependencies:
execa "^5.0.0"
@@ -4255,7 +3435,7 @@ jest-changed-files@^29.7.0:
jest-circus@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a"
+ resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz"
integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==
dependencies:
"@jest/environment" "^29.7.0"
@@ -4281,7 +3461,7 @@ jest-circus@^29.7.0:
jest-cli@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995"
+ resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz"
integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==
dependencies:
"@jest/core" "^29.7.0"
@@ -4298,7 +3478,7 @@ jest-cli@^29.7.0:
jest-config@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f"
+ resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz"
integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==
dependencies:
"@babel/core" "^7.11.6"
@@ -4324,19 +3504,9 @@ jest-config@^29.7.0:
slash "^3.0.0"
strip-json-comments "^3.1.1"
-jest-diff@^29.5.0:
- version "29.5.0"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63"
- integrity sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==
- dependencies:
- chalk "^4.0.0"
- diff-sequences "^29.4.3"
- jest-get-type "^29.4.3"
- pretty-format "^29.5.0"
-
jest-diff@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a"
+ resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz"
integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==
dependencies:
chalk "^4.0.0"
@@ -4346,14 +3516,14 @@ jest-diff@^29.7.0:
jest-docblock@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a"
+ resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz"
integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==
dependencies:
detect-newline "^3.0.0"
jest-each@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1"
+ resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz"
integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==
dependencies:
"@jest/types" "^29.6.3"
@@ -4364,7 +3534,7 @@ jest-each@^29.7.0:
jest-environment-node@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376"
+ resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz"
integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==
dependencies:
"@jest/environment" "^29.7.0"
@@ -4374,19 +3544,14 @@ jest-environment-node@^29.7.0:
jest-mock "^29.7.0"
jest-util "^29.7.0"
-jest-get-type@^29.4.3:
- version "29.4.3"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5"
- integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==
-
jest-get-type@^29.6.3:
version "29.6.3"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1"
+ resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz"
integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==
jest-haste-map@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104"
+ resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz"
integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==
dependencies:
"@jest/types" "^29.6.3"
@@ -4405,25 +3570,15 @@ jest-haste-map@^29.7.0:
jest-leak-detector@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728"
+ resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz"
integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==
dependencies:
jest-get-type "^29.6.3"
pretty-format "^29.7.0"
-jest-matcher-utils@^29.5.0:
- version "29.5.0"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz#d957af7f8c0692c5453666705621ad4abc2c59c5"
- integrity sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==
- dependencies:
- chalk "^4.0.0"
- jest-diff "^29.5.0"
- jest-get-type "^29.4.3"
- pretty-format "^29.5.0"
-
jest-matcher-utils@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12"
+ resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz"
integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==
dependencies:
chalk "^4.0.0"
@@ -4431,24 +3586,9 @@ jest-matcher-utils@^29.7.0:
jest-get-type "^29.6.3"
pretty-format "^29.7.0"
-jest-message-util@^29.5.0:
- version "29.5.0"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e"
- integrity sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==
- dependencies:
- "@babel/code-frame" "^7.12.13"
- "@jest/types" "^29.5.0"
- "@types/stack-utils" "^2.0.0"
- chalk "^4.0.0"
- graceful-fs "^4.2.9"
- micromatch "^4.0.4"
- pretty-format "^29.5.0"
- slash "^3.0.0"
- stack-utils "^2.0.3"
-
jest-message-util@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3"
+ resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz"
integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==
dependencies:
"@babel/code-frame" "^7.12.13"
@@ -4463,7 +3603,7 @@ jest-message-util@^29.7.0:
jest-mock@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347"
+ resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz"
integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==
dependencies:
"@jest/types" "^29.6.3"
@@ -4472,17 +3612,17 @@ jest-mock@^29.7.0:
jest-pnp-resolver@^1.2.2:
version "1.2.3"
- resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e"
+ resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz"
integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==
jest-regex-util@^29.6.3:
version "29.6.3"
- resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52"
+ resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz"
integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==
jest-resolve-dependencies@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428"
+ resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz"
integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==
dependencies:
jest-regex-util "^29.6.3"
@@ -4490,7 +3630,7 @@ jest-resolve-dependencies@^29.7.0:
jest-resolve@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30"
+ resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz"
integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==
dependencies:
chalk "^4.0.0"
@@ -4505,7 +3645,7 @@ jest-resolve@^29.7.0:
jest-runner@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e"
+ resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz"
integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==
dependencies:
"@jest/console" "^29.7.0"
@@ -4532,7 +3672,7 @@ jest-runner@^29.7.0:
jest-runtime@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817"
+ resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz"
integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==
dependencies:
"@jest/environment" "^29.7.0"
@@ -4560,7 +3700,7 @@ jest-runtime@^29.7.0:
jest-snapshot@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5"
+ resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz"
integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==
dependencies:
"@babel/core" "^7.11.6"
@@ -4584,21 +3724,9 @@ jest-snapshot@^29.7.0:
pretty-format "^29.7.0"
semver "^7.5.3"
-jest-util@^29.0.0, jest-util@^29.5.0:
- version "29.5.0"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f"
- integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==
- dependencies:
- "@jest/types" "^29.5.0"
- "@types/node" "*"
- chalk "^4.0.0"
- ci-info "^3.2.0"
- graceful-fs "^4.2.9"
- picomatch "^2.2.3"
-
-jest-util@^29.7.0:
+jest-util@^29.0.0, jest-util@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc"
+ resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz"
integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==
dependencies:
"@jest/types" "^29.6.3"
@@ -4610,7 +3738,7 @@ jest-util@^29.7.0:
jest-validate@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c"
+ resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz"
integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==
dependencies:
"@jest/types" "^29.6.3"
@@ -4622,7 +3750,7 @@ jest-validate@^29.7.0:
jest-watcher@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2"
+ resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz"
integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==
dependencies:
"@jest/test-result" "^29.7.0"
@@ -4636,7 +3764,7 @@ jest-watcher@^29.7.0:
jest-worker@^27.4.5:
version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0"
+ resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz"
integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==
dependencies:
"@types/node" "*"
@@ -4645,7 +3773,7 @@ jest-worker@^27.4.5:
jest-worker@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a"
+ resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz"
integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==
dependencies:
"@types/node" "*"
@@ -4655,7 +3783,7 @@ jest-worker@^29.7.0:
jest@29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613"
+ resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz"
integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==
dependencies:
"@jest/core" "^29.7.0"
@@ -4665,98 +3793,92 @@ jest@29.7.0:
js-tokens@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+js-yaml@4.1.0, js-yaml@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+ dependencies:
+ argparse "^2.0.1"
+
js-yaml@^3.13.1:
version "3.14.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+ resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz"
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
-js-yaml@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
- integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
- dependencies:
- argparse "^2.0.1"
-
-jsbn@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040"
- integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==
-
jsesc@^2.5.1:
version "2.5.2"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz"
integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
json-buffer@3.0.1:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
+ resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz"
integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1:
version "2.3.1"
- resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
-json-schema-ref-resolver@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz#6586f483b76254784fc1d2120f717bdc9f0a99bf"
- integrity sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==
+json-schema-ref-resolver@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-2.0.1.tgz"
+ integrity sha512-HG0SIB9X4J8bwbxCbnd5FfPEbcXAJYTi1pBJeP/QPON+w8ovSME8iRG+ElHNxZNX2Qh6eYn1GdzJFS4cDFfx0Q==
dependencies:
- fast-deep-equal "^3.1.3"
+ dequal "^2.0.3"
+
+json-schema-resolver@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/json-schema-resolver/-/json-schema-resolver-3.0.0.tgz"
+ integrity sha512-HqMnbz0tz2DaEJ3ntsqtx3ezzZyDE7G56A/pPY/NGmrPu76UzsWquOpHFRAf5beTNXoH2LU5cQePVvRli1nchA==
+ dependencies:
+ debug "^4.1.1"
+ fast-uri "^3.0.5"
+ rfdc "^1.1.4"
json-schema-traverse@^0.4.1:
version "0.4.1"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
json-schema-traverse@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
+ resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz"
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
json5@^2.2.2, json5@^2.2.3:
version "2.2.3"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz"
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
-jsonc-parser@3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
- integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
+jsonc-parser@3.3.1:
+ version "3.3.1"
+ resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz"
+ integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==
jsonfile@^6.0.1:
version "6.1.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+ resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz"
integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
dependencies:
universalify "^2.0.0"
optionalDependencies:
graceful-fs "^4.1.6"
-jsonwebtoken@9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d"
- integrity sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==
- dependencies:
- jws "^3.2.2"
- lodash "^4.17.21"
- ms "^2.1.1"
- semver "^7.3.8"
-
-jsonwebtoken@^9.0.0:
+jsonwebtoken@9.0.2, jsonwebtoken@^9.0.0:
version "9.0.2"
- resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3"
+ resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz"
integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==
dependencies:
jws "^3.2.2"
@@ -4772,7 +3894,7 @@ jsonwebtoken@^9.0.0:
jwa@^1.4.1:
version "1.4.1"
- resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a"
+ resolved "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz"
integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==
dependencies:
buffer-equal-constant-time "1.0.1"
@@ -4781,7 +3903,7 @@ jwa@^1.4.1:
jws@^3.2.2:
version "3.2.2"
- resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304"
+ resolved "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz"
integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==
dependencies:
jwa "^1.4.1"
@@ -4789,24 +3911,24 @@ jws@^3.2.2:
keyv@^4.5.3:
version "4.5.4"
- resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
+ resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz"
integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
dependencies:
json-buffer "3.0.1"
kleur@^3.0.3:
version "3.0.3"
- resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
+ resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz"
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
leven@^3.1.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
+ resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz"
integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
levn@^0.4.1:
version "0.4.1"
- resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+ resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz"
integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
dependencies:
prelude-ls "^1.2.1"
@@ -4814,270 +3936,261 @@ levn@^0.4.1:
libphonenumber-js@^1.10.53:
version "1.10.57"
- resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.10.57.tgz#4a8174014c758b8ffd865e06a43c3885706f7a9c"
+ resolved "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.57.tgz"
integrity sha512-OjsEd9y4LgcX+Ig09SbxWqcGESxliDDFNVepFhB9KEsQZTrnk3UdEU+cO0sW1APvLprHstQpS23OQpZ3bwxy6Q==
-light-my-request@5.9.1:
- version "5.9.1"
- resolved "https://registry.yarnpkg.com/light-my-request/-/light-my-request-5.9.1.tgz#076f8d4cc4639408cc48381d4f2860212d469d4b"
- integrity sha512-UT7pUk8jNCR1wR7w3iWfIjx32DiB2f3hFdQSOwy3/EPQ3n3VocyipUxcyRZR0ahoev+fky69uA+GejPa9KuHKg==
- dependencies:
- cookie "^0.5.0"
- process-warning "^2.0.0"
- set-cookie-parser "^2.4.1"
-
-light-my-request@^5.6.1, light-my-request@^5.9.1:
- version "5.11.1"
- resolved "https://registry.yarnpkg.com/light-my-request/-/light-my-request-5.11.1.tgz#9bbb993039ff5ccdcdcff359c39892a3fac9bdcd"
- integrity sha512-KXAh2m6VRlkWCk2KfmHE7tLBXKh30JE0tXUJY4dNxje4oLmPKUqlUfImiEQZLphx+Z9KTQcVv4DjGnJxkVOIbA==
+light-my-request@6.6.0, light-my-request@^6.0.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/light-my-request/-/light-my-request-6.6.0.tgz"
+ integrity sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==
dependencies:
- cookie "^0.6.0"
- process-warning "^2.0.0"
- set-cookie-parser "^2.4.1"
+ cookie "^1.0.1"
+ process-warning "^4.0.0"
+ set-cookie-parser "^2.6.0"
lines-and-columns@^1.1.6:
version "1.2.4"
- resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
+ resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+load-esm@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/load-esm/-/load-esm-1.0.2.tgz"
+ integrity sha512-nVAvWk/jeyrWyXEAs84mpQCYccxRqgKY4OznLuJhJCa0XsPSfdOIr2zvBZEj3IHEHbX97jjscKRRV539bW0Gpw==
+
loader-runner@^4.2.0:
version "4.3.0"
- resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1"
+ resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz"
integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==
locate-path@^5.0.0:
version "5.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz"
integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
dependencies:
p-locate "^4.1.0"
locate-path@^6.0.0:
version "6.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+ resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz"
integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
dependencies:
p-locate "^5.0.0"
lodash.camelcase@^4.3.0:
version "4.3.0"
- resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz"
integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==
lodash.includes@^4.3.0:
version "4.3.0"
- resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f"
+ resolved "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz"
integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==
lodash.isboolean@^3.0.3:
version "3.0.3"
- resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6"
+ resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz"
integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==
lodash.isinteger@^4.0.4:
version "4.0.4"
- resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343"
+ resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz"
integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==
lodash.isnumber@^3.0.3:
version "3.0.3"
- resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc"
+ resolved "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz"
integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==
lodash.isplainobject@^4.0.6:
version "4.0.6"
- resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
+ resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz"
integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==
lodash.isstring@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
+ resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz"
integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==
lodash.memoize@4.x:
version "4.1.2"
- resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+ resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz"
integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==
lodash.merge@^4.6.2:
version "4.6.2"
- resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
lodash.once@^4.0.0:
version "4.1.1"
- resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
+ resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz"
integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==
lodash@4.17.21, lodash@^4.17.21:
version "4.17.21"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
log-symbols@^4.1.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
+ resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz"
integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
dependencies:
chalk "^4.1.0"
is-unicode-supported "^0.1.0"
long@^5.0.0:
- version "5.2.3"
- resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1"
- integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==
+ version "5.3.2"
+ resolved "https://registry.npmjs.org/long/-/long-5.3.2.tgz"
+ integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==
+
+lru-cache@^11.0.0:
+ version "11.1.0"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz"
+ integrity sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==
lru-cache@^5.1.1:
version "5.1.1"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz"
integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
dependencies:
yallist "^3.0.2"
lru-cache@^6.0.0:
version "6.0.0"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
dependencies:
yallist "^4.0.0"
-"lru-cache@^9.1.1 || ^10.0.0":
- version "10.2.0"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3"
- integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==
-
-macos-release@^2.5.0:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.5.1.tgz#bccac4a8f7b93163a8d163b8ebf385b3c5f55bf9"
- integrity sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==
-
-magic-string@0.30.0:
- version "0.30.0"
- resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.0.tgz#fd58a4748c5c4547338a424e90fa5dd17f4de529"
- integrity sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==
+magic-string@0.30.17:
+ version "0.30.17"
+ resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz"
+ integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==
dependencies:
- "@jridgewell/sourcemap-codec" "^1.4.13"
+ "@jridgewell/sourcemap-codec" "^1.5.0"
make-dir@^3.0.0, make-dir@^3.1.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
+ resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz"
integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
dependencies:
semver "^6.0.0"
make-error@1.x, make-error@^1.1.1:
version "1.3.6"
- resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
+ resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz"
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
makeerror@1.0.12:
version "1.0.12"
- resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a"
+ resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz"
integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==
dependencies:
tmpl "1.0.5"
memfs@^3.4.1:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6"
- integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ==
+ version "3.5.3"
+ resolved "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz"
+ integrity sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==
dependencies:
fs-monkey "^1.0.4"
memory-pager@^1.0.2:
version "1.5.0"
- resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5"
+ resolved "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz"
integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==
merge-stream@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+ resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz"
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
merge2@^1.3.0, merge2@^1.4.1:
version "1.4.1"
- resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
methods@^1.1.2:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+ resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz"
integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
micromatch@^4.0.0, micromatch@^4.0.4:
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
- integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+ version "4.0.8"
+ resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz"
+ integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
dependencies:
- braces "^3.0.2"
+ braces "^3.0.3"
picomatch "^2.3.1"
mime-db@1.52.0:
version "1.52.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
+ resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
mime-types@^2.1.12, mime-types@^2.1.27:
version "2.1.35"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
+ resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
mime@2.6.0:
version "2.6.0"
- resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367"
+ resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz"
integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==
+mime@^3:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz"
+ integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==
+
mimic-fn@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+minimatch@^10.0.0:
+ version "10.0.3"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz"
+ integrity sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==
+ dependencies:
+ "@isaacs/brace-expansion" "^5.0.0"
+
minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
-minimatch@^8.0.2:
- version "8.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229"
- integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==
- dependencies:
- brace-expansion "^2.0.1"
-
minimist@^1.2.5, minimist@^1.2.6:
version "1.2.8"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
+ resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
minipass@^3.0.0:
version "3.3.6"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a"
+ resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz"
integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==
dependencies:
yallist "^4.0.0"
-minipass@^4.0.0:
- version "4.2.5"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.5.tgz#9e0e5256f1e3513f8c34691dd68549e85b2c8ceb"
- integrity sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==
-
-minipass@^4.2.4:
- version "4.2.8"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a"
- integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==
+minipass@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz"
+ integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
-"minipass@^5.0.0 || ^6.0.2 || ^7.0.0":
- version "7.0.4"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c"
- integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==
+minipass@^7.1.2:
+ version "7.1.2"
+ resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz"
+ integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
minizlib@^2.1.1:
version "2.1.2"
- resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
+ resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz"
integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
dependencies:
minipass "^3.0.0"
@@ -5085,167 +4198,126 @@ minizlib@^2.1.1:
mkdirp@^1.0.3:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
+ resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-mnemonist@0.39.5:
- version "0.39.5"
- resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.39.5.tgz#5850d9b30d1b2bc57cc8787e5caa40f6c3420477"
- integrity sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==
- dependencies:
- obliterator "^2.0.1"
-
-mongodb-connection-string-url@^2.5.4:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz#57901bf352372abdde812c81be47b75c6b2ec5cf"
- integrity sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==
- dependencies:
- "@types/whatwg-url" "^8.2.1"
- whatwg-url "^11.0.0"
-
mongodb-connection-string-url@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz#b4f87f92fd8593f3b9365f592515a06d304a1e9c"
+ resolved "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz"
integrity sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==
dependencies:
"@types/whatwg-url" "^11.0.2"
whatwg-url "^13.0.0"
-mongodb@^4.10.0:
- version "4.14.0"
- resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-4.14.0.tgz#3a21ca602069b2494b7066a7709056c8cece6bf6"
- integrity sha512-coGKkWXIBczZPr284tYKFLg+KbGPPLlSbdgfKAb6QqCFt5bo5VFZ50O3FFzsw4rnkqjwT6D8Qcoo9nshYKM7Mg==
- dependencies:
- bson "^4.7.0"
- mongodb-connection-string-url "^2.5.4"
- socks "^2.7.1"
- optionalDependencies:
- "@aws-sdk/credential-providers" "^3.186.0"
- saslprep "^1.0.3"
-
mongodb@^6.3.0:
version "6.3.0"
- resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-6.3.0.tgz#ec9993b19f7ed2ea715b903fcac6171c9d1d38ca"
+ resolved "https://registry.npmjs.org/mongodb/-/mongodb-6.3.0.tgz"
integrity sha512-tt0KuGjGtLUhLoU263+xvQmPHEGTw5LbcNC73EoFRYgSHwZt5tsoJC110hDyO1kjQzpgNrpdcSza9PknWN4LrA==
dependencies:
"@mongodb-js/saslprep" "^1.1.0"
bson "^6.2.0"
mongodb-connection-string-url "^3.0.0"
-ms@2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
- integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-
-ms@^2.1.1:
+ms@^2.1.1, ms@^2.1.3:
version "2.1.3"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-mute-stream@0.0.8:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
- integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
-
-nats@^2.10.2:
- version "2.13.1"
- resolved "https://registry.yarnpkg.com/nats/-/nats-2.13.1.tgz#05e3e8d617890f97f4dfd2931a8edca3b9cc5e63"
- integrity sha512-lHV/DQREZVHXtavlAI5fFA7XDyN2/LNBtnNX76mPQV9BIKpTehzYrD1Hw7t/1mV4AGdrJj6U60JkQ8AMrVc6Mg==
- dependencies:
- nkeys.js "1.0.5"
+mute-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz"
+ integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==
-nats@^2.13.1:
+nats@^2.10.2, nats@^2.13.1:
version "2.19.0"
- resolved "https://registry.yarnpkg.com/nats/-/nats-2.19.0.tgz#3772b5bc4ae9506f4c686d4b86e413a6ceeb967c"
+ resolved "https://registry.npmjs.org/nats/-/nats-2.19.0.tgz"
integrity sha512-TuOAqPljCRpfHPo2o3midezchqYJUOOnK/YLmYf9rdoshzlYN1xvCd9dAKveVB6Bfubp/m63eN3l3ukfn43JOg==
dependencies:
nkeys.js "1.0.5"
natural-compare-lite@^1.4.0:
version "1.4.0"
- resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4"
+ resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz"
integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==
natural-compare@^1.4.0:
version "1.4.0"
- resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
neo-async@^2.6.0, neo-async@^2.6.2:
version "2.6.2"
- resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
+ resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
nkeys.js@1.0.5:
version "1.0.5"
- resolved "https://registry.yarnpkg.com/nkeys.js/-/nkeys.js-1.0.5.tgz#3024bde671eb33be0316ff2d5abe8b8cec960158"
+ resolved "https://registry.npmjs.org/nkeys.js/-/nkeys.js-1.0.5.tgz"
integrity sha512-u25YnRPHiGVsNzwyHnn+PT90sgAhnS8jUJ1nxmkHMFYCJ6+Ic0lv291w7uhRBpJVJ3PH2GWbYqA151lGCRrB5g==
dependencies:
tweetnacl "1.0.3"
node-abort-controller@^3.0.1:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548"
+ resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz"
integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==
-node-addon-api@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762"
- integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==
+node-addon-api@^8.3.0:
+ version "8.4.0"
+ resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.4.0.tgz"
+ integrity sha512-D9DI/gXHvVmjHS08SVch0Em8G5S1P+QWtU31appcKT/8wFSPRcdHadIFSAntdMMVM5zz+/DL+bL/gz3UDppqtg==
node-emoji@1.11.0:
version "1.11.0"
- resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c"
+ resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz"
integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==
dependencies:
lodash "^4.17.21"
-node-fetch@^2.6.1:
- version "2.7.0"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
- integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
- dependencies:
- whatwg-url "^5.0.0"
-
node-fetch@^2.6.7:
version "2.6.9"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6"
+ resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz"
integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==
dependencies:
whatwg-url "^5.0.0"
+node-gyp-build@^4.8.4:
+ version "4.8.4"
+ resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz"
+ integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==
+
node-int64@^0.4.0:
version "0.4.0"
- resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
+ resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz"
integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==
-node-releases@^2.0.14, node-releases@^2.0.8:
- version "2.0.14"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b"
- integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
+node-releases@^2.0.19:
+ version "2.0.19"
+ resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz"
+ integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==
nopt@^5.0.0:
version "5.0.0"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88"
+ resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz"
integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==
dependencies:
abbrev "1"
-normalize-path@^3.0.0, normalize-path@~3.0.0:
+normalize-path@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-npm-run-path@^4.0.0, npm-run-path@^4.0.1:
+npm-run-path@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
+ resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz"
integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
dependencies:
path-key "^3.0.0"
npmlog@^5.0.1:
version "5.0.1"
- resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0"
+ resolved "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz"
integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==
dependencies:
are-we-there-yet "^2.0.0"
@@ -5255,41 +4327,41 @@ npmlog@^5.0.1:
object-assign@^4.1.1:
version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
object-inspect@^1.13.1:
version "1.13.1"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2"
+ resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz"
integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
-obliterator@^2.0.1:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816"
- integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==
-
on-exit-leak-free@^2.1.0:
version "2.1.2"
- resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8"
+ resolved "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz"
integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==
-once@^1.3.0, once@^1.3.1, once@^1.4.0:
+once@^1.3.0, once@^1.4.0:
version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
wrappy "1"
onetime@^5.1.0, onetime@^5.1.2:
version "5.1.2"
- resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
+ resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz"
integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
dependencies:
mimic-fn "^2.1.0"
+openapi-types@^12.1.3:
+ version "12.1.3"
+ resolved "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz"
+ integrity sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==
+
optionator@^0.9.3:
version "0.9.3"
- resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64"
+ resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz"
integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==
dependencies:
"@aashutoshrathi/word-wrap" "^1.2.3"
@@ -5299,9 +4371,9 @@ optionator@^0.9.3:
prelude-ls "^1.2.1"
type-check "^0.4.0"
-ora@5.4.1, ora@^5.4.1:
+ora@5.4.1:
version "5.4.1"
- resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18"
+ resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz"
integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==
dependencies:
bl "^4.1.0"
@@ -5314,67 +4386,59 @@ ora@5.4.1, ora@^5.4.1:
strip-ansi "^6.0.0"
wcwidth "^1.0.1"
-os-name@4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/os-name/-/os-name-4.0.1.tgz#32cee7823de85a8897647ba4d76db46bf845e555"
- integrity sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==
- dependencies:
- macos-release "^2.5.0"
- windows-release "^4.0.0"
-
os-tmpdir@~1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"
integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
p-limit@^2.2.0:
version "2.3.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
dependencies:
p-try "^2.0.0"
p-limit@^3.0.2, p-limit@^3.1.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
dependencies:
yocto-queue "^0.1.0"
p-locate@^4.1.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz"
integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
dependencies:
p-limit "^2.2.0"
p-locate@^5.0.0:
version "5.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
+ resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"
integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
dependencies:
p-limit "^3.0.2"
p-try@^2.0.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
-packet-reader@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74"
- integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==
+package-json-from-dist@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz"
+ integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==
parent-module@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
dependencies:
callsites "^3.0.0"
-parse-json@^5.0.0, parse-json@^5.2.0:
+parse-json@^5.2.0:
version "5.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz"
integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
dependencies:
"@babel/code-frame" "^7.0.0"
@@ -5384,7 +4448,7 @@ parse-json@^5.0.0, parse-json@^5.2.0:
passport-jwt@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/passport-jwt/-/passport-jwt-4.0.1.tgz#c443795eff322c38d173faa0a3c481479646ec3d"
+ resolved "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.1.tgz"
integrity sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==
dependencies:
jsonwebtoken "^9.0.0"
@@ -5392,19 +4456,19 @@ passport-jwt@^4.0.1:
passport-local@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/passport-local/-/passport-local-1.0.0.tgz#1fe63268c92e75606626437e3b906662c15ba6ee"
+ resolved "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz"
integrity sha512-9wCE6qKznvf9mQYYbgJ3sVOHmCWoUNMVFoZzNoznmISbhnNNPhN9xfY3sLmScHMetEJeoY7CXwfhCe7argfQow==
dependencies:
passport-strategy "1.x.x"
passport-strategy@1.x.x, passport-strategy@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4"
+ resolved "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz"
integrity sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==
passport@^0.6.0:
version "0.6.0"
- resolved "https://registry.yarnpkg.com/passport/-/passport-0.6.0.tgz#e869579fab465b5c0b291e841e6cc95c005fac9d"
+ resolved "https://registry.npmjs.org/passport/-/passport-0.6.0.tgz"
integrity sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug==
dependencies:
passport-strategy "1.x.x"
@@ -5413,75 +4477,75 @@ passport@^0.6.0:
path-exists@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
path-is-absolute@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
path-key@^3.0.0, path-key@^3.1.0:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
path-parse@^1.0.7:
version "1.0.7"
- resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
-path-scurry@^1.6.1:
- version "1.10.1"
- resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698"
- integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==
+path-scurry@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz"
+ integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==
dependencies:
- lru-cache "^9.1.1 || ^10.0.0"
- minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
-
-path-to-regexp@3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-3.2.0.tgz#fa7877ecbc495c601907562222453c43cc204a5f"
- integrity sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==
+ lru-cache "^11.0.0"
+ minipass "^7.1.2"
-path-to-regexp@^6.1.0:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5"
- integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==
+path-to-regexp@8.2.0, path-to-regexp@^8.1.0:
+ version "8.2.0"
+ resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz"
+ integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==
path-type@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
pause@0.0.1:
version "0.0.1"
- resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d"
+ resolved "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz"
integrity sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==
-pg-connection-string@^2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.5.0.tgz#538cadd0f7e603fc09a12590f3b8a452c2c0cf34"
- integrity sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==
+pg-cloudflare@^1.2.6:
+ version "1.2.6"
+ resolved "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.6.tgz"
+ integrity sha512-uxmJAnmIgmYgnSFzgOf2cqGQBzwnRYcrEgXuFjJNEkpedEIPBSEzxY7ph4uA9k1mI+l/GR0HjPNS6FKNZe8SBQ==
+
+pg-connection-string@^2.9.1:
+ version "2.9.1"
+ resolved "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.1.tgz"
+ integrity sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==
pg-int8@1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c"
+ resolved "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz"
integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==
-pg-pool@^3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.0.tgz#3190df3e4747a0d23e5e9e8045bcd99bda0a712e"
- integrity sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==
+pg-pool@^3.10.1:
+ version "3.10.1"
+ resolved "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.1.tgz"
+ integrity sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==
-pg-protocol@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833"
- integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==
+pg-protocol@^1.10.2:
+ version "1.10.2"
+ resolved "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.2.tgz"
+ integrity sha512-Ci7jy8PbaWxfsck2dwZdERcDG2A0MG8JoQILs+uZNjABFuBuItAZCWUNz8sXRDMoui24rJw7WlXqgpMdBSN/vQ==
-pg-types@^2.1.0:
+pg-types@2.2.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3"
+ resolved "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz"
integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==
dependencies:
pg-int8 "1.0.1"
@@ -5490,167 +4554,157 @@ pg-types@^2.1.0:
postgres-date "~1.0.4"
postgres-interval "^1.1.0"
-pg@^8.10.0:
- version "8.10.0"
- resolved "https://registry.yarnpkg.com/pg/-/pg-8.10.0.tgz#5b8379c9b4a36451d110fc8cd98fc325fe62ad24"
- integrity sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ==
- dependencies:
- buffer-writer "2.0.0"
- packet-reader "1.0.0"
- pg-connection-string "^2.5.0"
- pg-pool "^3.6.0"
- pg-protocol "^1.6.0"
- pg-types "^2.1.0"
- pgpass "1.x"
-
-pgpass@1.x:
+pg@^8.16.2:
+ version "8.16.2"
+ resolved "https://registry.npmjs.org/pg/-/pg-8.16.2.tgz"
+ integrity sha512-OtLWF0mKLmpxelOt9BqVq83QV6bTfsS0XLegIeAKqKjurRnRKie1Dc1iL89MugmSLhftxw6NNCyZhm1yQFLMEQ==
+ dependencies:
+ pg-connection-string "^2.9.1"
+ pg-pool "^3.10.1"
+ pg-protocol "^1.10.2"
+ pg-types "2.2.0"
+ pgpass "1.0.5"
+ optionalDependencies:
+ pg-cloudflare "^1.2.6"
+
+pgpass@1.0.5:
version "1.0.5"
- resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d"
+ resolved "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz"
integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==
dependencies:
split2 "^4.1.0"
-picocolors@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
- integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+picocolors@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz"
+ integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
+
+picomatch@4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz"
+ integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
-picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1:
+picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1:
version "2.3.1"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-pino-abstract-transport@v1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz#083d98f966262164504afb989bccd05f665937a8"
- integrity sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==
+pino-abstract-transport@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz"
+ integrity sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==
dependencies:
- readable-stream "^4.0.0"
split2 "^4.0.0"
-pino-std-serializers@^6.0.0:
- version "6.2.2"
- resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz#d9a9b5f2b9a402486a5fc4db0a737570a860aab3"
- integrity sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==
+pino-std-serializers@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz"
+ integrity sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==
-pino@^8.12.0, pino@^8.5.0:
- version "8.19.0"
- resolved "https://registry.yarnpkg.com/pino/-/pino-8.19.0.tgz#ccc15ef736f103ec02cfbead0912bc436dc92ce4"
- integrity sha512-oswmokxkav9bADfJ2ifrvfHUwad6MLp73Uat0IkQWY3iAw5xTRoznXbXksZs8oaOUMpmhVWD+PZogNzllWpJaA==
+pino@^9.0.0:
+ version "9.7.0"
+ resolved "https://registry.npmjs.org/pino/-/pino-9.7.0.tgz"
+ integrity sha512-vnMCM6xZTb1WDmLvtG2lE/2p+t9hDEIvTWJsu6FejkE62vB7gDhvzrpFR4Cw2to+9JNQxVnkAKVPA1KPB98vWg==
dependencies:
atomic-sleep "^1.0.0"
fast-redact "^3.1.1"
on-exit-leak-free "^2.1.0"
- pino-abstract-transport v1.1.0
- pino-std-serializers "^6.0.0"
- process-warning "^3.0.0"
+ pino-abstract-transport "^2.0.0"
+ pino-std-serializers "^7.0.0"
+ process-warning "^5.0.0"
quick-format-unescaped "^4.0.3"
real-require "^0.2.0"
safe-stable-stringify "^2.3.1"
- sonic-boom "^3.7.0"
- thread-stream "^2.0.0"
+ sonic-boom "^4.0.1"
+ thread-stream "^3.0.0"
pirates@^4.0.4:
version "4.0.5"
- resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b"
+ resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz"
integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==
pkg-dir@^4.2.0:
version "4.2.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
+ resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz"
integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
dependencies:
find-up "^4.0.0"
pluralize@8.0.0:
version "8.0.0"
- resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1"
+ resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz"
integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==
postgres-array@~2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e"
+ resolved "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz"
integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==
postgres-bytea@~1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35"
+ resolved "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz"
integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==
postgres-date@~1.0.4:
version "1.0.7"
- resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8"
+ resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz"
integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==
postgres-interval@^1.1.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695"
+ resolved "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz"
integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==
dependencies:
xtend "^4.0.0"
prelude-ls@^1.2.1:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+ resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
prettier-linter-helpers@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
+ resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz"
integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
dependencies:
fast-diff "^1.1.2"
prettier@^2.3.2:
version "2.8.8"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da"
+ resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz"
integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
-pretty-format@^29.0.0, pretty-format@^29.5.0:
- version "29.5.0"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.5.0.tgz#283134e74f70e2e3e7229336de0e4fce94ccde5a"
- integrity sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==
- dependencies:
- "@jest/schemas" "^29.4.3"
- ansi-styles "^5.0.0"
- react-is "^18.0.0"
-
-pretty-format@^29.7.0:
+pretty-format@^29.0.0, pretty-format@^29.7.0:
version "29.7.0"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812"
+ resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz"
integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==
dependencies:
"@jest/schemas" "^29.6.3"
ansi-styles "^5.0.0"
react-is "^18.0.0"
-process-warning@^2.0.0, process-warning@^2.2.0:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-2.3.2.tgz#70d8a3251aab0eafe3a595d8ae2c5d2277f096a5"
- integrity sha512-n9wh8tvBe5sFmsqlg+XQhaQLumwpqoAUruLwjCopgTmUBjJ/fjtBsJzKleCaIGBOMXYEhp1YfKl4d7rJ5ZKJGA==
-
-process-warning@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-3.0.0.tgz#96e5b88884187a1dce6f5c3166d611132058710b"
- integrity sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==
+process-warning@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz"
+ integrity sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==
-process@^0.11.10:
- version "0.11.10"
- resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
- integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
+process-warning@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz"
+ integrity sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==
prompts@^2.0.1:
version "2.4.2"
- resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
+ resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz"
integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==
dependencies:
kleur "^3.0.3"
sisteransi "^1.0.5"
-protobufjs@^7.2.4:
- version "7.2.6"
- resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215"
- integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==
+protobufjs@^7.2.5:
+ version "7.5.3"
+ resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.3.tgz"
+ integrity sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==
dependencies:
"@protobufjs/aspromise" "^1.1.2"
"@protobufjs/base64" "^1.1.2"
@@ -5667,294 +4721,240 @@ protobufjs@^7.2.4:
protoc-gen-ts@^0.8.6:
version "0.8.7"
- resolved "https://registry.yarnpkg.com/protoc-gen-ts/-/protoc-gen-ts-0.8.7.tgz#63e4d9af2ad30b753acf6f739323d01fc9f80b52"
+ resolved "https://registry.npmjs.org/protoc-gen-ts/-/protoc-gen-ts-0.8.7.tgz"
integrity sha512-jr4VJey2J9LVYCV7EVyVe53g1VMw28cCmYJhBe5e3YX5wiyiDwgxWxeDf9oTqAe4P1bN/YGAkW2jhlH8LohwiQ==
-proxy-addr@^2.0.7:
- version "2.0.7"
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
- integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
- dependencies:
- forwarded "0.2.0"
- ipaddr.js "1.9.1"
-
-pump@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
- integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
- dependencies:
- end-of-stream "^1.1.0"
- once "^1.3.1"
-
-punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0:
+punycode@^2.1.0, punycode@^2.3.0:
version "2.3.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
+ resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz"
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
pure-rand@^6.0.0:
version "6.0.1"
- resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.1.tgz#31207dddd15d43f299fdcdb2f572df65030c19af"
+ resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz"
integrity sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==
qs@^6.11.0:
version "6.11.2"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9"
+ resolved "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz"
integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==
dependencies:
side-channel "^1.0.4"
queue-microtask@^1.2.2:
version "1.2.3"
- resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
quick-format-unescaped@^4.0.3:
version "4.0.4"
- resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7"
+ resolved "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz"
integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==
randombytes@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
+ resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz"
integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
dependencies:
safe-buffer "^5.1.0"
react-is@^18.0.0:
version "18.2.0"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
+ resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz"
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
readable-stream@^3.4.0, readable-stream@^3.6.0:
version "3.6.2"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
+ resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz"
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
dependencies:
inherits "^2.0.3"
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
-readable-stream@^4.0.0:
- version "4.5.2"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09"
- integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==
- dependencies:
- abort-controller "^3.0.0"
- buffer "^6.0.3"
- events "^3.3.0"
- process "^0.11.10"
- string_decoder "^1.3.0"
-
-readdirp@~3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
- integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
- dependencies:
- picomatch "^2.2.1"
+readdirp@^4.0.1:
+ version "4.1.2"
+ resolved "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz"
+ integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==
real-require@^0.2.0:
version "0.2.0"
- resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78"
+ resolved "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz"
integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==
-rechoir@^0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
- integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==
- dependencies:
- resolve "^1.1.6"
-
reflect-metadata@^0.1.13:
version "0.1.14"
- resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.14.tgz#24cf721fe60677146bb77eeb0e1f9dece3d65859"
+ resolved "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz"
integrity sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==
+repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz"
+ integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==
+
require-directory@^2.1.1:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
require-from-string@^2.0.2:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
+ resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz"
integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
resolve-cwd@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
+ resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz"
integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
dependencies:
resolve-from "^5.0.0"
resolve-from@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
resolve-from@^5.0.0:
version "5.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
+ resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz"
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
resolve.exports@^2.0.0:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800"
+ resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz"
integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==
-resolve@^1.1.6:
- version "1.22.8"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
- integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
- dependencies:
- is-core-module "^2.13.0"
- path-parse "^1.0.7"
- supports-preserve-symlinks-flag "^1.0.0"
-
resolve@^1.20.0:
- version "1.22.1"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
- integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
+ version "1.22.10"
+ resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz"
+ integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==
dependencies:
- is-core-module "^2.9.0"
+ is-core-module "^2.16.0"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
restore-cursor@^3.1.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
+ resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz"
integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
dependencies:
onetime "^5.1.0"
signal-exit "^3.0.2"
-ret@~0.2.0:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/ret/-/ret-0.2.2.tgz#b6861782a1f4762dce43402a71eb7a283f44573c"
- integrity sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==
+ret@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz"
+ integrity sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==
reusify@^1.0.4:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-rfdc@^1.2.0, rfdc@^1.3.0:
+rfdc@^1.1.4, rfdc@^1.2.0, rfdc@^1.3.1:
version "1.3.1"
- resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f"
+ resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz"
integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==
-rimraf@4.4.1:
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755"
- integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==
- dependencies:
- glob "^9.2.0"
-
rimraf@^3.0.2:
version "3.0.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
dependencies:
glob "^7.1.3"
-run-async@^2.4.0:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
- integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
-
run-parallel@^1.1.9:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"
integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
dependencies:
queue-microtask "^1.2.2"
-rxjs@7.8.1, rxjs@^7.5.5, rxjs@^7.8.0:
+rxjs@7.8.1, rxjs@^7.8.0:
version "7.8.1"
- resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543"
+ resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz"
integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==
dependencies:
tslib "^2.1.0"
-safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
+safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
version "5.2.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-safe-regex2@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/safe-regex2/-/safe-regex2-2.0.0.tgz#b287524c397c7a2994470367e0185e1916b1f5b9"
- integrity sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==
+safe-regex2@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz"
+ integrity sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==
dependencies:
- ret "~0.2.0"
+ ret "~0.5.0"
safe-stable-stringify@^2.3.1:
version "2.4.3"
- resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886"
+ resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz"
integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==
"safer-buffer@>= 2.1.2 < 3":
version "2.1.2"
- resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-saslprep@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226"
- integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==
- dependencies:
- sparse-bitfield "^3.0.3"
-
-schema-utils@^3.1.1, schema-utils@^3.1.2:
+schema-utils@^3.1.1:
version "3.3.0"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe"
+ resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"
integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
dependencies:
"@types/json-schema" "^7.0.8"
ajv "^6.12.5"
ajv-keywords "^3.5.2"
-secure-json-parse@^2.5.0:
- version "2.7.0"
- resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862"
- integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==
+schema-utils@^4.3.0:
+ version "4.3.2"
+ resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz"
+ integrity sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==
+ dependencies:
+ "@types/json-schema" "^7.0.9"
+ ajv "^8.9.0"
+ ajv-formats "^2.1.1"
+ ajv-keywords "^5.1.0"
-semver@^6.0.0, semver@^6.3.0:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
- integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+secure-json-parse@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.0.0.tgz"
+ integrity sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==
-semver@^6.3.1:
+semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
version "6.3.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
+ resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.0, semver@^7.5.3, semver@^7.5.4:
+semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0:
version "7.6.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d"
+ resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz"
integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
dependencies:
lru-cache "^6.0.0"
-serialize-javascript@^6.0.1:
+serialize-javascript@^6.0.2:
version "6.0.2"
- resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2"
+ resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz"
integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==
dependencies:
randombytes "^2.1.0"
set-blocking@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
-set-cookie-parser@^2.4.1:
+set-cookie-parser@^2.6.0:
version "2.6.0"
- resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz#131921e50f62ff1a66a461d7d62d7b21d5d15a51"
+ resolved "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz"
integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==
set-function-length@^1.2.1:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425"
+ resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz"
integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==
dependencies:
define-data-property "^1.1.2"
@@ -5964,30 +4964,26 @@ set-function-length@^1.2.1:
gopd "^1.0.1"
has-property-descriptors "^1.0.1"
+setprototypeof@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz"
+ integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
+
shebang-command@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
dependencies:
shebang-regex "^3.0.0"
shebang-regex@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-shelljs@0.8.5:
- version "0.8.5"
- resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c"
- integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==
- dependencies:
- glob "^7.0.0"
- interpret "^1.0.0"
- rechoir "^0.6.2"
-
side-channel@^1.0.4:
version "1.0.5"
- resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.5.tgz#9a84546599b48909fb6af1211708d23b1946221b"
+ resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz"
integrity sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==
dependencies:
call-bind "^1.0.6"
@@ -5997,50 +4993,42 @@ side-channel@^1.0.4:
signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7:
version "3.0.7"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
+ resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
+signal-exit@^4.0.1, signal-exit@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz"
+ integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
+
sisteransi@^1.0.5:
version "1.0.5"
- resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
+ resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz"
integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
slash@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
-smart-buffer@^4.2.0:
+sonic-boom@^4.0.1:
version "4.2.0"
- resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae"
- integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
-
-socks@^2.7.1:
- version "2.8.1"
- resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.1.tgz#22c7d9dd7882649043cba0eafb49ae144e3457af"
- integrity sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==
- dependencies:
- ip-address "^9.0.5"
- smart-buffer "^4.2.0"
-
-sonic-boom@^3.7.0:
- version "3.8.0"
- resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.8.0.tgz#e442c5c23165df897d77c3c14ef3ca40dec66a66"
- integrity sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==
+ resolved "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz"
+ integrity sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==
dependencies:
atomic-sleep "^1.0.0"
source-map-support@0.5.13:
version "0.5.13"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
+ resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz"
integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
-source-map-support@0.5.21, source-map-support@^0.5.20, source-map-support@~0.5.20:
+source-map-support@^0.5.20, source-map-support@~0.5.20:
version "0.5.21"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
+ resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz"
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
dependencies:
buffer-from "^1.0.0"
@@ -6048,102 +5036,136 @@ source-map-support@0.5.21, source-map-support@^0.5.20, source-map-support@~0.5.2
source-map@0.7.4, source-map@^0.7.4:
version "0.7.4"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz"
integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
source-map@^0.6.0, source-map@^0.6.1:
version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
sparse-bitfield@^3.0.3:
version "3.0.3"
- resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11"
+ resolved "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz"
integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==
dependencies:
memory-pager "^1.0.2"
split2@^4.0.0, split2@^4.1.0:
version "4.2.0"
- resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4"
+ resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz"
integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==
-sprintf-js@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a"
- integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==
-
sprintf-js@~1.0.2:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"
integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
stack-utils@^2.0.3:
version "2.0.6"
- resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f"
+ resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz"
integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==
dependencies:
escape-string-regexp "^2.0.0"
+statuses@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
+ integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
+
string-length@^4.0.1:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a"
+ resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz"
integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==
dependencies:
char-regex "^1.0.2"
strip-ansi "^6.0.0"
+"string-width-cjs@npm:string-width@^4.2.0":
+ version "4.2.3"
+ resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
-string_decoder@^1.1.1, string_decoder@^1.3.0:
+string-width@^5.0.1, string-width@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz"
+ integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
+ dependencies:
+ eastasianwidth "^0.2.0"
+ emoji-regex "^9.2.2"
+ strip-ansi "^7.0.1"
+
+string_decoder@^1.1.1:
version "1.3.0"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
dependencies:
safe-buffer "~5.2.0"
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
dependencies:
ansi-regex "^5.0.1"
+strip-ansi@^7.0.1:
+ version "7.1.0"
+ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz"
+ integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
+ dependencies:
+ ansi-regex "^6.0.1"
+
strip-bom@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz"
integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
strip-bom@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
+ resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz"
integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
strip-final-newline@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
+ resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz"
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
strip-json-comments@^3.1.1:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+ resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
-strnum@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db"
- integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==
+strtok3@^10.2.2:
+ version "10.3.1"
+ resolved "https://registry.npmjs.org/strtok3/-/strtok3-10.3.1.tgz"
+ integrity sha512-3JWEZM6mfix/GCJBBUrkA8p2Id2pBkyTkVCJKto55w080QBKZ+8R171fGrbiSp+yMO/u6F8/yUh7K4V9K+YCnw==
+ dependencies:
+ "@tokenizer/token" "^0.3.0"
superagent@^8.1.2:
version "8.1.2"
- resolved "https://registry.yarnpkg.com/superagent/-/superagent-8.1.2.tgz#03cb7da3ec8b32472c9d20f6c2a57c7f3765f30b"
+ resolved "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz"
integrity sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==
dependencies:
component-emitter "^1.3.0"
@@ -6159,84 +5181,84 @@ superagent@^8.1.2:
supertest@^6.1.3:
version "6.3.4"
- resolved "https://registry.yarnpkg.com/supertest/-/supertest-6.3.4.tgz#2145c250570c2ea5d337db3552dbfb78a2286218"
+ resolved "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz"
integrity sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==
dependencies:
methods "^1.1.2"
superagent "^8.1.2"
-supports-color@^5.3.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
- integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
- dependencies:
- has-flag "^3.0.0"
-
supports-color@^7.1.0:
version "7.2.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
has-flag "^4.0.0"
supports-color@^8.0.0:
version "8.1.1"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz"
integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
dependencies:
has-flag "^4.0.0"
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+swagger-ui-dist@5.21.0:
+ version "5.21.0"
+ resolved "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.21.0.tgz"
+ integrity sha512-E0K3AB6HvQd8yQNSMR7eE5bk+323AUxjtCz/4ZNKiahOlPhPJxqn3UPIGs00cyY/dhrTDJ61L7C/a8u6zhGrZg==
+ dependencies:
+ "@scarf/scarf" "=1.4.0"
+
symbol-observable@4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205"
+ resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz"
integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==
tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1:
version "2.2.1"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
+ resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz"
integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
tar@^6.1.11:
- version "6.1.13"
- resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b"
- integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==
+ version "6.2.1"
+ resolved "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz"
+ integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==
dependencies:
chownr "^2.0.0"
fs-minipass "^2.0.0"
- minipass "^4.0.0"
+ minipass "^5.0.0"
minizlib "^2.1.1"
mkdirp "^1.0.3"
yallist "^4.0.0"
-terser-webpack-plugin@^5.3.7:
- version "5.3.10"
- resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199"
- integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==
+terser-webpack-plugin@^5.3.11:
+ version "5.3.14"
+ resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz"
+ integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==
dependencies:
- "@jridgewell/trace-mapping" "^0.3.20"
+ "@jridgewell/trace-mapping" "^0.3.25"
jest-worker "^27.4.5"
- schema-utils "^3.1.1"
- serialize-javascript "^6.0.1"
- terser "^5.26.0"
+ schema-utils "^4.3.0"
+ serialize-javascript "^6.0.2"
+ terser "^5.31.1"
-terser@^5.26.0:
- version "5.28.1"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.28.1.tgz#bf00f7537fd3a798c352c2d67d67d65c915d1b28"
- integrity sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA==
+terser@^5.31.1:
+ version "5.43.1"
+ resolved "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz"
+ integrity sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==
dependencies:
"@jridgewell/source-map" "^0.3.3"
- acorn "^8.8.2"
+ acorn "^8.14.0"
commander "^2.20.0"
source-map-support "~0.5.20"
test-exclude@^6.0.0:
version "6.0.0"
- resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
+ resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz"
integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==
dependencies:
"@istanbuljs/schema" "^0.1.2"
@@ -6245,82 +5267,73 @@ test-exclude@^6.0.0:
text-table@^0.2.0:
version "0.2.0"
- resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
-thread-stream@^2.0.0:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-2.4.1.tgz#6d588b14f0546e59d3f306614f044bc01ce43351"
- integrity sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==
+thread-stream@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz"
+ integrity sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==
dependencies:
real-require "^0.2.0"
-through@^2.3.6:
- version "2.3.8"
- resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
- integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
-
-tiny-lru@^10.0.0:
- version "10.4.1"
- resolved "https://registry.yarnpkg.com/tiny-lru/-/tiny-lru-10.4.1.tgz#dec67a62115a4cb31d2065b8116d010daac362fe"
- integrity sha512-buLIzw7ppqymuO3pt10jHk/6QMeZLbidihMQU+N6sogF6EnBzG0qtDWIHuhw1x3dyNgVL/KTGIZsTK81+yCzLg==
-
-tiny-lru@^11.0.1:
- version "11.2.5"
- resolved "https://registry.yarnpkg.com/tiny-lru/-/tiny-lru-11.2.5.tgz#b138b99022aa26c567fa51a8dbf9e3e2959b2b30"
- integrity sha512-JpqM0K33lG6iQGKiigcwuURAKZlq6rHXfrgeL4/I8/REoyJTGU+tEMszvT/oTRVHG2OiylhGDjqPp1jWMlr3bw==
-
tmp@^0.0.33:
version "0.0.33"
- resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+ resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz"
integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
dependencies:
os-tmpdir "~1.0.2"
tmpl@1.0.5:
version "1.0.5"
- resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
+ resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz"
integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==
-to-fast-properties@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
- integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
-
to-regex-range@^5.0.1:
version "5.0.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
dependencies:
is-number "^7.0.0"
-tr46@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9"
- integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==
+toad-cache@^3.7.0:
+ version "3.7.0"
+ resolved "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz"
+ integrity sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==
+
+toidentifier@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz"
+ integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
+
+token-types@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/token-types/-/token-types-6.0.0.tgz"
+ integrity sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==
dependencies:
- punycode "^2.1.1"
+ "@tokenizer/token" "^0.3.0"
+ ieee754 "^1.2.1"
tr46@^4.1.1:
version "4.1.1"
- resolved "https://registry.yarnpkg.com/tr46/-/tr46-4.1.1.tgz#281a758dcc82aeb4fe38c7dfe4d11a395aac8469"
+ resolved "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz"
integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==
dependencies:
punycode "^2.3.0"
tr46@~0.0.3:
version "0.0.3"
- resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
+ resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
tree-kill@1.2.2:
version "1.2.2"
- resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
+ resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz"
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
ts-jest@29.1.2:
version "29.1.2"
- resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.2.tgz#7613d8c81c43c8cb312c6904027257e814c40e09"
+ resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz"
integrity sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==
dependencies:
bs-logger "0.x"
@@ -6334,7 +5347,7 @@ ts-jest@29.1.2:
ts-loader@^9.2.3:
version "9.5.1"
- resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.1.tgz#63d5912a86312f1fbe32cef0859fb8b2193d9b89"
+ resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz"
integrity sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==
dependencies:
chalk "^4.1.0"
@@ -6345,7 +5358,7 @@ ts-loader@^9.2.3:
ts-node@^10.0.0:
version "10.9.2"
- resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f"
+ resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz"
integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==
dependencies:
"@cspotcode/source-map-support" "^0.8.0"
@@ -6362,153 +5375,134 @@ ts-node@^10.0.0:
v8-compile-cache-lib "^3.0.1"
yn "3.1.1"
-tsconfig-paths-webpack-plugin@4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.1.tgz#a24651d0f69668a1abad38d3c2489855c257460d"
- integrity sha512-m5//KzLoKmqu2MVix+dgLKq70MnFi8YL8sdzQZ6DblmCdfuq/y3OqvJd5vMndg2KEVCOeNz8Es4WVZhYInteLw==
+tsconfig-paths-webpack-plugin@4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz"
+ integrity sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==
dependencies:
chalk "^4.1.0"
enhanced-resolve "^5.7.0"
+ tapable "^2.2.1"
tsconfig-paths "^4.1.2"
tsconfig-paths@4.2.0, tsconfig-paths@^4.1.2:
version "4.2.0"
- resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c"
+ resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz"
integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==
dependencies:
json5 "^2.2.2"
minimist "^1.2.6"
strip-bom "^3.0.0"
-tslib@2.5.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
- integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
-
-tslib@2.5.3:
- version "2.5.3"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913"
- integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==
+tslib@2.8.1, tslib@^2.1.0, tslib@^2.4.0:
+ version "2.8.1"
+ resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz"
+ integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
-tslib@^1.11.1, tslib@^1.8.1:
+tslib@^1.8.1:
version "1.14.1"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
+ resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslib@^2.1.0:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
- integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
-
tsutils@^3.21.0:
version "3.21.0"
- resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
+ resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz"
integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
dependencies:
tslib "^1.8.1"
tweetnacl@1.0.3:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596"
+ resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz"
integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
- resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+ resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
dependencies:
prelude-ls "^1.2.1"
type-detect@4.0.8:
version "4.0.8"
- resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
+ resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz"
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
type-fest@^0.20.2:
version "0.20.2"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
+ resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
type-fest@^0.21.3:
version "0.21.3"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
+ resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz"
integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
-typescript@4.9.5:
- version "4.9.5"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
- integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
+typescript@5.8.3, typescript@^5.8.3:
+ version "5.8.3"
+ resolved "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz"
+ integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==
uglify-js@^3.1.4:
version "3.17.4"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c"
+ resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz"
integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==
uid@2.0.2:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/uid/-/uid-2.0.2.tgz#4b5782abf0f2feeefc00fa88006b2b3b7af3e3b9"
+ resolved "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz"
integrity sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==
dependencies:
"@lukeed/csprng" "^1.0.0"
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
+uint8array-extras@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.4.0.tgz"
+ integrity sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==
universalify@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
+ resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz"
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
-update-browserslist-db@^1.0.10, update-browserslist-db@^1.0.13:
- version "1.0.13"
- resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4"
- integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==
+update-browserslist-db@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz"
+ integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==
dependencies:
- escalade "^3.1.1"
- picocolors "^1.0.0"
+ escalade "^3.2.0"
+ picocolors "^1.1.1"
uri-js@^4.2.2:
version "4.4.1"
- resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+ resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
dependencies:
punycode "^2.1.0"
util-deprecate@^1.0.1:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
utils-merge@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+ resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz"
integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
-uuid@9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5"
- integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==
-
-uuid@^8.3.2:
- version "8.3.2"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
- integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
-
uuid@^9.0.0:
version "9.0.1"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30"
+ resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz"
integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==
v8-compile-cache-lib@^3.0.1:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
+ resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz"
integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
v8-to-istanbul@^9.0.1:
version "9.1.0"
- resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265"
+ resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz"
integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==
dependencies:
"@jridgewell/trace-mapping" "^0.3.12"
@@ -6517,92 +5511,83 @@ v8-to-istanbul@^9.0.1:
validator@^13.9.0:
version "13.11.0"
- resolved "https://registry.yarnpkg.com/validator/-/validator-13.11.0.tgz#23ab3fd59290c61248364eabf4067f04955fbb1b"
+ resolved "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz"
integrity sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==
walker@^1.0.8:
version "1.0.8"
- resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f"
+ resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz"
integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==
dependencies:
makeerror "1.0.12"
-watchpack@^2.4.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d"
- integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==
+watchpack@^2.4.1:
+ version "2.4.4"
+ resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz"
+ integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==
dependencies:
glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"
wcwidth@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
+ resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz"
integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==
dependencies:
defaults "^1.0.3"
webidl-conversions@^3.0.0:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
+ resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz"
integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
webidl-conversions@^7.0.0:
version "7.0.0"
- resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a"
+ resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz"
integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
webpack-node-externals@3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz#1a3407c158d547a9feb4229a9e3385b7b60c9917"
+ resolved "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz"
integrity sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==
webpack-sources@^3.2.3:
version "3.2.3"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
+ resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
-webpack@5.82.1:
- version "5.82.1"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.82.1.tgz#8f38c78e53467556e8a89054ebd3ef6e9f67dbab"
- integrity sha512-C6uiGQJ+Gt4RyHXXYt+v9f+SN1v83x68URwgxNQ98cvH8kxiuywWGP4XeNZ1paOzZ63aY3cTciCEQJNFUljlLw==
- dependencies:
- "@types/eslint-scope" "^3.7.3"
- "@types/estree" "^1.0.0"
- "@webassemblyjs/ast" "^1.11.5"
- "@webassemblyjs/wasm-edit" "^1.11.5"
- "@webassemblyjs/wasm-parser" "^1.11.5"
- acorn "^8.7.1"
- acorn-import-assertions "^1.7.6"
- browserslist "^4.14.5"
+webpack@5.99.6:
+ version "5.99.6"
+ resolved "https://registry.npmjs.org/webpack/-/webpack-5.99.6.tgz"
+ integrity sha512-TJOLrJ6oeccsGWPl7ujCYuc0pIq2cNsuD6GZDma8i5o5Npvcco/z+NKvZSFsP0/x6SShVb0+X2JK/JHUjKY9dQ==
+ dependencies:
+ "@types/eslint-scope" "^3.7.7"
+ "@types/estree" "^1.0.6"
+ "@webassemblyjs/ast" "^1.14.1"
+ "@webassemblyjs/wasm-edit" "^1.14.1"
+ "@webassemblyjs/wasm-parser" "^1.14.1"
+ acorn "^8.14.0"
+ browserslist "^4.24.0"
chrome-trace-event "^1.0.2"
- enhanced-resolve "^5.14.0"
+ enhanced-resolve "^5.17.1"
es-module-lexer "^1.2.1"
eslint-scope "5.1.1"
events "^3.2.0"
glob-to-regexp "^0.4.1"
- graceful-fs "^4.2.9"
+ graceful-fs "^4.2.11"
json-parse-even-better-errors "^2.3.1"
loader-runner "^4.2.0"
mime-types "^2.1.27"
neo-async "^2.6.2"
- schema-utils "^3.1.2"
+ schema-utils "^4.3.0"
tapable "^2.1.1"
- terser-webpack-plugin "^5.3.7"
- watchpack "^2.4.0"
+ terser-webpack-plugin "^5.3.11"
+ watchpack "^2.4.1"
webpack-sources "^3.2.3"
-whatwg-url@^11.0.0:
- version "11.0.0"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018"
- integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==
- dependencies:
- tr46 "^3.0.0"
- webidl-conversions "^7.0.0"
-
whatwg-url@^13.0.0:
version "13.0.0"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-13.0.0.tgz#b7b536aca48306394a34e44bda8e99f332410f8f"
+ resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz"
integrity sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==
dependencies:
tr46 "^4.1.1"
@@ -6610,7 +5595,7 @@ whatwg-url@^13.0.0:
whatwg-url@^5.0.0:
version "5.0.0"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
+ resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz"
integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
dependencies:
tr46 "~0.0.3"
@@ -6618,47 +5603,67 @@ whatwg-url@^5.0.0:
which@^2.0.1:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
dependencies:
isexe "^2.0.0"
wide-align@^1.1.2:
version "1.1.5"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3"
+ resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz"
integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==
dependencies:
string-width "^1.0.2 || 2 || 3 || 4"
-windows-release@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-4.0.0.tgz#4725ec70217d1bf6e02c7772413b29cdde9ec377"
- integrity sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==
- dependencies:
- execa "^4.0.2"
-
wordwrap@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
+ resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz"
integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
wrap-ansi@^7.0.0:
version "7.0.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
dependencies:
ansi-styles "^4.0.0"
string-width "^4.1.0"
strip-ansi "^6.0.0"
+wrap-ansi@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz"
+ integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
+ dependencies:
+ ansi-styles "^6.1.0"
+ string-width "^5.0.1"
+ strip-ansi "^7.0.1"
+
wrappy@1:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
write-file-atomic@^4.0.2:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd"
+ resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz"
integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==
dependencies:
imurmurhash "^0.1.4"
@@ -6666,50 +5671,37 @@ write-file-atomic@^4.0.2:
xtend@^4.0.0:
version "4.0.2"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
y18n@^5.0.5:
version "5.0.8"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
+ resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
yallist@^3.0.2:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
yallist@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-yaml@^1.10.0:
- version "1.10.2"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
- integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+yaml@^2.4.1, yaml@^2.4.2:
+ version "2.8.0"
+ resolved "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz"
+ integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==
yargs-parser@21.1.1, yargs-parser@^21.0.1, yargs-parser@^21.1.1:
version "21.1.1"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
+ resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz"
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
-yargs@^17.3.1:
- version "17.7.1"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967"
- integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==
- dependencies:
- cliui "^8.0.1"
- escalade "^3.1.1"
- get-caller-file "^2.0.5"
- require-directory "^2.1.1"
- string-width "^4.2.3"
- y18n "^5.0.5"
- yargs-parser "^21.1.1"
-
-yargs@^17.7.2:
+yargs@^17.3.1, yargs@^17.7.2:
version "17.7.2"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
+ resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz"
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
dependencies:
cliui "^8.0.1"
@@ -6722,10 +5714,15 @@ yargs@^17.7.2:
yn@3.1.1:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
+ resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz"
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
yocto-queue@^0.1.0:
version "0.1.0"
- resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
+
+yoctocolors-cjs@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz"
+ integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==
diff --git a/docker-compose.yml b/docker-compose.yml
index 62a6ad110..6e340bec0 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,12 +1,10 @@
-version: '3.8'
-
services:
todo-frontend:
build:
context: frontend/
ports:
- - '3000:3000'
+ - '4173:4173'
networks:
- bitloops
@@ -14,15 +12,14 @@ services:
build:
context: backend/
ports:
- - '8081:8081'
- - '8082:8082'
+ - '8080:8080'
networks:
- bitloops
bl-mongo:
image: mongo:5
- container_name: mongo1
- command: ['--replSet', 'my-replica-set', '--bind_ip_all', '--port', '30001']
+ container_name: bl_mongo1
+ command: ['--port', '30001']
volumes:
- bl-mongo_data:/data/db
ports:
@@ -36,7 +33,7 @@ services:
bl-nats:
image: nats:latest
- container_name: nats
+ container_name: bl_nats
ports:
- '4222:4222'
- '8222:8222'
@@ -74,7 +71,7 @@ services:
bl-jaeger:
image: jaegertracing/all-in-one:latest
- container_name: jaeger
+ container_name: bl_jaeger
ports:
- '6831:6831'
- '6832:6832'
@@ -94,7 +91,7 @@ services:
bl-pushgateway:
image: prom/pushgateway
- container_name: pushgateway
+ container_name: bl_pushgateway
restart: unless-stopped
expose:
- 9091
@@ -107,7 +104,7 @@ services:
bl-prometheus:
image: prom/prometheus:latest
- container_name: prometheus
+ container_name: bl_prometheus
volumes:
- ./prometheus:/etc/prometheus/
- bl-prometheus_data:/prometheus
@@ -128,7 +125,7 @@ services:
bl-grafana:
image: grafana/grafana:latest
- container_name: grafana
+ container_name: bl_grafana
env_file:
- grafana/config
volumes:
@@ -145,14 +142,6 @@ services:
- bitloops
labels:
org.label-schema.group: 'monitoring'
-
- bl-envoy:
- build:
- context: ./envoy
- ports:
- - '8080:8080'
- networks:
- - bitloops
bl-telemetry-consumer:
container_name: bl-telemetry-consumer
diff --git a/envoy/Dockerfile b/envoy/Dockerfile
deleted file mode 100644
index a2d67d3ae..000000000
--- a/envoy/Dockerfile
+++ /dev/null
@@ -1,3 +0,0 @@
-FROM envoyproxy/envoy-dev:52e6304c2251308d7970d7d8f59216b921772b21
-COPY envoy.yaml /etc/envoy/envoy.yaml
-RUN chmod go+r /etc/envoy/envoy.yaml
\ No newline at end of file
diff --git a/envoy/README.md b/envoy/README.md
deleted file mode 100644
index 69001301e..000000000
--- a/envoy/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# HOW TO
-
-https://www.envoyproxy.io/docs/envoy/latest/start/docker
diff --git a/envoy/envoy.yaml b/envoy/envoy.yaml
deleted file mode 100644
index 219669362..000000000
--- a/envoy/envoy.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
-admin:
- access_log_path: /tmp/admin_access.log
- address:
- socket_address: { address: 0.0.0.0, port_value: 9901 }
-
-static_resources:
- listeners:
- - name: listener_0
- address:
- socket_address: { address: 0.0.0.0, port_value: 8080 }
- filter_chains:
- - filters:
- - name: envoy.filters.network.http_connection_manager
- typed_config:
- "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
- codec_type: auto
- stat_prefix: ingress_http
- route_config:
- name: local_route
- virtual_hosts:
- - name: local_service
- domains: ["*"]
- routes:
- - match: { prefix: "/" }
- route:
- cluster: todo_service
- timeout: 0s
- max_stream_duration:
- grpc_timeout_header_max: 0s
- cors:
- allow_origin_string_match:
- - prefix: "*"
- allow_methods: GET, PUT, DELETE, POST, OPTIONS
- allow_headers: authorization,cache-hash,keep-alive,user-agent,cache-control,content-type,content-transfer-encoding,custom-header-1,x-accept-content-transfer-encoding,x-accept-response-streaming,x-user-agent,x-grpc-web,grpc-timeout
- max_age: "1728000"
- expose_headers: custom-header-1,grpc-status,grpc-message
- http_filters:
- - name: envoy.filters.http.grpc_web
- typed_config:
- "@type": type.googleapis.com/envoy.extensions.filters.http.grpc_web.v3.GrpcWeb
- - name: envoy.filters.http.cors
- typed_config:
- "@type": type.googleapis.com/envoy.extensions.filters.http.cors.v3.Cors
- - name: envoy.filters.http.router
- typed_config:
- "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
- clusters:
- - name: todo_service
- connect_timeout: 0.25s
- type: logical_dns
- http2_protocol_options: {}
- lb_policy: round_robin
- load_assignment:
- cluster_name: cluster_0
- endpoints:
- - lb_endpoints:
- - endpoint:
- address:
- socket_address:
- address: host.docker.internal
- port_value: 8081
\ No newline at end of file
diff --git a/envoy/package.json b/envoy/package.json
deleted file mode 100644
index 1bb83863e..000000000
--- a/envoy/package.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "name": "envoy",
- "version": "1.0.0",
- "description": "https://www.envoyproxy.io/docs/envoy/latest/start/docker",
- "main": "index.js",
- "scripts": {
- "build": "docker build -t envoy:v1 .",
- "start": "docker run -d --name envoy -p 8080:8080 envoy:v1",
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "author": "",
- "license": "ISC"
-}
diff --git a/frontend/.dockerignore b/frontend/.dockerignore
deleted file mode 100644
index f18df58da..000000000
--- a/frontend/.dockerignore
+++ /dev/null
@@ -1,33 +0,0 @@
-# Logs
-logs
-*.log
-
-# Runtime data
-pids
-*.pid
-*.seed
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-
-# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# node-waf configuration
-.lock-wscript
-
-.git
-
-# Compiled binary addons (http://nodejs.org/api/addons.html)
-build
-build/Release
-
-# Dependency directory
-# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
-node_modules
-
-server/*.spec.js
-kubernetes
\ No newline at end of file
diff --git a/frontend/.eslintignore b/frontend/.eslintignore
deleted file mode 100644
index 801fe2b54..000000000
--- a/frontend/.eslintignore
+++ /dev/null
@@ -1,9 +0,0 @@
-*/proto/*
-/src/bitloops/proto/*
-*/src/bitloops/proto/*
-/src/bitloops/proto/todo.ts
-*/src/bitloops/proto/todo.ts
-/src/bitloops/proto/todo_pb.d.ts
-*/src/bitloops/proto/todo_pb.d.ts
-/src/bitloops/proto/TodoServiceClient_Pb.ts
-*/src/bitloops/proto/TodoServiceClient_Pb.ts
\ No newline at end of file
diff --git a/frontend/.eslintrc.json b/frontend/.eslintrc.json
deleted file mode 100644
index 94738fa14..000000000
--- a/frontend/.eslintrc.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "settings": {
- "import/resolver": {
- "node": {
- "extensions": [".js", ".jsx", ".ts", ".tsx"]
- }
- }
- },
- "env": {
- "browser": true,
- "es2021": true
- },
- "extends": [
- "airbnb",
- "airbnb-typescript",
- "plugin:react/recommended",
- "plugin:jsx-a11y/recommended",
- "prettier"
- ],
- "overrides": [
- {
- "extends": [],
- "files": [
- "*.ts",
- "*.tsx"
- ]
- }
- ],
- "parserOptions": {
- "ecmaVersion": "latest",
- "sourceType": "module",
- "project": "./tsconfig.json"
- },
- "plugins": [
- "react",
- "jsx-a11y",
- "react-hooks",
- "@typescript-eslint",
- "prettier"
- ],
- "rules": {
- "prettier/prettier": "error",
- "no-shadow": "off",
- "@typescript-eslint/no-shadow": ["error"],
- "react/function-component-definition": "off",
- "react/jsx-filename-extension": [1, { "extensions": [".tsx", ".ts"] }],
- "react/react-in-jsx-scope": "off",
- "class-methods-use-this": "off",
- "import/extensions": [
- "error",
- "ignorePackages",
- {
- "ts": "never",
- "tsx": "never",
- "js": "never",
- "jsx": "never"
- }
- ],
- "quotes": ["error", "single"],
- "@typescript-eslint/quotes": ["error", "single"],
- "no-underscore-dangle": "off"
- }
-}
diff --git a/frontend/.gitignore b/frontend/.gitignore
index 5af2fbd34..a547bf36d 100644
--- a/frontend/.gitignore
+++ b/frontend/.gitignore
@@ -1,24 +1,24 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
-# dependencies
-/node_modules
node_modules
-/.pnp
-.pnp.js
-
-# testing
-/coverage
-
-# production
-/build
+dist
+dist-ssr
+*.local
-# misc
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
.DS_Store
-.env.local
-.env.development.local
-.env.test.local
-.env.production.local
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/frontend/.prettierignore b/frontend/.prettierignore
deleted file mode 100644
index 801fe2b54..000000000
--- a/frontend/.prettierignore
+++ /dev/null
@@ -1,9 +0,0 @@
-*/proto/*
-/src/bitloops/proto/*
-*/src/bitloops/proto/*
-/src/bitloops/proto/todo.ts
-*/src/bitloops/proto/todo.ts
-/src/bitloops/proto/todo_pb.d.ts
-*/src/bitloops/proto/todo_pb.d.ts
-/src/bitloops/proto/TodoServiceClient_Pb.ts
-*/src/bitloops/proto/TodoServiceClient_Pb.ts
\ No newline at end of file
diff --git a/frontend/.prettierrc b/frontend/.prettierrc
deleted file mode 100644
index cea2c10b9..000000000
--- a/frontend/.prettierrc
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "singleQuote": true,
- "printWidth": 100,
- "tabWidth": 2,
- "useTabs": false,
- "semi": true,
- "trailingComma": "es5"
-}
diff --git a/frontend/.vscode/settings.json b/frontend/.vscode/settings.json
deleted file mode 100644
index 4c92c5675..000000000
--- a/frontend/.vscode/settings.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "editor.codeActionsOnSave": {
- "source.fixAll.eslint": true
- },
- "eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"],
- "recommendations": ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode"]
-}
diff --git a/frontend/Dockerfile b/frontend/Dockerfile
index a5867a8bb..ff30a898e 100644
--- a/frontend/Dockerfile
+++ b/frontend/Dockerfile
@@ -1,20 +1,20 @@
-FROM node:19-alpine
+FROM node:22-alpine
# Set the working directory to /app inside the container
WORKDIR /app
# Copy app files
COPY . .
# ==== BUILD =====
-# Install dependencies (--immutable makes sure the exact versions in the lockfile gets installed)
-RUN yarn install --immutable
+# Install dependencies
+RUN npm install
# Build the app
-RUN yarn build
+RUN npm run build
# ==== RUN =======
# Set the env to "production"
ENV NODE_ENV production
-ENV AUTH_URL "http://host.docker.internal:8082/auth/login"
-ENV PROXY_URL "http://host.docker.internal:8080"
-ENV REGISTRATION_URL "http://host.docker.internal:8082/auth/register"
-# Expose the port on which the app will be running (3000 is the default that `serve` uses)
-EXPOSE 3000
+ENV AUTH_URL "http://host.docker.internal:8080/auth/login"
+ENV TODO_URL "http://host.docker.internal:8080"
+ENV REGISTRATION_URL "http://host.docker.internal:8080/auth/register"
+# Expose the port on which the app will be running (4173 is the default that Vite `preview` uses)
+EXPOSE 4173
# Start the app
-CMD [ "npx", "serve", "build" ]
\ No newline at end of file
+CMD [ "npm", "run", "preview", "--", "--host"]
\ No newline at end of file
diff --git a/frontend/README.md b/frontend/README.md
index 1024f0bc0..5943d2ac4 100644
--- a/frontend/README.md
+++ b/frontend/README.md
@@ -2,7 +2,7 @@
-This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
+This project was bootstrapped with [Vite](https://vite.dev/).
You should not need to run it directly from this folder as it is part of the docker build file but if you want to run it locally for development you can follow the instructions below at "Available Scripts".
@@ -36,13 +36,11 @@ Services are the gRPC endpoints that are automatically generated by the protobuf
## Technologies Used
-To communicate with the backend, grpc-web is being used for the main functionality while a couple REST requests are used for registration and login.
+To communicate with the backend, REST requests are being used for the main functionality while a couple REST requests are used for registration and login. For the automatic generation of client code, `@hey-api/openapi-ts` is being used and after changes in the backend occur you can run `npm run openapi-ts` to generate the new client code.
To receive realtime notifications from the backend, SSE (Server Sent Events) are being used.
-The gRPC implementation requires the JWT token to be sent in the authorization headers and it is possible to sent a cache-hash for the backend to check if a get request has the same or new data. If the server sees that the data it is about to send have the same cache-hash then an exception is thrown which is handled on the frontend and does nothing if thrown as it knows that the data already in its local store is up to date. This saves data usage.
-
-The grpc-web SSE implementation has significant limitation for long running connections and it cannot track if a client has disconnected or not. For this reason, the client sends a ping about every minute to notify the backend that the connection is alive. If the ping is not sent, the backend assumes the frontend has disconnected and clears the subscriptions to save resources. In the near future, we will release [Bitloops Ermis](https://bitloops.com/ermis) which will a) allow for scaling of the gateway to multiple instances and b) is connection aware and doesn't require explicit pings.
+The grpc-web SSE implementation has significant limitation for long running connections and it cannot track if a client has disconnected or not. For this reason, the client sends a ping about every minute to notify the backend that the connection is alive. If the ping is not sent, the backend assumes the frontend has disconnected and clears the subscriptions to save resources. In the future, we will release [Bitloops Ermis](https://bitloops.com/ermis) which will a) allow for scaling of the gateway to multiple instances and b) is connection aware and doesn't require explicit pings.
## Launch the app using the Dockerfile
@@ -55,35 +53,109 @@ docker build -t todo-frontend .
To run the container:
```bash
-docker run -dp 3000:3000 todo-frontend
+docker run -dp 4173:4173 todo-frontend
```
## Available Scripts
In the project directory, you can run:
-### `yarn` or `npm i`
+### `npm i` or `npm install`
Installs all the dependencies. This is needed before you run the start script.
-### `yarn start` or `npm start`
+### `npm run dev`
Runs the app in the development mode.\
-Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
+Open [http://localhost:5175](http://localhost:5175) to view it in the browser.
The page will reload if you make edits.\
You will also see any lint errors in the console.
-### `yarn build` or `npm run build`
+### `npm run build`
-Builds the app for production to the `build` folder.\
+Builds the app for production to the `dist` folder.\
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.\
Your app is ready to be deployed!
-See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
+To preview the production build, run:
+
+```bash
+npm run preview
+```
+
+### `npm run openapi-ts`
+
+Regenerates the `api` folder files based on Swagger and Open API definitions coming from the backend.
+
+# React + TypeScript + Vite + Recoil
+
+This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
-### `yarn proto` or `npm run proto`
+Currently, two official plugins are available:
-Regenerates the TodoServiceClientPb.ts and todo.ts and todo_pb.d.ts files based on the todo.proto file.
+- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh
+- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
+
+## Expanding the ESLint configuration
+
+If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
+
+```js
+export default tseslint.config([
+ globalIgnores(['dist']),
+ {
+ files: ['**/*.{ts,tsx}'],
+ extends: [
+ // Other configs...
+
+ // Remove tseslint.configs.recommended and replace with this
+ ...tseslint.configs.recommendedTypeChecked,
+ // Alternatively, use this for stricter rules
+ ...tseslint.configs.strictTypeChecked,
+ // Optionally, add this for stylistic rules
+ ...tseslint.configs.stylisticTypeChecked,
+
+ // Other configs...
+ ],
+ languageOptions: {
+ parserOptions: {
+ project: ['./tsconfig.node.json', './tsconfig.app.json'],
+ tsconfigRootDir: import.meta.dirname,
+ },
+ // other options...
+ },
+ },
+])
+```
+
+You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
+
+```js
+// eslint.config.js
+import reactX from 'eslint-plugin-react-x'
+import reactDom from 'eslint-plugin-react-dom'
+
+export default tseslint.config([
+ globalIgnores(['dist']),
+ {
+ files: ['**/*.{ts,tsx}'],
+ extends: [
+ // Other configs...
+ // Enable lint rules for React
+ reactX.configs['recommended-typescript'],
+ // Enable lint rules for React DOM
+ reactDom.configs.recommended,
+ ],
+ languageOptions: {
+ parserOptions: {
+ project: ['./tsconfig.node.json', './tsconfig.app.json'],
+ tsconfigRootDir: import.meta.dirname,
+ },
+ // other options...
+ },
+ },
+])
+```
diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js
new file mode 100644
index 000000000..d94e7deb7
--- /dev/null
+++ b/frontend/eslint.config.js
@@ -0,0 +1,23 @@
+import js from '@eslint/js'
+import globals from 'globals'
+import reactHooks from 'eslint-plugin-react-hooks'
+import reactRefresh from 'eslint-plugin-react-refresh'
+import tseslint from 'typescript-eslint'
+import { globalIgnores } from 'eslint/config'
+
+export default tseslint.config([
+ globalIgnores(['dist']),
+ {
+ files: ['**/*.{ts,tsx}'],
+ extends: [
+ js.configs.recommended,
+ tseslint.configs.recommended,
+ reactHooks.configs['recommended-latest'],
+ reactRefresh.configs.vite,
+ ],
+ languageOptions: {
+ ecmaVersion: 2020,
+ globals: globals.browser,
+ },
+ },
+])
diff --git a/frontend/index.html b/frontend/index.html
new file mode 100644
index 000000000..fbff587b9
--- /dev/null
+++ b/frontend/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Todo App
+
+
+
+
+
+
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
new file mode 100644
index 000000000..95cc87bc4
--- /dev/null
+++ b/frontend/package-lock.json
@@ -0,0 +1,5124 @@
+{
+ "name": "todo-frontend",
+ "version": "0.3.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "todo-frontend",
+ "version": "0.3.0",
+ "dependencies": {
+ "@chakra-ui/react": "^3.21.0",
+ "@vitejs/plugin-react": "^4.6.0",
+ "event-source-polyfill": "^1.0.31",
+ "eventemitter3": "^5.0.1",
+ "jwt-decode": "^4.0.0",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "react-icons": "^5.5.0",
+ "react-router-dom": "^7.6.2",
+ "recoil": "^0.7.7"
+ },
+ "devDependencies": {
+ "@eslint/js": "^9.29.0",
+ "@hey-api/openapi-ts": "^0.77.0",
+ "@types/event-source-polyfill": "^1.0.5",
+ "@types/react": "^18.3.23",
+ "@types/react-dom": "^18.3.7",
+ "eslint": "^9.29.0",
+ "eslint-plugin-react-hooks": "^5.2.0",
+ "eslint-plugin-react-refresh": "^0.4.20",
+ "globals": "^16.2.0",
+ "typescript": "~5.8.3",
+ "typescript-eslint": "^8.34.1",
+ "vite": "^7.0.0"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@ark-ui/react": {
+ "version": "5.14.0",
+ "resolved": "https://registry.npmjs.org/@ark-ui/react/-/react-5.14.0.tgz",
+ "integrity": "sha512-7WWlCM3SowtF01e9NouuO4T6SYuKTM1dovR+2NZuuWTlqTBlvZ+1vPHS6BeqzXriwMLU7QUU+Y0i/TcI6/s/Sg==",
+ "dependencies": {
+ "@internationalized/date": "3.8.2",
+ "@zag-js/accordion": "1.15.2",
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/angle-slider": "1.15.2",
+ "@zag-js/auto-resize": "1.15.2",
+ "@zag-js/avatar": "1.15.2",
+ "@zag-js/carousel": "1.15.2",
+ "@zag-js/checkbox": "1.15.2",
+ "@zag-js/clipboard": "1.15.2",
+ "@zag-js/collapsible": "1.15.2",
+ "@zag-js/collection": "1.15.2",
+ "@zag-js/color-picker": "1.15.2",
+ "@zag-js/color-utils": "1.15.2",
+ "@zag-js/combobox": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/date-picker": "1.15.2",
+ "@zag-js/date-utils": "1.15.2",
+ "@zag-js/dialog": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/editable": "1.15.2",
+ "@zag-js/file-upload": "1.15.2",
+ "@zag-js/file-utils": "1.15.2",
+ "@zag-js/floating-panel": "1.15.2",
+ "@zag-js/focus-trap": "1.15.2",
+ "@zag-js/highlight-word": "1.15.2",
+ "@zag-js/hover-card": "1.15.2",
+ "@zag-js/i18n-utils": "1.15.2",
+ "@zag-js/listbox": "1.15.2",
+ "@zag-js/menu": "1.15.2",
+ "@zag-js/number-input": "1.15.2",
+ "@zag-js/pagination": "1.15.2",
+ "@zag-js/password-input": "1.15.2",
+ "@zag-js/pin-input": "1.15.2",
+ "@zag-js/popover": "1.15.2",
+ "@zag-js/presence": "1.15.2",
+ "@zag-js/progress": "1.15.2",
+ "@zag-js/qr-code": "1.15.2",
+ "@zag-js/radio-group": "1.15.2",
+ "@zag-js/rating-group": "1.15.2",
+ "@zag-js/react": "1.15.2",
+ "@zag-js/select": "1.15.2",
+ "@zag-js/signature-pad": "1.15.2",
+ "@zag-js/slider": "1.15.2",
+ "@zag-js/splitter": "1.15.2",
+ "@zag-js/steps": "1.15.2",
+ "@zag-js/switch": "1.15.2",
+ "@zag-js/tabs": "1.15.2",
+ "@zag-js/tags-input": "1.15.2",
+ "@zag-js/time-picker": "1.15.2",
+ "@zag-js/timer": "1.15.2",
+ "@zag-js/toast": "1.15.2",
+ "@zag-js/toggle": "1.15.2",
+ "@zag-js/toggle-group": "1.15.2",
+ "@zag-js/tooltip": "1.15.2",
+ "@zag-js/tour": "1.15.2",
+ "@zag-js/tree-view": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ },
+ "peerDependencies": {
+ "react": ">=18.0.0",
+ "react-dom": ">=18.0.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.27.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz",
+ "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.27.4",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz",
+ "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.27.3",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-module-transforms": "^7.27.3",
+ "@babel/helpers": "^7.27.4",
+ "@babel/parser": "^7.27.4",
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.27.4",
+ "@babel/types": "^7.27.3",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.27.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz",
+ "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==",
+ "dependencies": {
+ "@babel/parser": "^7.27.5",
+ "@babel/types": "^7.27.3",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
+ "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "dependencies": {
+ "@babel/compat-data": "^7.27.2",
+ "@babel/helper-validator-option": "^7.27.1",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
+ "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "dependencies": {
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz",
+ "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/traverse": "^7.27.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
+ "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
+ "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.27.6",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz",
+ "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==",
+ "dependencies": {
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.27.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.27.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz",
+ "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==",
+ "dependencies": {
+ "@babel/types": "^7.27.3"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz",
+ "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz",
+ "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.27.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz",
+ "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
+ "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/parser": "^7.27.2",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.27.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz",
+ "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.27.3",
+ "@babel/parser": "^7.27.4",
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.27.3",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.27.6",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz",
+ "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@chakra-ui/react": {
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-3.21.0.tgz",
+ "integrity": "sha512-Ajw6GuUhfNhMagTM9cO1Lg/w/HSQUwsv55j2QvvvPw/dk01wHiGi1aihfuCLpa6QY4ElLNs6SS3f78xI9Fwo6A==",
+ "dependencies": {
+ "@ark-ui/react": "5.14.0",
+ "@emotion/is-prop-valid": "1.3.1",
+ "@emotion/serialize": "1.3.3",
+ "@emotion/use-insertion-effect-with-fallbacks": "1.2.0",
+ "@emotion/utils": "1.4.2",
+ "@pandacss/is-valid-prop": "0.53.6",
+ "csstype": "3.1.3",
+ "fast-safe-stringify": "2.1.1"
+ },
+ "peerDependencies": {
+ "@emotion/react": ">=11",
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@emotion/babel-plugin": {
+ "version": "11.13.5",
+ "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz",
+ "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/runtime": "^7.18.3",
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/serialize": "^1.3.3",
+ "babel-plugin-macros": "^3.1.0",
+ "convert-source-map": "^1.5.0",
+ "escape-string-regexp": "^4.0.0",
+ "find-root": "^1.1.0",
+ "source-map": "^0.5.7",
+ "stylis": "4.2.0"
+ }
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "peer": true
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@emotion/cache": {
+ "version": "11.14.0",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz",
+ "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==",
+ "peer": true,
+ "dependencies": {
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/sheet": "^1.4.0",
+ "@emotion/utils": "^1.4.2",
+ "@emotion/weak-memoize": "^0.4.0",
+ "stylis": "4.2.0"
+ }
+ },
+ "node_modules/@emotion/hash": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz",
+ "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g=="
+ },
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz",
+ "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==",
+ "dependencies": {
+ "@emotion/memoize": "^0.9.0"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
+ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="
+ },
+ "node_modules/@emotion/react": {
+ "version": "11.14.0",
+ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz",
+ "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==",
+ "peer": true,
+ "dependencies": {
+ "@babel/runtime": "^7.18.3",
+ "@emotion/babel-plugin": "^11.13.5",
+ "@emotion/cache": "^11.14.0",
+ "@emotion/serialize": "^1.3.3",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0",
+ "@emotion/utils": "^1.4.2",
+ "@emotion/weak-memoize": "^0.4.0",
+ "hoist-non-react-statics": "^3.3.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/serialize": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz",
+ "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==",
+ "dependencies": {
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/unitless": "^0.10.0",
+ "@emotion/utils": "^1.4.2",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@emotion/sheet": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz",
+ "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==",
+ "peer": true
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz",
+ "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg=="
+ },
+ "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz",
+ "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==",
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/@emotion/utils": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz",
+ "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA=="
+ },
+ "node_modules/@emotion/weak-memoize": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz",
+ "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==",
+ "peer": true
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz",
+ "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz",
+ "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz",
+ "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz",
+ "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz",
+ "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz",
+ "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz",
+ "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz",
+ "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz",
+ "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz",
+ "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz",
+ "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz",
+ "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz",
+ "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz",
+ "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz",
+ "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz",
+ "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz",
+ "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz",
+ "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz",
+ "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz",
+ "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz",
+ "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz",
+ "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz",
+ "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz",
+ "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz",
+ "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
+ "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/config-array": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz",
+ "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==",
+ "dev": true,
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.6",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz",
+ "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/core": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz",
+ "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
+ "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "9.29.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.29.0.tgz",
+ "integrity": "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ }
+ },
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
+ "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.3.tgz",
+ "integrity": "sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==",
+ "dev": true,
+ "dependencies": {
+ "@eslint/core": "^0.15.1",
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
+ "version": "0.15.1",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz",
+ "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@floating-ui/core": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.1.tgz",
+ "integrity": "sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==",
+ "dependencies": {
+ "@floating-ui/utils": "^0.2.9"
+ }
+ },
+ "node_modules/@floating-ui/dom": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.1.tgz",
+ "integrity": "sha512-cwsmW/zyw5ltYTUeeYJ60CnQuPqmGwuGVhG9w0PRaRKkAyi38BT5CKrpIbb+jtahSwUl04cWzSx9ZOIxeS6RsQ==",
+ "dependencies": {
+ "@floating-ui/core": "^1.7.1",
+ "@floating-ui/utils": "^0.2.9"
+ }
+ },
+ "node_modules/@floating-ui/utils": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz",
+ "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg=="
+ },
+ "node_modules/@hey-api/json-schema-ref-parser": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@hey-api/json-schema-ref-parser/-/json-schema-ref-parser-1.0.6.tgz",
+ "integrity": "sha512-yktiFZoWPtEW8QKS65eqKwA5MTKp88CyiL8q72WynrBs/73SAaxlSWlA2zW/DZlywZ5hX1OYzrCC0wFdvO9c2w==",
+ "dev": true,
+ "dependencies": {
+ "@jsdevtools/ono": "^7.1.3",
+ "@types/json-schema": "^7.0.15",
+ "js-yaml": "^4.1.0",
+ "lodash": "^4.17.21"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/hey-api"
+ }
+ },
+ "node_modules/@hey-api/openapi-ts": {
+ "version": "0.77.0",
+ "resolved": "https://registry.npmjs.org/@hey-api/openapi-ts/-/openapi-ts-0.77.0.tgz",
+ "integrity": "sha512-HAJbd8QfxeBPZ788Ghiw7bzzzTKxW+wW+34foleEztyZJnRV20barvevu8YAK1BtyiIGIpEtAfoqO8KUj4VuBw==",
+ "dev": true,
+ "dependencies": {
+ "@hey-api/json-schema-ref-parser": "1.0.6",
+ "ansi-colors": "4.1.3",
+ "c12": "2.0.1",
+ "color-support": "1.1.3",
+ "commander": "13.0.0",
+ "handlebars": "4.7.8",
+ "open": "10.1.2"
+ },
+ "bin": {
+ "openapi-ts": "bin/index.cjs"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=22.10.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/hey-api"
+ },
+ "peerDependencies": {
+ "typescript": "^5.5.3"
+ }
+ },
+ "node_modules/@humanfs/core": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+ "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node": {
+ "version": "0.16.6",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
+ "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
+ "dev": true,
+ "dependencies": {
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+ "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
+ "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@internationalized/date": {
+ "version": "3.8.2",
+ "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.8.2.tgz",
+ "integrity": "sha512-/wENk7CbvLbkUvX1tu0mwq49CVkkWpkXubGel6birjRPyo6uQ4nQpnq5xZu823zRCwwn82zgHrvgF1vZyvmVgA==",
+ "dependencies": {
+ "@swc/helpers": "^0.5.0"
+ }
+ },
+ "node_modules/@internationalized/number": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.3.tgz",
+ "integrity": "sha512-p+Zh1sb6EfrfVaS86jlHGQ9HA66fJhV9x5LiE5vCbZtXEHAuhcmUZUdZ4WrFpUBfNalr2OkAJI5AcKEQF+Lebw==",
+ "dependencies": {
+ "@swc/helpers": "^0.5.0"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@jsdevtools/ono": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
+ "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==",
+ "dev": true
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@pandacss/is-valid-prop": {
+ "version": "0.53.6",
+ "resolved": "https://registry.npmjs.org/@pandacss/is-valid-prop/-/is-valid-prop-0.53.6.tgz",
+ "integrity": "sha512-TgWBQmz/5j/oAMjavqJAjQh1o+yxhYspKvepXPn4lFhAN3yBhilrw9HliAkvpUr0sB2CkJ2BYMpFXbAJYEocsA=="
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.0-beta.19",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz",
+ "integrity": "sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA=="
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.1.tgz",
+ "integrity": "sha512-JAcBr1+fgqx20m7Fwe1DxPUl/hPkee6jA6Pl7n1v2EFiktAHenTaXl5aIFjUIEsfn9w3HE4gK1lEgNGMzBDs1w==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.1.tgz",
+ "integrity": "sha512-RurZetXqTu4p+G0ChbnkwBuAtwAbIwJkycw1n6GvlGlBuS4u5qlr5opix8cBAYFJgaY05TWtM+LaoFggUmbZEQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.1.tgz",
+ "integrity": "sha512-fM/xPesi7g2M7chk37LOnmnSTHLG/v2ggWqKj3CCA1rMA4mm5KVBT1fNoswbo1JhPuNNZrVwpTvlCVggv8A2zg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.1.tgz",
+ "integrity": "sha512-gDnWk57urJrkrHQ2WVx9TSVTH7lSlU7E3AFqiko+bgjlh78aJ88/3nycMax52VIVjIm3ObXnDL2H00e/xzoipw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.1.tgz",
+ "integrity": "sha512-wnFQmJ/zPThM5zEGcnDcCJeYJgtSLjh1d//WuHzhf6zT3Md1BvvhJnWoy+HECKu2bMxaIcfWiu3bJgx6z4g2XA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.1.tgz",
+ "integrity": "sha512-uBmIxoJ4493YATvU2c0upGz87f99e3wop7TJgOA/bXMFd2SvKCI7xkxY/5k50bv7J6dw1SXT4MQBQSLn8Bb/Uw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.1.tgz",
+ "integrity": "sha512-n0edDmSHlXFhrlmTK7XBuwKlG5MbS7yleS1cQ9nn4kIeW+dJH+ExqNgQ0RrFRew8Y+0V/x6C5IjsHrJmiHtkxQ==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.1.tgz",
+ "integrity": "sha512-8WVUPy3FtAsKSpyk21kV52HCxB+me6YkbkFHATzC2Yd3yuqHwy2lbFL4alJOLXKljoRw08Zk8/xEj89cLQ/4Nw==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.1.tgz",
+ "integrity": "sha512-yuktAOaeOgorWDeFJggjuCkMGeITfqvPgkIXhDqsfKX8J3jGyxdDZgBV/2kj/2DyPaLiX6bPdjJDTu9RB8lUPQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.1.tgz",
+ "integrity": "sha512-W+GBM4ifET1Plw8pdVaecwUgxmiH23CfAUj32u8knq0JPFyK4weRy6H7ooxYFD19YxBulL0Ktsflg5XS7+7u9g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.1.tgz",
+ "integrity": "sha512-1zqnUEMWp9WrGVuVak6jWTl4fEtrVKfZY7CvcBmUUpxAJ7WcSowPSAWIKa/0o5mBL/Ij50SIf9tuirGx63Ovew==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.1.tgz",
+ "integrity": "sha512-Rl3JKaRu0LHIx7ExBAAnf0JcOQetQffaw34T8vLlg9b1IhzcBgaIdnvEbbsZq9uZp3uAH+JkHd20Nwn0h9zPjA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.1.tgz",
+ "integrity": "sha512-j5akelU3snyL6K3N/iX7otLBIl347fGwmd95U5gS/7z6T4ftK288jKq3A5lcFKcx7wwzb5rgNvAg3ZbV4BqUSw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.1.tgz",
+ "integrity": "sha512-ppn5llVGgrZw7yxbIm8TTvtj1EoPgYUAbfw0uDjIOzzoqlZlZrLJ/KuiE7uf5EpTpCTrNt1EdtzF0naMm0wGYg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.1.tgz",
+ "integrity": "sha512-Hu6hEdix0oxtUma99jSP7xbvjkUM/ycke/AQQ4EC5g7jNRLLIwjcNwaUy95ZKBJJwg1ZowsclNnjYqzN4zwkAw==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.1.tgz",
+ "integrity": "sha512-EtnsrmZGomz9WxK1bR5079zee3+7a+AdFlghyd6VbAjgRJDbTANJ9dcPIPAi76uG05micpEL+gPGmAKYTschQw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.1.tgz",
+ "integrity": "sha512-iAS4p+J1az6Usn0f8xhgL4PaU878KEtutP4hqw52I4IO6AGoyOkHCxcc4bqufv1tQLdDWFx8lR9YlwxKuv3/3g==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.1.tgz",
+ "integrity": "sha512-NtSJVKcXwcqozOl+FwI41OH3OApDyLk3kqTJgx8+gp6On9ZEt5mYhIsKNPGuaZr3p9T6NWPKGU/03Vw4CNU9qg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.1.tgz",
+ "integrity": "sha512-JYA3qvCOLXSsnTR3oiyGws1Dm0YTuxAAeaYGVlGpUsHqloPcFjPg+X0Fj2qODGLNwQOAcCiQmHub/V007kiH5A==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.1.tgz",
+ "integrity": "sha512-J8o22LuF0kTe7m+8PvW9wk3/bRq5+mRo5Dqo6+vXb7otCm3TPhYOJqOaQtGU9YMWQSL3krMnoOxMr0+9E6F3Ug==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@swc/helpers": {
+ "version": "0.5.17",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz",
+ "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==",
+ "dependencies": {
+ "tslib": "^2.8.0"
+ }
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
+ "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz",
+ "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==",
+ "dependencies": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="
+ },
+ "node_modules/@types/event-source-polyfill": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/event-source-polyfill/-/event-source-polyfill-1.0.5.tgz",
+ "integrity": "sha512-iaiDuDI2aIFft7XkcwMzDWLqo7LVDixd2sR6B4wxJut9xcp/Ev9bO4EFg4rm6S9QxATLBj5OPxdeocgmhjwKaw==",
+ "dev": true
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "24.0.4",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.4.tgz",
+ "integrity": "sha512-ulyqAkrhnuNq9pB76DRBTkcS6YsmDALy6Ua63V8OhrOBgbcYt6IOdzpw5P1+dyRIyMerzLkeYWBeOXPpA9GMAA==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "undici-types": "~7.8.0"
+ }
+ },
+ "node_modules/@types/parse-json": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
+ "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
+ "peer": true
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.15",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz",
+ "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==",
+ "dev": true
+ },
+ "node_modules/@types/react": {
+ "version": "18.3.23",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz",
+ "integrity": "sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==",
+ "dev": true,
+ "dependencies": {
+ "@types/prop-types": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "18.3.7",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz",
+ "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==",
+ "dev": true,
+ "peerDependencies": {
+ "@types/react": "^18.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "8.35.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.35.0.tgz",
+ "integrity": "sha512-ijItUYaiWuce0N1SoSMrEd0b6b6lYkYt99pqCPfybd+HKVXtEvYhICfLdwp42MhiI5mp0oq7PKEL+g1cNiz/Eg==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "8.35.0",
+ "@typescript-eslint/type-utils": "8.35.0",
+ "@typescript-eslint/utils": "8.35.0",
+ "@typescript-eslint/visitor-keys": "8.35.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^7.0.0",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^8.35.0",
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
+ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "8.35.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.35.0.tgz",
+ "integrity": "sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "8.35.0",
+ "@typescript-eslint/types": "8.35.0",
+ "@typescript-eslint/typescript-estree": "8.35.0",
+ "@typescript-eslint/visitor-keys": "8.35.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/project-service": {
+ "version": "8.35.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.35.0.tgz",
+ "integrity": "sha512-41xatqRwWZuhUMF/aZm2fcUsOFKNcG28xqRSS6ZVr9BVJtGExosLAm5A1OxTjRMagx8nJqva+P5zNIGt8RIgbQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/tsconfig-utils": "^8.35.0",
+ "@typescript-eslint/types": "^8.35.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "8.35.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.35.0.tgz",
+ "integrity": "sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "8.35.0",
+ "@typescript-eslint/visitor-keys": "8.35.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/tsconfig-utils": {
+ "version": "8.35.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.35.0.tgz",
+ "integrity": "sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "8.35.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.35.0.tgz",
+ "integrity": "sha512-ceNNttjfmSEoM9PW87bWLDEIaLAyR+E6BoYJQ5PfaDau37UGca9Nyq3lBk8Bw2ad0AKvYabz6wxc7DMTO2jnNA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "8.35.0",
+ "@typescript-eslint/utils": "8.35.0",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.35.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.0.tgz",
+ "integrity": "sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.35.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.35.0.tgz",
+ "integrity": "sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/project-service": "8.35.0",
+ "@typescript-eslint/tsconfig-utils": "8.35.0",
+ "@typescript-eslint/types": "8.35.0",
+ "@typescript-eslint/visitor-keys": "8.35.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.2",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/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,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.35.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.35.0.tgz",
+ "integrity": "sha512-nqoMu7WWM7ki5tPgLVsmPM8CkqtoPUG6xXGeefM5t4x3XumOEKMoUZPdi+7F+/EotukN4R9OWdmDxN80fqoZeg==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.7.0",
+ "@typescript-eslint/scope-manager": "8.35.0",
+ "@typescript-eslint/types": "8.35.0",
+ "@typescript-eslint/typescript-estree": "8.35.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.35.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.35.0.tgz",
+ "integrity": "sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "8.35.0",
+ "eslint-visitor-keys": "^4.2.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@vitejs/plugin-react": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.6.0.tgz",
+ "integrity": "sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==",
+ "dependencies": {
+ "@babel/core": "^7.27.4",
+ "@babel/plugin-transform-react-jsx-self": "^7.27.1",
+ "@babel/plugin-transform-react-jsx-source": "^7.27.1",
+ "@rolldown/pluginutils": "1.0.0-beta.19",
+ "@types/babel__core": "^7.20.5",
+ "react-refresh": "^0.17.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0"
+ }
+ },
+ "node_modules/@zag-js/accordion": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/accordion/-/accordion-1.15.2.tgz",
+ "integrity": "sha512-4ooxmmnEDeRLPLOCsrQeLHcTj+xTqBHm6pYEdho/pb67lHujAUSnbfEryorBSfvJEWdiUTYts96EfsLfbn5SYA==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/anatomy": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/anatomy/-/anatomy-1.15.2.tgz",
+ "integrity": "sha512-GiWZk+fqO/W15FIRVhUL237xZmYMm/gcrp8b4VJGLpZE4qaQaBd4kSYObhIl/7AnLC45VjKbV7c8fLxZKd/5kA=="
+ },
+ "node_modules/@zag-js/angle-slider": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/angle-slider/-/angle-slider-1.15.2.tgz",
+ "integrity": "sha512-ItcDlKHJbPFfPGmmiCGcWcd0Y8xC+WH5Dji7+uzBl40L9hh8si7/FrY9EB2cX/qUTDppNyicLPIDnZRGkByTOA==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/rect-utils": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/aria-hidden": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/aria-hidden/-/aria-hidden-1.15.2.tgz",
+ "integrity": "sha512-Uwt86QpEaI4qLFS/k4C7rwIfyiH8EdE5a4AWiQ26WsL8VOpjROn65rBEOJ8q3fG5CJXbdcqaYK3lg4ldqf9irQ=="
+ },
+ "node_modules/@zag-js/auto-resize": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/auto-resize/-/auto-resize-1.15.2.tgz",
+ "integrity": "sha512-Mg3IN3eIP2wKBFRm5qti/rjKpTj7sfIVNfO9BgWdHDSzli1VwaBX7GaOE3nGc1tZ2nJ8n0SWRvRSzr3b57cwKw==",
+ "dependencies": {
+ "@zag-js/dom-query": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/avatar": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/avatar/-/avatar-1.15.2.tgz",
+ "integrity": "sha512-4aG2ETJbdMTALyXwU/DeGfjs/dM0Kllje+t5ov52fQrtkY123JdrvKQkcvsc7Luph1kdN1tC1/2fe/pDMhycCg==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/carousel": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/carousel/-/carousel-1.15.2.tgz",
+ "integrity": "sha512-7bcyEtWIhv7kw+V4H+Fv5rE8I8lf0LQOj+m3HTYzWo+wiLybFfI8/bg1qywjSYKsgZr3gmGVCEZhfx3BSpP3eA==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/scroll-snap": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/checkbox": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/checkbox/-/checkbox-1.15.2.tgz",
+ "integrity": "sha512-Ay/+rpKbxL4jE1pwVw52h0t79PpiifA6QlYnV4E+hWl1yJBkMRIi76Ryhqvqp4yY+2Wyr9OfDA9eHmQjapG4VA==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/focus-visible": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/clipboard": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/clipboard/-/clipboard-1.15.2.tgz",
+ "integrity": "sha512-EE5OlsIYbBklo62qu3A7GiUnsgmoGaoDZvhpYvpNM8StWNeRREcJZXRIizv4aFC46e5eODzSNcebnMLYa8Wcgw==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/collapsible": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/collapsible/-/collapsible-1.15.2.tgz",
+ "integrity": "sha512-vvUXQMFgwsZJphE4Ml5ap4FVhtyLOqK2QXPbt2+F8X8SRwJ3/pqsSsLFdH+ALpNoCK6WF9j+8FZ4lyidr7XPDw==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/collection": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/collection/-/collection-1.15.2.tgz",
+ "integrity": "sha512-bJ9EtZ1Cpjh/rQFDMPTPrky/eSfaLpHWmMnk/S9b7wi+OhC0Hoqw38lcWzfc0AaE4bJsfru9/FLIsCDOLf7TSg==",
+ "dependencies": {
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/color-picker": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/color-picker/-/color-picker-1.15.2.tgz",
+ "integrity": "sha512-UOYHECq+X6hSrgSxwBt5O4Y6f2IdOGMhe7P/LFev7Yn0x1F9fMxJZCIzvQGaQ2V/hR0eTatiKk5SmOp9+dJA/g==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/color-utils": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/color-utils": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/color-utils/-/color-utils-1.15.2.tgz",
+ "integrity": "sha512-c167QcxiVHgFZ7ca0PSQZ7skhbBOd6u1lIyWYzkZ2uPf0yJndqP9gFYPMbwK6d4WIM9k6y6mLdsWCGpqIJJsIg==",
+ "dependencies": {
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/combobox": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/combobox/-/combobox-1.15.2.tgz",
+ "integrity": "sha512-lZXW99NLnRfLLY1ZOE0oqo4wMDglkUjKV1UZaHyj+yqXsiMtWhKQFQW/JeVBRDe6RCv8wWPPHMycNANMw581gQ==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/aria-hidden": "1.15.2",
+ "@zag-js/collection": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/core": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/core/-/core-1.15.2.tgz",
+ "integrity": "sha512-yUnh4I0nZ8rlszWgF402F5vGoYw7DNwStYz2TAO+4E08BpKBATw3FEdqAHPm+2xZm5qPqnPbM4iObwUlkBQUEw==",
+ "dependencies": {
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/date-picker": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/date-picker/-/date-picker-1.15.2.tgz",
+ "integrity": "sha512-KElAFm3fW4GKGUNUe+jqqUX+P1H+Cigp/eGRgIl0dUjCwHocD1oN0ZCwNYmf7SJoWSgPRc1UJdA4XvpdU0IwPQ==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/date-utils": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/live-region": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ },
+ "peerDependencies": {
+ "@internationalized/date": ">=3.0.0"
+ }
+ },
+ "node_modules/@zag-js/date-utils": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/date-utils/-/date-utils-1.15.2.tgz",
+ "integrity": "sha512-U+HtfdtHJ5ed2ys8izMhu8gY5jQigCd8ExPN5Cxg5CoIbSkho9NT8o/eO9OW71jc2F4kwBh+q0reyxxLJnTSbw==",
+ "peerDependencies": {
+ "@internationalized/date": ">=3.0.0"
+ }
+ },
+ "node_modules/@zag-js/dialog": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/dialog/-/dialog-1.15.2.tgz",
+ "integrity": "sha512-LUF+tiiUJj7v24txhC0TOwEgsfj1GCogAmBaiJKxvqrDEDv1B91J0b6SUQ5TuTMLW+hlBEzXZw0QsTxa9OXBew==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/aria-hidden": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/focus-trap": "1.15.2",
+ "@zag-js/remove-scroll": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/dismissable": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/dismissable/-/dismissable-1.15.2.tgz",
+ "integrity": "sha512-+WY8a1L+L8hXPGmWKqOsSg2KCHabVWXEX8mewHamltpSb86+2WMmblpLNgTwbm6V0T6txf1N8lFuzWMojMEWSg==",
+ "dependencies": {
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/interact-outside": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/dom-query": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/dom-query/-/dom-query-1.15.2.tgz",
+ "integrity": "sha512-+r9Xj6hiQj9b2ZNkT3E/bDaXgigoAkhtikDXov9duAY14pFFJxazXr0NcVgacik8ytAEt6XOOshLcAftyalRKg==",
+ "dependencies": {
+ "@zag-js/types": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/editable": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/editable/-/editable-1.15.2.tgz",
+ "integrity": "sha512-32v7DXDBnDX1CiFpGRh9uclu48UJQJT2QZPQ0Bys3ZOFgMxsWH6tCKDb7iQTcINIc/XIx/9nclWnV5egzimG9w==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/interact-outside": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/file-upload": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/file-upload/-/file-upload-1.15.2.tgz",
+ "integrity": "sha512-Zgac/da5QrUlE0ItlNy1kyMXfTy4ynTWnq4aZ4wZ9eVHUFQhLXERv8l+hYJetImISnuclmNVxNKP8Xk+5t4+tA==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/file-utils": "1.15.2",
+ "@zag-js/i18n-utils": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/file-utils": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/file-utils/-/file-utils-1.15.2.tgz",
+ "integrity": "sha512-aNUEBJUeK6G3pyf+zYnIMg0GgJnInddjGRedFeTnfK1UmlSO8wTbxQTCvjWd4Nnr5eCTpQkRq6wTZy8JeIcOpw==",
+ "dependencies": {
+ "@zag-js/i18n-utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/floating-panel": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/floating-panel/-/floating-panel-1.15.2.tgz",
+ "integrity": "sha512-8oG2MRXWWeXws7iVDmJFBqHLHYOGLvYe+vgXI3vgnLhmS4SeX9qAJj6qIOar7htOmEtp1p/KiBo2w2MYtzjuAw==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/rect-utils": "1.15.2",
+ "@zag-js/store": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/focus-trap": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/focus-trap/-/focus-trap-1.15.2.tgz",
+ "integrity": "sha512-5EU5/Cg80oNO3z83A/33t9SOVYvLqLOuSPxt/7Xzy/L1Vj3vUj+s1ox6IpECmEFJcuql7X5yt6VIVitrLtgbFA==",
+ "dependencies": {
+ "@zag-js/dom-query": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/focus-visible": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-1.15.2.tgz",
+ "integrity": "sha512-zElE5T41p5QaB4856xK2SeERmHrKbA/UMzoyHzrAk/N1r6dNiMOOx1hMyHy7y6pEhC9kjJFwEpXi1QEel6/ELA==",
+ "dependencies": {
+ "@zag-js/dom-query": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/highlight-word": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/highlight-word/-/highlight-word-1.15.2.tgz",
+ "integrity": "sha512-2a49h4k0ISIDydaZZDdASEHJpwxJeuZHSPCE7cM3/BWCR3H5galeC/jbNWRlTJVH4OQTYAR0I2wILQvOWLhSrw=="
+ },
+ "node_modules/@zag-js/hover-card": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/hover-card/-/hover-card-1.15.2.tgz",
+ "integrity": "sha512-FfNmhow8MPMp5RgTeC87x4EStFw+d1137w4QZ+fC5PystRzxGeiyDJyLRYGVeIQO2oP463az70vnxsbFAMu98A==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/i18n-utils": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/i18n-utils/-/i18n-utils-1.15.2.tgz",
+ "integrity": "sha512-1RnqCaxe+l4UR1O3fhn04T+J62yw/SkCByhrhrPSis/H7a65nW0WsoWiJTIgWp/hN9HI2Y3dVFfMEwQUFFHG1g==",
+ "dependencies": {
+ "@zag-js/dom-query": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/interact-outside": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/interact-outside/-/interact-outside-1.15.2.tgz",
+ "integrity": "sha512-WbCICcMJHL6yS8vaou0FvKV6shl1Z+CefF7yzn5MEshPLbmy33WGQ2KBzodTkIQFM/C/zdVz5xKl8TbQmi7jUg==",
+ "dependencies": {
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/listbox": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/listbox/-/listbox-1.15.2.tgz",
+ "integrity": "sha512-V6Zbi8HTiyhsV4GhFaiFYL2bJo4lOt24/SA9M/T5D7ZH+bTm3itPUxYddIBi9w6yRTU0gsorosD2GyFkHjchvg==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/collection": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/focus-visible": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/live-region": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/live-region/-/live-region-1.15.2.tgz",
+ "integrity": "sha512-dIrfDlKyNz99CQVeHu9RHe/x+yTBm3wFA7H655DXL7CugO9tpTlynkrTG9AB+0Z84JKZTeHh0vGVa2chTWKrNg=="
+ },
+ "node_modules/@zag-js/menu": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/menu/-/menu-1.15.2.tgz",
+ "integrity": "sha512-54dGUChMLyTrkCGbKGh0R8l/cg0vPFnGZwMG96zYJhkmXdpDMECZgBrN3j7B6RtEIvlAR8fMH5Sya58Amb3lGg==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/rect-utils": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/number-input": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/number-input/-/number-input-1.15.2.tgz",
+ "integrity": "sha512-qtDAVUdMXBhufBSwAgi8MXm7zHb36ujfWmxCJg6HbjKVF0BEAxeoye5VexgyYul7Hp8+Rr9LkW8X35W4amjJEQ==",
+ "dependencies": {
+ "@internationalized/number": "3.6.3",
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/pagination": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/pagination/-/pagination-1.15.2.tgz",
+ "integrity": "sha512-k1jT7UWDwgkYVsf83TTUhks6iZ7aQpcEjQ+iWI2LbZu98+bVhX9hpHfxdWbvTbueGk6WjB2xa1X0tsktII1mmQ==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/password-input": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/password-input/-/password-input-1.15.2.tgz",
+ "integrity": "sha512-9BpQ26Z9XoCiNAHOmx3zwa+62+C6358/az0h3N24P4qS1EdTVWkhG1tsyPhRElg4v1koavZ40RMUppJQBH+DmA==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/pin-input": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/pin-input/-/pin-input-1.15.2.tgz",
+ "integrity": "sha512-1KjGGmyldtEb4RwwdBTKzbgAwpNT6CyY274LvQC8lTCEUYOBkUmS9OUaKUbwkoluCdmXrugpg/XMulisRmMtgg==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/popover": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/popover/-/popover-1.15.2.tgz",
+ "integrity": "sha512-6cD4eTwwj/bkTCDWVk0dMFqg01iD7qJofRSU3da7nde1Y0TMz8gBlt++GASgCF4p/hPeGLD18GcIF8FKka9IlA==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/aria-hidden": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/focus-trap": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/remove-scroll": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/popper": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/popper/-/popper-1.15.2.tgz",
+ "integrity": "sha512-5uaFW9IU8bj3NdEiyuSp2eVJaPvWoA6/q7Fh423Va8booMYW4k1KFmz2BSxQ3JfK5lt3vPI0X2026gSxTx/vmg==",
+ "dependencies": {
+ "@floating-ui/dom": "1.7.1",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/presence": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/presence/-/presence-1.15.2.tgz",
+ "integrity": "sha512-cNPJz3qeXdoYFEefxFixZoMDFzqfHsLgmi2ynmRrFlyHzHtFdvKjvS5ywo9YFGNgwKrEddS43n8gl3w3lgqBCA==",
+ "dependencies": {
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/progress": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/progress/-/progress-1.15.2.tgz",
+ "integrity": "sha512-VPunnrTYiJaHnnCKuh2ZARCnzgTtxYIiNKiUVPWlygsWy2AGg1K3AvVswF2CVfGpwbO4ioyBQO65EZkQiMN/Aw==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/qr-code": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/qr-code/-/qr-code-1.15.2.tgz",
+ "integrity": "sha512-hFtwGGArxVJo7osbY3R73BHIX3Ldb8G4gtNDZ2fGcKAcp+SQg5GXUIBK17ncxJrOC7A1Wp7sdOoYNNOPWe2fYA==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2",
+ "proxy-memoize": "3.0.1",
+ "uqr": "0.1.2"
+ }
+ },
+ "node_modules/@zag-js/radio-group": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/radio-group/-/radio-group-1.15.2.tgz",
+ "integrity": "sha512-+V9Y4EZuNITMbA9iJisysqWW+JB3YdlFF6dAomvXN8nuOuj8HE02JHndIeMflDtW6Tz99JcJLS7lNXN7G5uEuw==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/focus-visible": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/rating-group": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/rating-group/-/rating-group-1.15.2.tgz",
+ "integrity": "sha512-g7F9NyB1MF6ydE9aEr9zLPXGKXZIH2ZsUBXEQ9u6apUhnchhCSHDw6xHVXI1hYGrJHnpf2xMw3Xu1opJge1DQg==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/react": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/react/-/react-1.15.2.tgz",
+ "integrity": "sha512-T5QPiLbW4DoQ32NS5+Qu9NsIXKKz0d5MOpfEdXXuc6hKZdvV+V9d7EXeHBRohs3P6jqtf8FXpXDdK2trv37YlQ==",
+ "dependencies": {
+ "@zag-js/core": "1.15.2",
+ "@zag-js/store": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ },
+ "peerDependencies": {
+ "react": ">=18.0.0",
+ "react-dom": ">=18.0.0"
+ }
+ },
+ "node_modules/@zag-js/rect-utils": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/rect-utils/-/rect-utils-1.15.2.tgz",
+ "integrity": "sha512-wPsOM4qYncwOli20MNINgl0ZwmMY11RvrgPvjcMrkJ9dVqU/YrCcXV4rIg8Zig5jxCT+mf7rWQe9aQJlNTVipA=="
+ },
+ "node_modules/@zag-js/remove-scroll": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/remove-scroll/-/remove-scroll-1.15.2.tgz",
+ "integrity": "sha512-pXVuvFcAQND+C0KAzAve02hGaI/AgEhC7RpgpyUKaUzEccEsxLi40C88j1/2HCfta6GI7nd2e0QwPZiqngUIyA==",
+ "dependencies": {
+ "@zag-js/dom-query": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/scroll-snap": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/scroll-snap/-/scroll-snap-1.15.2.tgz",
+ "integrity": "sha512-RswpsMHg0aWHsx7xqybnPm8bTL9ow17z9GhYgxSWtIi2U9wgkUHDtEJQcRNUA9PQEGyVd29B39NM0ir64HAhNQ==",
+ "dependencies": {
+ "@zag-js/dom-query": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/select": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/select/-/select-1.15.2.tgz",
+ "integrity": "sha512-Y07RlBIc8bVj2WklhS7tiVySZntBv9TE9sfiA8RcLU7KFFGTdS2XUoQV4fziJubUL8XFhNzEC92/bKeBLqpgDw==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/collection": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/signature-pad": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/signature-pad/-/signature-pad-1.15.2.tgz",
+ "integrity": "sha512-vw7oD7afBfGvUyotJrFl+PjPVYOYZLgQ1eVAosKj54phgKvxheBr8/ySq9vlyTkyvOMjJ8zIkkxlywuqoZzl8g==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2",
+ "perfect-freehand": "^1.2.2"
+ }
+ },
+ "node_modules/@zag-js/slider": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/slider/-/slider-1.15.2.tgz",
+ "integrity": "sha512-Lcrm+h4Vx0stD0ybAqD5tA1qOnrKEfQP9ucQsPUy+fY2em19XC6raOVOhAc6ROx4X0neTI/yEc1ARJQSaxtRZw==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/splitter": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/splitter/-/splitter-1.15.2.tgz",
+ "integrity": "sha512-LIuTTPRaw3inS64f2TLcFIlwjNe9Tx9mSE4VXf7wPhYitNKmyh7MeNE59na+wDzZisVwx9yBewAPfrZtbHDGBA==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/steps": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/steps/-/steps-1.15.2.tgz",
+ "integrity": "sha512-NnS3wYQrFWA5OXu+jnlnPpm49rGpzHCDbN2UuUcMGvbYVETKEXEO9fC1XWh7PstVuNi03E/CrZGHl5cEjf/j8w==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/store": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/store/-/store-1.15.2.tgz",
+ "integrity": "sha512-oDJuRdu8SaGab06UycN96OgvNau1ynawDNNfQNhA7zoOIZlaJH6jP+5YaAPFila+wyjdw7svz5+4ejs8vXcjpw==",
+ "dependencies": {
+ "proxy-compare": "3.0.1"
+ }
+ },
+ "node_modules/@zag-js/switch": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/switch/-/switch-1.15.2.tgz",
+ "integrity": "sha512-2aEm5HDP/ENcLvoP77CH7DQTPXIMUzVilefHlz6WT0tQxQzOw8uMhUOYYcuNmEq0FNRUOyuMEMyZnZFUYAxqvQ==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/focus-visible": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/tabs": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/tabs/-/tabs-1.15.2.tgz",
+ "integrity": "sha512-SJMR4K59sxvNZEIgnJfbweLzncmgxRWTBm+FamwMtP8DKQ3RETNdjrn4aA9qLUsCObapk06KT3iTeiCXzuBaFA==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/tags-input": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/tags-input/-/tags-input-1.15.2.tgz",
+ "integrity": "sha512-/mAuB8emhGoo3eoIgmlT/kQE27ukRlhghgwp3OjvEen+iTpz0XIWM+S+IV3QU6U4DlhwkadQaINht/c9ln6gxQ==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/auto-resize": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/interact-outside": "1.15.2",
+ "@zag-js/live-region": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/time-picker": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/time-picker/-/time-picker-1.15.2.tgz",
+ "integrity": "sha512-Aoe9GdbrvAMP1fdOEmzCESr/dO+cGnqhCoa0UkZB5wuB4dT3S02hRGSZsHO51Eon2NpzHPG9j+/alncwOe77Tw==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ },
+ "peerDependencies": {
+ "@internationalized/date": ">=3.0.0"
+ }
+ },
+ "node_modules/@zag-js/timer": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/timer/-/timer-1.15.2.tgz",
+ "integrity": "sha512-v8RN3cwFuNXxuDMuxxfXKCSd+Z1UT6Ct+ueU3PRZqHqXU9u4k9Mm+vROIqnNzhCCdIHNxsqUt32/2zsRRaubbw==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/toast": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/toast/-/toast-1.15.2.tgz",
+ "integrity": "sha512-OohJvGTy+J1MpydJ4eCV36picggfF9VbDW4nK97TT+4bIIRDgW+PGYgB4dd+PvEjRrk9194Kkm93lud95yOyZg==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/toggle": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/toggle/-/toggle-1.15.2.tgz",
+ "integrity": "sha512-wtDeIRhDeVhaUboWQ2GrxlCC4+cLRyZzvZiN84tad7H/sUKq9hNDdROcCnIYBhEkb1Qf4sjR8KszY12YLtJx6A==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/toggle-group": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/toggle-group/-/toggle-group-1.15.2.tgz",
+ "integrity": "sha512-JhWV0GY2NRgDhlzP73ADlG1E4NFXqv1h2q5+m3Rmos+Bi8soOV437jch/wy+M+xYN5vdZCczXJu9BumHNlknhA==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/tooltip": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/tooltip/-/tooltip-1.15.2.tgz",
+ "integrity": "sha512-Spw5ewga3DNaT5H4AnrtsxJ6ebRoTxy+igwojGTYUCNUoxyQn6W3UpqZpgAAfw8B236bduTRh9MW9CsaM/hnmg==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/focus-visible": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/store": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/tour": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/tour/-/tour-1.15.2.tgz",
+ "integrity": "sha512-OW+autOwwsVMGwcYCxdCh3Hibeeag6Sg8w02XfmX7E+T2u9a+GGdLOrH7DPM2oHTbZV0iBUqIaKxGPKgRYZNng==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dismissable": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/focus-trap": "1.15.2",
+ "@zag-js/interact-outside": "1.15.2",
+ "@zag-js/popper": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/tree-view": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/tree-view/-/tree-view-1.15.2.tgz",
+ "integrity": "sha512-HWDHH3rpGEz3IN5bsj8EHZnU0ttk8uJwBOnH3reYcFQEQskA8cmyzd7y9hdBEn8PzAns+iOjUBj49IVmoYpOIg==",
+ "dependencies": {
+ "@zag-js/anatomy": "1.15.2",
+ "@zag-js/collection": "1.15.2",
+ "@zag-js/core": "1.15.2",
+ "@zag-js/dom-query": "1.15.2",
+ "@zag-js/types": "1.15.2",
+ "@zag-js/utils": "1.15.2"
+ }
+ },
+ "node_modules/@zag-js/types": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/types/-/types-1.15.2.tgz",
+ "integrity": "sha512-qEHNRA/uOYQjvXzI/ie6vuOD74/p7w6MA4X1VoZEYF2/sbIQjlRn6SzpeV3RyFZBzl6WBO6RqV/XEbgpvGSb5w==",
+ "dependencies": {
+ "csstype": "3.1.3"
+ }
+ },
+ "node_modules/@zag-js/utils": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@zag-js/utils/-/utils-1.15.2.tgz",
+ "integrity": "sha512-JdlyGT6yfG2ub2FftrB6BidIlvD04cSwdKYJGb/M+NJ7p7uxnZUZMxAjeBmTLhM1nWbtJPVq3oDTYz/cBBZLng=="
+ },
+ "node_modules/acorn": {
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-colors": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
+ "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/babel-plugin-macros": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
+ "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "cosmiconfig": "^7.0.0",
+ "resolve": "^1.19.0"
+ },
+ "engines": {
+ "node": ">=10",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.25.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz",
+ "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001726",
+ "electron-to-chromium": "^1.5.173",
+ "node-releases": "^2.0.19",
+ "update-browserslist-db": "^1.1.3"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/bundle-name": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
+ "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
+ "dev": true,
+ "dependencies": {
+ "run-applescript": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/c12": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/c12/-/c12-2.0.1.tgz",
+ "integrity": "sha512-Z4JgsKXHG37C6PYUtIxCfLJZvo6FyhHJoClwwb9ftUkLpPSkuYqn6Tr+vnaN8hymm0kIbcg6Ey3kv/Q71k5w/A==",
+ "dev": true,
+ "dependencies": {
+ "chokidar": "^4.0.1",
+ "confbox": "^0.1.7",
+ "defu": "^6.1.4",
+ "dotenv": "^16.4.5",
+ "giget": "^1.2.3",
+ "jiti": "^2.3.0",
+ "mlly": "^1.7.1",
+ "ohash": "^1.1.4",
+ "pathe": "^1.1.2",
+ "perfect-debounce": "^1.0.0",
+ "pkg-types": "^1.2.0",
+ "rc9": "^2.1.2"
+ },
+ "peerDependencies": {
+ "magicast": "^0.3.5"
+ },
+ "peerDependenciesMeta": {
+ "magicast": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001726",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz",
+ "integrity": "sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "dev": true,
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/citty": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz",
+ "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==",
+ "dev": true,
+ "dependencies": {
+ "consola": "^3.2.3"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "dev": true,
+ "bin": {
+ "color-support": "bin.js"
+ }
+ },
+ "node_modules/commander": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-13.0.0.tgz",
+ "integrity": "sha512-oPYleIY8wmTVzkvQq10AEok6YcTC4sRUBl8F9gVuwchGVUCTbl/vhLTaQqutuuySYOsu8YTgV+OxKc/8Yvx+mQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/confbox": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
+ "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==",
+ "dev": true
+ },
+ "node_modules/consola": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
+ "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
+ "dev": true,
+ "engines": {
+ "node": "^14.18.0 || >=16.10.0"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
+ },
+ "node_modules/cookie": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
+ "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/cosmiconfig": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
+ "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+ "peer": true,
+ "dependencies": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.2.1",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.10.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cosmiconfig/node_modules/yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "peer": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+ },
+ "node_modules/debug": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/default-browser": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz",
+ "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
+ "dev": true,
+ "dependencies": {
+ "bundle-name": "^4.1.0",
+ "default-browser-id": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser-id": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz",
+ "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/defu": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
+ "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
+ "dev": true
+ },
+ "node_modules/destr": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz",
+ "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==",
+ "dev": true
+ },
+ "node_modules/dotenv": {
+ "version": "16.5.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz",
+ "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.176",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.176.tgz",
+ "integrity": "sha512-2nDK9orkm7M9ZZkjO3PjbEd3VUulQLyg5T9O3enJdFvUg46Hzd4DUvTvAuEgbdHYXyFsiG4A5sO9IzToMH1cDg=="
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "peer": true,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz",
+ "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==",
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.5",
+ "@esbuild/android-arm": "0.25.5",
+ "@esbuild/android-arm64": "0.25.5",
+ "@esbuild/android-x64": "0.25.5",
+ "@esbuild/darwin-arm64": "0.25.5",
+ "@esbuild/darwin-x64": "0.25.5",
+ "@esbuild/freebsd-arm64": "0.25.5",
+ "@esbuild/freebsd-x64": "0.25.5",
+ "@esbuild/linux-arm": "0.25.5",
+ "@esbuild/linux-arm64": "0.25.5",
+ "@esbuild/linux-ia32": "0.25.5",
+ "@esbuild/linux-loong64": "0.25.5",
+ "@esbuild/linux-mips64el": "0.25.5",
+ "@esbuild/linux-ppc64": "0.25.5",
+ "@esbuild/linux-riscv64": "0.25.5",
+ "@esbuild/linux-s390x": "0.25.5",
+ "@esbuild/linux-x64": "0.25.5",
+ "@esbuild/netbsd-arm64": "0.25.5",
+ "@esbuild/netbsd-x64": "0.25.5",
+ "@esbuild/openbsd-arm64": "0.25.5",
+ "@esbuild/openbsd-x64": "0.25.5",
+ "@esbuild/sunos-x64": "0.25.5",
+ "@esbuild/win32-arm64": "0.25.5",
+ "@esbuild/win32-ia32": "0.25.5",
+ "@esbuild/win32-x64": "0.25.5"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "9.29.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz",
+ "integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.12.1",
+ "@eslint/config-array": "^0.20.1",
+ "@eslint/config-helpers": "^0.2.1",
+ "@eslint/core": "^0.14.0",
+ "@eslint/eslintrc": "^3.3.1",
+ "@eslint/js": "9.29.0",
+ "@eslint/plugin-kit": "^0.3.1",
+ "@humanfs/node": "^0.16.6",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@humanwhocodes/retry": "^0.4.2",
+ "@types/estree": "^1.0.6",
+ "@types/json-schema": "^7.0.15",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "debug": "^4.3.2",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^8.4.0",
+ "eslint-visitor-keys": "^4.2.1",
+ "espree": "^10.4.0",
+ "esquery": "^1.5.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^8.0.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz",
+ "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-react-refresh": {
+ "version": "0.4.20",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz",
+ "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==",
+ "dev": true,
+ "peerDependencies": {
+ "eslint": ">=8.40"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
+ "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
+ "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.15.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.2.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/event-source-polyfill": {
+ "version": "1.0.31",
+ "resolved": "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.31.tgz",
+ "integrity": "sha512-4IJSItgS/41IxN5UVAVuAyczwZF7ZIEsM1XAoUzIHA6A+xzusEZUutdXz2Nr+MQPLxfTiCvqE79/C8HT8fKFvA=="
+ },
+ "node_modules/eventemitter3": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
+ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fast-safe-stringify": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
+ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="
+ },
+ "node_modules/fastq": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
+ "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
+ "peer": true
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "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
+ },
+ "node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/fs-minipass/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fs-minipass/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "peer": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/giget": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.5.tgz",
+ "integrity": "sha512-r1ekGw/Bgpi3HLV3h1MRBIlSAdHoIMklpaQ3OQLFcRw9PwAj2rqigvIbg+dBUI51OxVI2jsEtDywDBjSiuf7Ug==",
+ "dev": true,
+ "dependencies": {
+ "citty": "^0.1.6",
+ "consola": "^3.4.0",
+ "defu": "^6.1.4",
+ "node-fetch-native": "^1.6.6",
+ "nypm": "^0.5.4",
+ "pathe": "^2.0.3",
+ "tar": "^6.2.1"
+ },
+ "bin": {
+ "giget": "dist/cli.mjs"
+ }
+ },
+ "node_modules/giget/node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz",
+ "integrity": "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/hamt_plus": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/hamt_plus/-/hamt_plus-1.0.2.tgz",
+ "integrity": "sha512-t2JXKaehnMb9paaYA7J0BX8QQAY8lwfQ9Gjf4pg/mk4krt+cmwmU652HOoWonf+7+EQV97ARPMhhVgU1ra2GhA=="
+ },
+ "node_modules/handlebars": {
+ "version": "4.7.8",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
+ "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.5",
+ "neo-async": "^2.6.2",
+ "source-map": "^0.6.1",
+ "wordwrap": "^1.0.0"
+ },
+ "bin": {
+ "handlebars": "bin/handlebars"
+ },
+ "engines": {
+ "node": ">=0.4.7"
+ },
+ "optionalDependencies": {
+ "uglify-js": "^3.1.4"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "peer": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "peer": true,
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "peer": true
+ },
+ "node_modules/is-core-module": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "peer": true,
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "dev": true,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
+ "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
+ "dev": true,
+ "dependencies": {
+ "is-inside-container": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/jiti": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz",
+ "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
+ "devOptional": true,
+ "bin": {
+ "jiti": "lib/jiti-cli.mjs"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "peer": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jwt-decode": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz",
+ "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "peer": true
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minizlib": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minizlib/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minizlib/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mlly": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz",
+ "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.14.0",
+ "pathe": "^2.0.1",
+ "pkg-types": "^1.3.0",
+ "ufo": "^1.5.4"
+ }
+ },
+ "node_modules/mlly/node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true
+ },
+ "node_modules/node-fetch-native": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz",
+ "integrity": "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==",
+ "dev": true
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
+ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="
+ },
+ "node_modules/nypm": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.5.4.tgz",
+ "integrity": "sha512-X0SNNrZiGU8/e/zAB7sCTtdxWTMSIO73q+xuKgglm2Yvzwlo8UoC5FNySQFCvl84uPaeADkqHUZUkWy4aH4xOA==",
+ "dev": true,
+ "dependencies": {
+ "citty": "^0.1.6",
+ "consola": "^3.4.0",
+ "pathe": "^2.0.3",
+ "pkg-types": "^1.3.1",
+ "tinyexec": "^0.3.2",
+ "ufo": "^1.5.4"
+ },
+ "bin": {
+ "nypm": "dist/cli.mjs"
+ },
+ "engines": {
+ "node": "^14.16.0 || >=16.10.0"
+ }
+ },
+ "node_modules/nypm/node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true
+ },
+ "node_modules/ohash": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.6.tgz",
+ "integrity": "sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==",
+ "dev": true
+ },
+ "node_modules/open": {
+ "version": "10.1.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-10.1.2.tgz",
+ "integrity": "sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==",
+ "dev": true,
+ "dependencies": {
+ "default-browser": "^5.2.1",
+ "define-lazy-prop": "^3.0.0",
+ "is-inside-container": "^1.0.0",
+ "is-wsl": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "peer": true
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pathe": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
+ "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
+ "dev": true
+ },
+ "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==",
+ "dev": true
+ },
+ "node_modules/perfect-freehand": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/perfect-freehand/-/perfect-freehand-1.2.2.tgz",
+ "integrity": "sha512-eh31l019WICQ03pkF3FSzHxB8n07ItqIQ++G5UV8JX0zVOXzgTGCqnRR0jJ2h9U8/2uW4W4mtGJELt9kEV0CFQ=="
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pkg-types": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz",
+ "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==",
+ "dev": true,
+ "dependencies": {
+ "confbox": "^0.1.8",
+ "mlly": "^1.7.4",
+ "pathe": "^2.0.1"
+ }
+ },
+ "node_modules/pkg-types/node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true
+ },
+ "node_modules/postcss": {
+ "version": "8.5.6",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/proxy-compare": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-3.0.1.tgz",
+ "integrity": "sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q=="
+ },
+ "node_modules/proxy-memoize": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/proxy-memoize/-/proxy-memoize-3.0.1.tgz",
+ "integrity": "sha512-VDdG/VYtOgdGkWJx7y0o7p+zArSf2383Isci8C+BP3YXgMYDoPd3cCBjw0JdWb6YBb9sFiOPbAADDVTPJnh+9g==",
+ "dependencies": {
+ "proxy-compare": "^3.0.0"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/rc9": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz",
+ "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==",
+ "dev": true,
+ "dependencies": {
+ "defu": "^6.1.4",
+ "destr": "^2.0.3"
+ }
+ },
+ "node_modules/react": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.2"
+ },
+ "peerDependencies": {
+ "react": "^18.3.1"
+ }
+ },
+ "node_modules/react-icons": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz",
+ "integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==",
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "peer": true
+ },
+ "node_modules/react-refresh": {
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
+ "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-router": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.2.tgz",
+ "integrity": "sha512-U7Nv3y+bMimgWjhlT5CRdzHPu2/KVmqPwKUCChW8en5P3znxUqwlYFlbmyj8Rgp1SF6zs5X4+77kBVknkg6a0w==",
+ "dependencies": {
+ "cookie": "^1.0.1",
+ "set-cookie-parser": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=18",
+ "react-dom": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-router-dom": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.2.tgz",
+ "integrity": "sha512-Q8zb6VlTbdYKK5JJBLQEN06oTUa/RAbG/oQS1auK1I0TbJOXktqm+QENEVJU6QvWynlXPRBXI3fiOQcSEA78rA==",
+ "dependencies": {
+ "react-router": "7.6.2"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 14.18.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/recoil": {
+ "version": "0.7.7",
+ "resolved": "https://registry.npmjs.org/recoil/-/recoil-0.7.7.tgz",
+ "integrity": "sha512-8Og5KPQW9LwC577Vc7Ug2P0vQshkv1y3zG3tSSkWMqkWSwHmE+by06L8JtnGocjW6gcCvfwB3YtrJG6/tWivNQ==",
+ "dependencies": {
+ "hamt_plus": "1.0.2"
+ },
+ "peerDependencies": {
+ "react": ">=16.13.1"
+ },
+ "peerDependenciesMeta": {
+ "react-dom": {
+ "optional": true
+ },
+ "react-native": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.10",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
+ "peer": true,
+ "dependencies": {
+ "is-core-module": "^2.16.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "4.44.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.44.1.tgz",
+ "integrity": "sha512-x8H8aPvD+xbl0Do8oez5f5o8eMS3trfCghc4HhLAnCkj7Vl0d1JWGs0UF/D886zLW2rOj2QymV/JcSSsw+XDNg==",
+ "dependencies": {
+ "@types/estree": "1.0.8"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.44.1",
+ "@rollup/rollup-android-arm64": "4.44.1",
+ "@rollup/rollup-darwin-arm64": "4.44.1",
+ "@rollup/rollup-darwin-x64": "4.44.1",
+ "@rollup/rollup-freebsd-arm64": "4.44.1",
+ "@rollup/rollup-freebsd-x64": "4.44.1",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.44.1",
+ "@rollup/rollup-linux-arm-musleabihf": "4.44.1",
+ "@rollup/rollup-linux-arm64-gnu": "4.44.1",
+ "@rollup/rollup-linux-arm64-musl": "4.44.1",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.44.1",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.44.1",
+ "@rollup/rollup-linux-riscv64-gnu": "4.44.1",
+ "@rollup/rollup-linux-riscv64-musl": "4.44.1",
+ "@rollup/rollup-linux-s390x-gnu": "4.44.1",
+ "@rollup/rollup-linux-x64-gnu": "4.44.1",
+ "@rollup/rollup-linux-x64-musl": "4.44.1",
+ "@rollup/rollup-win32-arm64-msvc": "4.44.1",
+ "@rollup/rollup-win32-ia32-msvc": "4.44.1",
+ "@rollup/rollup-win32-x64-msvc": "4.44.1",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/run-applescript": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
+ "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/scheduler": {
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/set-cookie-parser": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
+ "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ=="
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylis": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
+ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==",
+ "peer": true
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "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==",
+ "peer": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/tar": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
+ "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
+ "dev": true,
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/tar/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/tinyexec": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
+ "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
+ "dev": true
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
+ "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
+ "dependencies": {
+ "fdir": "^6.4.4",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/tinyglobby/node_modules/fdir": {
+ "version": "6.4.6",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz",
+ "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==",
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tinyglobby/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/ts-api-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
+ "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.12"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.8.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/typescript-eslint": {
+ "version": "8.35.0",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.35.0.tgz",
+ "integrity": "sha512-uEnz70b7kBz6eg/j0Czy6K5NivaYopgxRjsnAJ2Fx5oTLo3wefTHIbL7AkQr1+7tJCRVpTs/wiM8JR/11Loq9A==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "8.35.0",
+ "@typescript-eslint/parser": "8.35.0",
+ "@typescript-eslint/utils": "8.35.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/ufo": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz",
+ "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==",
+ "dev": true
+ },
+ "node_modules/uglify-js": {
+ "version": "3.19.3",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
+ "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
+ "dev": true,
+ "optional": true,
+ "bin": {
+ "uglifyjs": "bin/uglifyjs"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz",
+ "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==",
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
+ "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uqr": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/uqr/-/uqr-0.1.2.tgz",
+ "integrity": "sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA=="
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/vite": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.0.tgz",
+ "integrity": "sha512-ixXJB1YRgDIw2OszKQS9WxGHKwLdCsbQNkpJN171udl6szi/rIySHL6/Os3s2+oE4P/FLD4dxg4mD7Wust+u5g==",
+ "dependencies": {
+ "esbuild": "^0.25.0",
+ "fdir": "^6.4.6",
+ "picomatch": "^4.0.2",
+ "postcss": "^8.5.6",
+ "rollup": "^4.40.0",
+ "tinyglobby": "^0.2.14"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^20.19.0 || >=22.12.0",
+ "jiti": ">=1.21.0",
+ "less": "^4.0.0",
+ "lightningcss": "^1.21.0",
+ "sass": "^1.70.0",
+ "sass-embedded": "^1.70.0",
+ "stylus": ">=0.54.8",
+ "sugarss": "^5.0.0",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite/node_modules/fdir": {
+ "version": "6.4.6",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz",
+ "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==",
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
+ "dev": true
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ },
+ "node_modules/yaml": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz",
+ "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==",
+ "optional": true,
+ "peer": true,
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14.6"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/frontend/package.json b/frontend/package.json
index 8804cb05c..0c5b64ea1 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -1,85 +1,39 @@
{
"name": "todo-frontend",
- "version": "0.2.1",
"private": true,
+ "version": "0.3.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "tsc -b && vite build",
+ "lint": "eslint .",
+ "preview": "vite preview",
+ "openapi-ts": "openapi-ts"
+ },
"dependencies": {
- "@chakra-ui/icons": "^2.1.0",
- "@chakra-ui/react": "^2.8.0",
- "@chakra-ui/system": "^2.6.0",
- "@emotion/react": "^11.11.1",
- "@emotion/styled": "^11.11.0",
- "@grpc/grpc-js": "^1.8.21",
+ "@chakra-ui/react": "^3.21.0",
+ "@vitejs/plugin-react": "^4.6.0",
+ "event-source-polyfill": "^1.0.31",
"eventemitter3": "^5.0.1",
- "framer-motion": "^11.0.6",
- "google-protobuf": "^3.21.2",
- "grpc-web": "^1.4.2",
"jwt-decode": "^4.0.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-icons": "^5.0.1",
- "react-router-dom": "^6.14.2",
- "recoil": "^0.7.7",
- "source-map-loader": "^5.0.0"
- },
- "scripts": {
- "start": "react-scripts start",
- "build": "react-scripts build",
- "test": "react-scripts test",
- "eject": "react-scripts eject",
- "proto": "protoc -I=. src/bitloops/proto/todo.proto --ts_out=. --ts_opt=target=web,json_names,unary_rpc_promise=true,no_namespace --grpc-web_out=import_style=typescript,mode=grpcwebtext:.",
- "docker:build": "docker build -t todo-frontend .",
- "docker:run": "docker run -dp 3000:3000 --name todo-frontend todo-frontend",
- "docker": "docker build -t todo-frontend . && docker run -dp 3000:3000 --name todo-frontend todo-frontend",
- "postinstall": "patch-package",
- "lint": "eslint ."
- },
- "eslintConfig": {
- "extends": [
- "react-app",
- "react-app/jest"
- ]
- },
- "browserslist": {
- "production": [
- ">0.2%",
- "not dead",
- "not op_mini all"
- ],
- "development": [
- "last 1 chrome version",
- "last 1 firefox version",
- "last 1 safari version"
- ]
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "react-icons": "^5.5.0",
+ "react-router-dom": "^7.6.2",
+ "recoil": "^0.7.7"
},
"devDependencies": {
- "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
- "@testing-library/jest-dom": "^6.4.2",
- "@testing-library/react": "^14.2.1",
- "@testing-library/user-event": "^14.5.2",
- "@types/google-protobuf": "^3.15.6",
- "@types/jest": "^29.5.12",
- "@types/node": "^20.11.20",
- "@types/react": "^18.0.0",
- "@types/react-dom": "^18.0.0",
- "@typescript-eslint/eslint-plugin": ">=6.0.0",
- "@typescript-eslint/parser": ">=6.0.0",
- "eslint": ">=8.0.0",
- "eslint-config-airbnb": "^19.0.4",
- "eslint-config-airbnb-typescript": "^17.1.0",
- "eslint-config-prettier": "^8.9.0",
- "eslint-config-xo": "^0.43.1",
- "eslint-config-xo-typescript": "^1.0.1",
- "eslint-plugin-import": "^2.28.0",
- "eslint-plugin-jsx-a11y": "^6.7.1",
- "eslint-plugin-prettier": "^5.0.0",
- "eslint-plugin-react": "^7.33.1",
- "eslint-plugin-react-hooks": "^4.6.0",
- "patch-package": "^8.0.0",
- "postinstall-postinstall": "^2.1.0",
- "prettier": "^3.0.0",
- "protoc-gen-grpc-web": "^1.4.2",
- "react-scripts": "5.0.1",
- "typescript": "5.1.6",
- "web-vitals": "^3.5.2"
+ "@eslint/js": "^9.29.0",
+ "@hey-api/openapi-ts": "^0.77.0",
+ "@types/event-source-polyfill": "^1.0.5",
+ "@types/react": "^18.3.23",
+ "@types/react-dom": "^18.3.7",
+ "eslint": "^9.29.0",
+ "eslint-plugin-react-hooks": "^5.2.0",
+ "eslint-plugin-react-refresh": "^0.4.20",
+ "globals": "^16.2.0",
+ "typescript": "~5.8.3",
+ "typescript-eslint": "^8.34.1",
+ "vite": "^7.0.0"
}
}
diff --git a/frontend/patches/grpc-web+1.5.0.patch b/frontend/patches/grpc-web+1.5.0.patch
deleted file mode 100644
index 6ab702db3..000000000
--- a/frontend/patches/grpc-web+1.5.0.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/node_modules/grpc-web/index.d.ts b/node_modules/grpc-web/index.d.ts
-index 09fb671..9b6b233 100644
---- a/node_modules/grpc-web/index.d.ts
-+++ b/node_modules/grpc-web/index.d.ts
-@@ -71,8 +71,8 @@ declare module "grpc-web" {
- export class MethodDescriptor {
- constructor(name: string,
- methodType: string,
-- requestType: new (...args: unknown[]) => REQ,
-- responseType: new (...args: unknown[]) => RESP,
-+ requestType: new (...args: any) => REQ,
-+ responseType: new (...args: any) => RESP,
- requestSerializeFn: any,
- responseDeserializeFn: any);
- getName(): string;
diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico
deleted file mode 100644
index 828fefbdf..000000000
Binary files a/frontend/public/favicon.ico and /dev/null differ
diff --git a/frontend/public/index.html b/frontend/public/index.html
deleted file mode 100644
index aa069f27c..000000000
--- a/frontend/public/index.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- React App
-
-
- You need to enable JavaScript to run this app.
-
-
-
-
diff --git a/frontend/public/manifest.json b/frontend/public/manifest.json
deleted file mode 100644
index 3150fcace..000000000
--- a/frontend/public/manifest.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "short_name": "Todo App",
- "name": "Bitloops Todo App Example",
- "icons": [
- {
- "src": "favicon.ico",
- "sizes": "64x64 32x32 24x24 16x16",
- "type": "image/x-icon"
- }
- ],
- "start_url": ".",
- "display": "standalone",
- "theme_color": "#000000",
- "background_color": "#ffffff"
-}
diff --git a/frontend/public/robots.txt b/frontend/public/robots.txt
deleted file mode 100644
index e9e57dc4d..000000000
--- a/frontend/public/robots.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# https://www.robotstxt.org/robotstxt.html
-User-agent: *
-Disallow:
diff --git a/frontend/public/vite.svg b/frontend/public/vite.svg
new file mode 100644
index 000000000..e7b8dfb1b
--- /dev/null
+++ b/frontend/public/vite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 57e3b439a..a47d8347b 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -1,4 +1,4 @@
-import React, { useEffect } from 'react';
+import { useEffect, type JSX } from 'react';
import { useRecoilCallback, useRecoilSnapshot, useSetRecoilState } from 'recoil';
import { BrowserRouter as Router } from 'react-router-dom';
@@ -15,7 +15,7 @@ import {
passwordState,
userState,
} from './state/auth';
-import Todo from './models/Todo';
+import { type Todo } from './models/Todo';
function App(): JSX.Element {
// IamViewModel
diff --git a/frontend/src/Events.ts b/frontend/src/Events.ts
index 2943438f0..356779685 100644
--- a/frontend/src/Events.ts
+++ b/frontend/src/Events.ts
@@ -1,14 +1,35 @@
import { EventEmitter } from 'eventemitter3';
-import { User } from './models/User';
+import { type User } from './models/User';
-export enum Events {
- AUTH_CHANGED = 'AUTH_CHANGED',
- TODO_EVENT = 'TODO_EVENT',
-}
+export const Events = {
+ // Auth events
+ AUTH_CHANGED: 'AUTH_CHANGED',
+ LOGIN_SUCCESS: 'LOGIN_SUCCESS',
+ LOGOUT: 'LOGOUT',
+
+ // Todo events
+ TODO_EVENT: 'TODO_EVENT',
+
+ // SSE events
+ SSE_CONNECTION_ESTABLISHED: 'SSE_CONNECTION_ESTABLISHED',
+ SSE_CONNECTION_ERROR: 'SSE_CONNECTION_ERROR',
+ SSE_CONNECTION_CLOSED: 'SSE_CONNECTION_CLOSED',
+
+ // UI events
+ SHOW_TOAST: 'SHOW_TOAST',
+ HIDE_TOAST: 'HIDE_TOAST',
+} as const;
type EventMap = {
[Events.AUTH_CHANGED]: User | null;
+ [Events.LOGIN_SUCCESS]: User;
+ [Events.LOGOUT]: null;
[Events.TODO_EVENT]: { eventName: string; payload: unknown };
+ [Events.SSE_CONNECTION_ESTABLISHED]: null;
+ [Events.SSE_CONNECTION_ERROR]: { message: string };
+ [Events.SSE_CONNECTION_CLOSED]: null;
+ [Events.SHOW_TOAST]: { message: string; type?: 'success' | 'error' | 'info' | 'warning' };
+ [Events.HIDE_TOAST]: null;
};
class EventBus {
diff --git a/frontend/src/api/client.gen.ts b/frontend/src/api/client.gen.ts
new file mode 100644
index 000000000..4b3c00896
--- /dev/null
+++ b/frontend/src/api/client.gen.ts
@@ -0,0 +1,23 @@
+// This file is auto-generated by @hey-api/openapi-ts
+
+import type { ClientOptions } from './types.gen';
+import {
+ type Config,
+ type ClientOptions as DefaultClientOptions,
+ createClient,
+ createConfig,
+} from './client';
+
+/**
+ * The `createClientConfig()` function will be called on client initialization
+ * and the returned object will become the client's initial configuration.
+ *
+ * You may want to initialize your client this way instead of calling
+ * `setConfig()`. This is useful for example if you're using Next.js
+ * to ensure your client always has the correct values.
+ */
+export type CreateClientConfig = (
+ override?: Config
+) => Config & T>;
+
+export const client = createClient(createConfig());
diff --git a/frontend/src/api/client/client.ts b/frontend/src/api/client/client.ts
new file mode 100644
index 000000000..a7ac4134d
--- /dev/null
+++ b/frontend/src/api/client/client.ts
@@ -0,0 +1,185 @@
+import type { Client, Config, RequestOptions } from './types';
+import {
+ buildUrl,
+ createConfig,
+ createInterceptors,
+ getParseAs,
+ mergeConfigs,
+ mergeHeaders,
+ setAuthParams,
+} from './utils';
+
+type ReqInit = Omit & {
+ body?: any;
+ headers: ReturnType;
+};
+
+export const createClient = (config: Config = {}): Client => {
+ let _config = mergeConfigs(createConfig(), config);
+
+ const getConfig = (): Config => ({ ..._config });
+
+ const setConfig = (config: Config): Config => {
+ _config = mergeConfigs(_config, config);
+ return getConfig();
+ };
+
+ const interceptors = createInterceptors();
+
+ const request: Client['request'] = async (options) => {
+ const opts = {
+ ..._config,
+ ...options,
+ fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,
+ headers: mergeHeaders(_config.headers, options.headers),
+ };
+
+ if (opts.security) {
+ await setAuthParams({
+ ...opts,
+ security: opts.security,
+ });
+ }
+
+ if (opts.requestValidator) {
+ await opts.requestValidator(opts);
+ }
+
+ if (opts.body && opts.bodySerializer) {
+ opts.body = opts.bodySerializer(opts.body);
+ }
+
+ // remove Content-Type header if body is empty to avoid sending invalid requests
+ if (opts.body === undefined || opts.body === '') {
+ opts.headers.delete('Content-Type');
+ }
+
+ const url = buildUrl(opts);
+ const requestInit: ReqInit = {
+ redirect: 'follow',
+ ...opts,
+ };
+
+ let request = new Request(url, requestInit);
+
+ for (const fn of interceptors.request._fns) {
+ if (fn) {
+ request = await fn(request, opts);
+ }
+ }
+
+ // fetch must be assigned here, otherwise it would throw the error:
+ // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation
+ const _fetch = opts.fetch!;
+ let response = await _fetch(request);
+
+ for (const fn of interceptors.response._fns) {
+ if (fn) {
+ response = await fn(response, request, opts);
+ }
+ }
+
+ const result = {
+ request,
+ response,
+ };
+
+ if (response.ok) {
+ if (response.status === 204 || response.headers.get('Content-Length') === '0') {
+ return opts.responseStyle === 'data'
+ ? {}
+ : {
+ data: {},
+ ...result,
+ };
+ }
+
+ const parseAs =
+ (opts.parseAs === 'auto'
+ ? getParseAs(response.headers.get('Content-Type'))
+ : opts.parseAs) ?? 'json';
+
+ let data: any;
+ switch (parseAs) {
+ case 'arrayBuffer':
+ case 'blob':
+ case 'formData':
+ case 'json':
+ case 'text':
+ data = await response[parseAs]();
+ break;
+ case 'stream':
+ return opts.responseStyle === 'data'
+ ? response.body
+ : {
+ data: response.body,
+ ...result,
+ };
+ }
+
+ if (parseAs === 'json') {
+ if (opts.responseValidator) {
+ await opts.responseValidator(data);
+ }
+
+ if (opts.responseTransformer) {
+ data = await opts.responseTransformer(data);
+ }
+ }
+
+ return opts.responseStyle === 'data'
+ ? data
+ : {
+ data,
+ ...result,
+ };
+ }
+
+ let error = await response.text();
+
+ try {
+ error = JSON.parse(error);
+ } catch {
+ // noop
+ }
+
+ let finalError = error;
+
+ for (const fn of interceptors.error._fns) {
+ if (fn) {
+ finalError = (await fn(error, response, request, opts)) as string;
+ }
+ }
+
+ finalError = finalError || ({} as string);
+
+ if (opts.throwOnError) {
+ throw finalError;
+ }
+
+ // TODO: we probably want to return error and improve types
+ return opts.responseStyle === 'data'
+ ? undefined
+ : {
+ error: finalError,
+ ...result,
+ };
+ };
+
+ return {
+ buildUrl,
+ connect: (options) => request({ ...options, method: 'CONNECT' }),
+ delete: (options) => request({ ...options, method: 'DELETE' }),
+ get: (options) => request({ ...options, method: 'GET' }),
+ getConfig,
+ head: (options) => request({ ...options, method: 'HEAD' }),
+ interceptors,
+ options: (options) => request({ ...options, method: 'OPTIONS' }),
+ patch: (options) => request({ ...options, method: 'PATCH' }),
+ post: (options) => request({ ...options, method: 'POST' }),
+ put: (options) => request({ ...options, method: 'PUT' }),
+ request,
+ setConfig,
+ trace: (options) => request({ ...options, method: 'TRACE' }),
+ };
+};
diff --git a/frontend/src/api/client/index.ts b/frontend/src/api/client/index.ts
new file mode 100644
index 000000000..5da1f7aee
--- /dev/null
+++ b/frontend/src/api/client/index.ts
@@ -0,0 +1,22 @@
+export type { Auth } from '../core/auth';
+export type { QuerySerializerOptions } from '../core/bodySerializer';
+export {
+ formDataBodySerializer,
+ jsonBodySerializer,
+ urlSearchParamsBodySerializer,
+} from '../core/bodySerializer';
+export { buildClientParams } from '../core/params';
+export { createClient } from './client';
+export type {
+ Client,
+ ClientOptions,
+ Config,
+ CreateClientConfig,
+ Options,
+ OptionsLegacyParser,
+ RequestOptions,
+ RequestResult,
+ ResponseStyle,
+ TDataShape,
+} from './types';
+export { createConfig, mergeHeaders } from './utils';
diff --git a/frontend/src/api/client/types.ts b/frontend/src/api/client/types.ts
new file mode 100644
index 000000000..1419a864b
--- /dev/null
+++ b/frontend/src/api/client/types.ts
@@ -0,0 +1,192 @@
+import type { Auth } from '../core/auth';
+import type { Client as CoreClient, Config as CoreConfig } from '../core/types';
+import type { Middleware } from './utils';
+
+export type ResponseStyle = 'data' | 'fields';
+
+export interface Config
+ extends Omit,
+ CoreConfig {
+ /**
+ * Base URL for all requests made by this client.
+ */
+ baseUrl?: T['baseUrl'];
+ /**
+ * Fetch API implementation. You can use this option to provide a custom
+ * fetch instance.
+ *
+ * @default globalThis.fetch
+ */
+ fetch?: (request: Request) => ReturnType;
+ /**
+ * Please don't use the Fetch client for Next.js applications. The `next`
+ * options won't have any effect.
+ *
+ * Install {@link https://www.npmjs.com/package/@hey-api/client-next `@hey-api/client-next`} instead.
+ */
+ next?: never;
+ /**
+ * Return the response data parsed in a specified format. By default, `auto`
+ * will infer the appropriate method from the `Content-Type` response header.
+ * You can override this behavior with any of the {@link Body} methods.
+ * Select `stream` if you don't want to parse response data at all.
+ *
+ * @default 'auto'
+ */
+ parseAs?: 'arrayBuffer' | 'auto' | 'blob' | 'formData' | 'json' | 'stream' | 'text';
+ /**
+ * Should we return only data or multiple fields (data, error, response, etc.)?
+ *
+ * @default 'fields'
+ */
+ responseStyle?: ResponseStyle;
+ /**
+ * Throw an error instead of returning it in the response?
+ *
+ * @default false
+ */
+ throwOnError?: T['throwOnError'];
+}
+
+export interface RequestOptions<
+ TResponseStyle extends ResponseStyle = 'fields',
+ ThrowOnError extends boolean = boolean,
+ Url extends string = string,
+> extends Config<{
+ responseStyle: TResponseStyle;
+ throwOnError: ThrowOnError;
+ }> {
+ /**
+ * Any body that you want to add to your request.
+ *
+ * {@link https://developer.mozilla.org/docs/Web/API/fetch#body}
+ */
+ body?: unknown;
+ path?: Record;
+ query?: Record;
+ /**
+ * Security mechanism(s) to use for the request.
+ */
+ security?: ReadonlyArray;
+ url: Url;
+}
+
+export type RequestResult<
+ TData = unknown,
+ TError = unknown,
+ ThrowOnError extends boolean = boolean,
+ TResponseStyle extends ResponseStyle = 'fields',
+> = ThrowOnError extends true
+ ? Promise<
+ TResponseStyle extends 'data'
+ ? TData extends Record
+ ? TData[keyof TData]
+ : TData
+ : {
+ data: TData extends Record ? TData[keyof TData] : TData;
+ request: Request;
+ response: Response;
+ }
+ >
+ : Promise<
+ TResponseStyle extends 'data'
+ ? (TData extends Record ? TData[keyof TData] : TData) | undefined
+ : (
+ | {
+ data: TData extends Record ? TData[keyof TData] : TData;
+ error: undefined;
+ }
+ | {
+ data: undefined;
+ error: TError extends Record ? TError[keyof TError] : TError;
+ }
+ ) & {
+ request: Request;
+ response: Response;
+ }
+ >;
+
+export interface ClientOptions {
+ baseUrl?: string;
+ responseStyle?: ResponseStyle;
+ throwOnError?: boolean;
+}
+
+type MethodFn = <
+ TData = unknown,
+ TError = unknown,
+ ThrowOnError extends boolean = false,
+ TResponseStyle extends ResponseStyle = 'fields',
+>(
+ options: Omit, 'method'>
+) => RequestResult;
+
+type RequestFn = <
+ TData = unknown,
+ TError = unknown,
+ ThrowOnError extends boolean = false,
+ TResponseStyle extends ResponseStyle = 'fields',
+>(
+ options: Omit, 'method'> &
+ Pick>, 'method'>
+) => RequestResult;
+
+type BuildUrlFn = <
+ TData extends {
+ body?: unknown;
+ path?: Record;
+ query?: Record;
+ url: string;
+ },
+>(
+ options: Pick & Options
+) => string;
+
+export type Client = CoreClient & {
+ interceptors: Middleware;
+};
+
+/**
+ * The `createClientConfig()` function will be called on client initialization
+ * and the returned object will become the client's initial configuration.
+ *
+ * You may want to initialize your client this way instead of calling
+ * `setConfig()`. This is useful for example if you're using Next.js
+ * to ensure your client always has the correct values.
+ */
+export type CreateClientConfig = (
+ override?: Config
+) => Config & T>;
+
+export interface TDataShape {
+ body?: unknown;
+ headers?: unknown;
+ path?: unknown;
+ query?: unknown;
+ url: string;
+}
+
+type OmitKeys = Pick>;
+
+export type Options<
+ TData extends TDataShape = TDataShape,
+ ThrowOnError extends boolean = boolean,
+ TResponseStyle extends ResponseStyle = 'fields',
+> = OmitKeys, 'body' | 'path' | 'query' | 'url'> &
+ Omit;
+
+export type OptionsLegacyParser<
+ TData = unknown,
+ ThrowOnError extends boolean = boolean,
+ TResponseStyle extends ResponseStyle = 'fields',
+> = TData extends { body?: any }
+ ? TData extends { headers?: any }
+ ? OmitKeys, 'body' | 'headers' | 'url'> & TData
+ : OmitKeys, 'body' | 'url'> &
+ TData &
+ Pick, 'headers'>
+ : TData extends { headers?: any }
+ ? OmitKeys, 'headers' | 'url'> &
+ TData &
+ Pick, 'body'>
+ : OmitKeys, 'url'> & TData;
diff --git a/frontend/src/api/client/utils.ts b/frontend/src/api/client/utils.ts
new file mode 100644
index 000000000..9a306df50
--- /dev/null
+++ b/frontend/src/api/client/utils.ts
@@ -0,0 +1,394 @@
+import { getAuthToken } from '../core/auth';
+import type { QuerySerializer, QuerySerializerOptions } from '../core/bodySerializer';
+import { jsonBodySerializer } from '../core/bodySerializer';
+import {
+ serializeArrayParam,
+ serializeObjectParam,
+ serializePrimitiveParam,
+} from '../core/pathSerializer';
+import type { Client, ClientOptions, Config, RequestOptions } from './types';
+
+interface PathSerializer {
+ path: Record;
+ url: string;
+}
+
+const PATH_PARAM_RE = /\{[^{}]+\}/g;
+
+type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';
+type MatrixStyle = 'label' | 'matrix' | 'simple';
+type ArraySeparatorStyle = ArrayStyle | MatrixStyle;
+
+const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {
+ let url = _url;
+ const matches = _url.match(PATH_PARAM_RE);
+ if (matches) {
+ for (const match of matches) {
+ let explode = false;
+ let name = match.substring(1, match.length - 1);
+ let style: ArraySeparatorStyle = 'simple';
+
+ if (name.endsWith('*')) {
+ explode = true;
+ name = name.substring(0, name.length - 1);
+ }
+
+ if (name.startsWith('.')) {
+ name = name.substring(1);
+ style = 'label';
+ } else if (name.startsWith(';')) {
+ name = name.substring(1);
+ style = 'matrix';
+ }
+
+ const value = path[name];
+
+ if (value === undefined || value === null) {
+ continue;
+ }
+
+ if (Array.isArray(value)) {
+ url = url.replace(match, serializeArrayParam({ explode, name, style, value }));
+ continue;
+ }
+
+ if (typeof value === 'object') {
+ url = url.replace(
+ match,
+ serializeObjectParam({
+ explode,
+ name,
+ style,
+ value: value as Record,
+ valueOnly: true,
+ })
+ );
+ continue;
+ }
+
+ if (style === 'matrix') {
+ url = url.replace(
+ match,
+ `;${serializePrimitiveParam({
+ name,
+ value: value as string,
+ })}`
+ );
+ continue;
+ }
+
+ const replaceValue = encodeURIComponent(
+ style === 'label' ? `.${value as string}` : (value as string)
+ );
+ url = url.replace(match, replaceValue);
+ }
+ }
+ return url;
+};
+
+export const createQuerySerializer = ({
+ allowReserved,
+ array,
+ object,
+}: QuerySerializerOptions = {}) => {
+ const querySerializer = (queryParams: T) => {
+ const search: string[] = [];
+ if (queryParams && typeof queryParams === 'object') {
+ for (const name in queryParams) {
+ const value = queryParams[name];
+
+ if (value === undefined || value === null) {
+ continue;
+ }
+
+ if (Array.isArray(value)) {
+ const serializedArray = serializeArrayParam({
+ allowReserved,
+ explode: true,
+ name,
+ style: 'form',
+ value,
+ ...array,
+ });
+ if (serializedArray) search.push(serializedArray);
+ } else if (typeof value === 'object') {
+ const serializedObject = serializeObjectParam({
+ allowReserved,
+ explode: true,
+ name,
+ style: 'deepObject',
+ value: value as Record,
+ ...object,
+ });
+ if (serializedObject) search.push(serializedObject);
+ } else {
+ const serializedPrimitive = serializePrimitiveParam({
+ allowReserved,
+ name,
+ value: value as string,
+ });
+ if (serializedPrimitive) search.push(serializedPrimitive);
+ }
+ }
+ }
+ return search.join('&');
+ };
+ return querySerializer;
+};
+
+/**
+ * Infers parseAs value from provided Content-Type header.
+ */
+export const getParseAs = (contentType: string | null): Exclude => {
+ if (!contentType) {
+ // If no Content-Type header is provided, the best we can do is return the raw response body,
+ // which is effectively the same as the 'stream' option.
+ return 'stream';
+ }
+
+ const cleanContent = contentType.split(';')[0]?.trim();
+
+ if (!cleanContent) {
+ return;
+ }
+
+ if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {
+ return 'json';
+ }
+
+ if (cleanContent === 'multipart/form-data') {
+ return 'formData';
+ }
+
+ if (
+ ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))
+ ) {
+ return 'blob';
+ }
+
+ if (cleanContent.startsWith('text/')) {
+ return 'text';
+ }
+
+ return;
+};
+
+export const setAuthParams = async ({
+ security,
+ ...options
+}: Pick, 'security'> &
+ Pick & {
+ headers: Headers;
+ }) => {
+ for (const auth of security) {
+ const token = await getAuthToken(auth, options.auth);
+
+ if (!token) {
+ continue;
+ }
+
+ const name = auth.name ?? 'Authorization';
+
+ switch (auth.in) {
+ case 'query':
+ if (!options.query) {
+ options.query = {};
+ }
+ options.query[name] = token;
+ break;
+ case 'cookie':
+ options.headers.append('Cookie', `${name}=${token}`);
+ break;
+ case 'header':
+ default:
+ options.headers.set(name, token);
+ break;
+ }
+
+ return;
+ }
+};
+
+export const buildUrl: Client['buildUrl'] = (options) => {
+ const url = getUrl({
+ baseUrl: options.baseUrl as string,
+ path: options.path,
+ query: options.query,
+ querySerializer:
+ typeof options.querySerializer === 'function'
+ ? options.querySerializer
+ : createQuerySerializer(options.querySerializer),
+ url: options.url,
+ });
+ return url;
+};
+
+export const getUrl = ({
+ baseUrl,
+ path,
+ query,
+ querySerializer,
+ url: _url,
+}: {
+ baseUrl?: string;
+ path?: Record;
+ query?: Record;
+ querySerializer: QuerySerializer;
+ url: string;
+}) => {
+ const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;
+ let url = (baseUrl ?? '') + pathUrl;
+ if (path) {
+ url = defaultPathSerializer({ path, url });
+ }
+ let search = query ? querySerializer(query) : '';
+ if (search.startsWith('?')) {
+ search = search.substring(1);
+ }
+ if (search) {
+ url += `?${search}`;
+ }
+ return url;
+};
+
+export const mergeConfigs = (a: Config, b: Config): Config => {
+ const config = { ...a, ...b };
+ if (config.baseUrl?.endsWith('/')) {
+ config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);
+ }
+ config.headers = mergeHeaders(a.headers, b.headers);
+ return config;
+};
+
+export const mergeHeaders = (
+ ...headers: Array['headers'] | undefined>
+): Headers => {
+ const mergedHeaders = new Headers();
+ for (const header of headers) {
+ if (!header || typeof header !== 'object') {
+ continue;
+ }
+
+ const iterator = header instanceof Headers ? header.entries() : Object.entries(header);
+
+ for (const [key, value] of iterator) {
+ if (value === null) {
+ mergedHeaders.delete(key);
+ } else if (Array.isArray(value)) {
+ for (const v of value) {
+ mergedHeaders.append(key, v as string);
+ }
+ } else if (value !== undefined) {
+ // assume object headers are meant to be JSON stringified, i.e. their
+ // content value in OpenAPI specification is 'application/json'
+ mergedHeaders.set(
+ key,
+ typeof value === 'object' ? JSON.stringify(value) : (value as string)
+ );
+ }
+ }
+ }
+ return mergedHeaders;
+};
+
+type ErrInterceptor = (
+ error: Err,
+ response: Res,
+ request: Req,
+ options: Options
+) => Err | Promise;
+
+type ReqInterceptor = (request: Req, options: Options) => Req | Promise;
+
+type ResInterceptor = (
+ response: Res,
+ request: Req,
+ options: Options
+) => Res | Promise;
+
+class Interceptors {
+ _fns: (Interceptor | null)[];
+
+ constructor() {
+ this._fns = [];
+ }
+
+ clear() {
+ this._fns = [];
+ }
+
+ getInterceptorIndex(id: number | Interceptor): number {
+ if (typeof id === 'number') {
+ return this._fns[id] ? id : -1;
+ } else {
+ return this._fns.indexOf(id);
+ }
+ }
+ exists(id: number | Interceptor) {
+ const index = this.getInterceptorIndex(id);
+ return !!this._fns[index];
+ }
+
+ eject(id: number | Interceptor) {
+ const index = this.getInterceptorIndex(id);
+ if (this._fns[index]) {
+ this._fns[index] = null;
+ }
+ }
+
+ update(id: number | Interceptor, fn: Interceptor) {
+ const index = this.getInterceptorIndex(id);
+ if (this._fns[index]) {
+ this._fns[index] = fn;
+ return id;
+ } else {
+ return false;
+ }
+ }
+
+ use(fn: Interceptor) {
+ this._fns = [...this._fns, fn];
+ return this._fns.length - 1;
+ }
+}
+
+// `createInterceptors()` response, meant for external use as it does not
+// expose internals
+export interface Middleware {
+ error: Pick>, 'eject' | 'use'>;
+ request: Pick>, 'eject' | 'use'>;
+ response: Pick>, 'eject' | 'use'>;
+}
+
+// do not add `Middleware` as return type so we can use _fns internally
+export const createInterceptors = () => ({
+ error: new Interceptors>(),
+ request: new Interceptors>(),
+ response: new Interceptors>(),
+});
+
+const defaultQuerySerializer = createQuerySerializer({
+ allowReserved: false,
+ array: {
+ explode: true,
+ style: 'form',
+ },
+ object: {
+ explode: true,
+ style: 'deepObject',
+ },
+});
+
+const defaultHeaders = {
+ 'Content-Type': 'application/json',
+};
+
+export const createConfig = (
+ override: Config & T> = {}
+): Config & T> => ({
+ ...jsonBodySerializer,
+ headers: defaultHeaders,
+ parseAs: 'auto',
+ querySerializer: defaultQuerySerializer,
+ ...override,
+});
diff --git a/frontend/src/api/core/auth.ts b/frontend/src/api/core/auth.ts
new file mode 100644
index 000000000..5029d4c06
--- /dev/null
+++ b/frontend/src/api/core/auth.ts
@@ -0,0 +1,39 @@
+export type AuthToken = string | undefined;
+
+export interface Auth {
+ /**
+ * Which part of the request do we use to send the auth?
+ *
+ * @default 'header'
+ */
+ in?: 'header' | 'query' | 'cookie';
+ /**
+ * Header or query parameter name.
+ *
+ * @default 'Authorization'
+ */
+ name?: string;
+ scheme?: 'basic' | 'bearer';
+ type: 'apiKey' | 'http';
+}
+
+export const getAuthToken = async (
+ auth: Auth,
+ callback: ((auth: Auth) => Promise | AuthToken) | AuthToken
+): Promise => {
+ const token = typeof callback === 'function' ? await callback(auth) : callback;
+
+ if (!token) {
+ return;
+ }
+
+ if (auth.scheme === 'bearer') {
+ return `Bearer ${token}`;
+ }
+
+ if (auth.scheme === 'basic') {
+ return `Basic ${btoa(token)}`;
+ }
+
+ return token;
+};
diff --git a/frontend/src/api/core/bodySerializer.ts b/frontend/src/api/core/bodySerializer.ts
new file mode 100644
index 000000000..95d563a67
--- /dev/null
+++ b/frontend/src/api/core/bodySerializer.ts
@@ -0,0 +1,70 @@
+import type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer';
+
+export type QuerySerializer = (query: Record) => string;
+
+export type BodySerializer = (body: any) => any;
+
+export interface QuerySerializerOptions {
+ allowReserved?: boolean;
+ array?: SerializerOptions;
+ object?: SerializerOptions;
+}
+
+const serializeFormDataPair = (data: FormData, key: string, value: unknown) => {
+ if (typeof value === 'string' || value instanceof Blob) {
+ data.append(key, value);
+ } else {
+ data.append(key, JSON.stringify(value));
+ }
+};
+
+const serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown) => {
+ if (typeof value === 'string') {
+ data.append(key, value);
+ } else {
+ data.append(key, JSON.stringify(value));
+ }
+};
+
+export const formDataBodySerializer = {
+ bodySerializer: | Array>>(body: T) => {
+ const data = new FormData();
+
+ Object.entries(body).forEach(([key, value]) => {
+ if (value === undefined || value === null) {
+ return;
+ }
+ if (Array.isArray(value)) {
+ value.forEach((v) => serializeFormDataPair(data, key, v));
+ } else {
+ serializeFormDataPair(data, key, value);
+ }
+ });
+
+ return data;
+ },
+};
+
+export const jsonBodySerializer = {
+ bodySerializer: (body: T) =>
+ JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)),
+};
+
+export const urlSearchParamsBodySerializer = {
+ bodySerializer: | Array>>(body: T) => {
+ const data = new URLSearchParams();
+
+ Object.entries(body).forEach(([key, value]) => {
+ if (value === undefined || value === null) {
+ return;
+ }
+ if (Array.isArray(value)) {
+ value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));
+ } else {
+ serializeUrlSearchParamsPair(data, key, value);
+ }
+ });
+
+ return data.toString();
+ },
+};
diff --git a/frontend/src/api/core/params.ts b/frontend/src/api/core/params.ts
new file mode 100644
index 000000000..fd5745d45
--- /dev/null
+++ b/frontend/src/api/core/params.ts
@@ -0,0 +1,132 @@
+type Slot = 'body' | 'headers' | 'path' | 'query';
+
+export type Field =
+ | {
+ in: Exclude;
+ key: string;
+ map?: string;
+ }
+ | {
+ in: Extract;
+ key?: string;
+ map?: string;
+ };
+
+export interface Fields {
+ allowExtra?: Partial>;
+ args?: ReadonlyArray;
+}
+
+export type FieldsConfig = ReadonlyArray;
+
+const extraPrefixesMap: Record = {
+ $body_: 'body',
+ $headers_: 'headers',
+ $path_: 'path',
+ $query_: 'query',
+};
+const extraPrefixes = Object.entries(extraPrefixesMap);
+
+type KeyMap = Map<
+ string,
+ {
+ in: Slot;
+ map?: string;
+ }
+>;
+
+const buildKeyMap = (fields: FieldsConfig, map?: KeyMap): KeyMap => {
+ if (!map) {
+ map = new Map();
+ }
+
+ for (const config of fields) {
+ if ('in' in config) {
+ if (config.key) {
+ map.set(config.key, {
+ in: config.in,
+ map: config.map,
+ });
+ }
+ } else if (config.args) {
+ buildKeyMap(config.args, map);
+ }
+ }
+
+ return map;
+};
+
+interface Params {
+ body: unknown;
+ headers: Record;
+ path: Record;
+ query: Record;
+}
+
+const stripEmptySlots = (params: Params) => {
+ for (const [slot, value] of Object.entries(params)) {
+ if (value && typeof value === 'object' && !Object.keys(value).length) {
+ delete params[slot as Slot];
+ }
+ }
+};
+
+export const buildClientParams = (args: ReadonlyArray, fields: FieldsConfig) => {
+ const params: Params = {
+ body: {},
+ headers: {},
+ path: {},
+ query: {},
+ };
+
+ const map = buildKeyMap(fields);
+
+ let config: FieldsConfig[number] | undefined;
+
+ for (const [index, arg] of args.entries()) {
+ if (fields[index]) {
+ config = fields[index];
+ }
+
+ if (!config) {
+ continue;
+ }
+
+ if ('in' in config) {
+ if (config.key) {
+ const field = map.get(config.key)!;
+ const name = field.map || config.key;
+ (params[field.in] as Record)[name] = arg;
+ } else {
+ params.body = arg;
+ }
+ } else {
+ for (const [key, value] of Object.entries(arg ?? {})) {
+ const field = map.get(key);
+
+ if (field) {
+ const name = field.map || key;
+ (params[field.in] as Record)[name] = value;
+ } else {
+ const extra = extraPrefixes.find(([prefix]) => key.startsWith(prefix));
+
+ if (extra) {
+ const [prefix, slot] = extra;
+ (params[slot] as Record)[key.slice(prefix.length)] = value;
+ } else {
+ for (const [slot, allowed] of Object.entries(config.allowExtra ?? {})) {
+ if (allowed) {
+ (params[slot as Slot] as Record)[key] = value;
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ stripEmptySlots(params);
+
+ return params;
+};
diff --git a/frontend/src/api/core/pathSerializer.ts b/frontend/src/api/core/pathSerializer.ts
new file mode 100644
index 000000000..7ca8a6b18
--- /dev/null
+++ b/frontend/src/api/core/pathSerializer.ts
@@ -0,0 +1,169 @@
+interface SerializeOptions extends SerializePrimitiveOptions, SerializerOptions {}
+
+interface SerializePrimitiveOptions {
+ allowReserved?: boolean;
+ name: string;
+}
+
+export interface SerializerOptions {
+ /**
+ * @default true
+ */
+ explode: boolean;
+ style: T;
+}
+
+export type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';
+export type ArraySeparatorStyle = ArrayStyle | MatrixStyle;
+type MatrixStyle = 'label' | 'matrix' | 'simple';
+export type ObjectStyle = 'form' | 'deepObject';
+type ObjectSeparatorStyle = ObjectStyle | MatrixStyle;
+
+interface SerializePrimitiveParam extends SerializePrimitiveOptions {
+ value: string;
+}
+
+export const separatorArrayExplode = (style: ArraySeparatorStyle) => {
+ switch (style) {
+ case 'label':
+ return '.';
+ case 'matrix':
+ return ';';
+ case 'simple':
+ return ',';
+ default:
+ return '&';
+ }
+};
+
+export const separatorArrayNoExplode = (style: ArraySeparatorStyle) => {
+ switch (style) {
+ case 'form':
+ return ',';
+ case 'pipeDelimited':
+ return '|';
+ case 'spaceDelimited':
+ return '%20';
+ default:
+ return ',';
+ }
+};
+
+export const separatorObjectExplode = (style: ObjectSeparatorStyle) => {
+ switch (style) {
+ case 'label':
+ return '.';
+ case 'matrix':
+ return ';';
+ case 'simple':
+ return ',';
+ default:
+ return '&';
+ }
+};
+
+export const serializeArrayParam = ({
+ allowReserved,
+ explode,
+ name,
+ style,
+ value,
+}: SerializeOptions & {
+ value: unknown[];
+}) => {
+ if (!explode) {
+ const joinedValues = (
+ allowReserved ? value : value.map((v) => encodeURIComponent(v as string))
+ ).join(separatorArrayNoExplode(style));
+ switch (style) {
+ case 'label':
+ return `.${joinedValues}`;
+ case 'matrix':
+ return `;${name}=${joinedValues}`;
+ case 'simple':
+ return joinedValues;
+ default:
+ return `${name}=${joinedValues}`;
+ }
+ }
+
+ const separator = separatorArrayExplode(style);
+ const joinedValues = value
+ .map((v) => {
+ if (style === 'label' || style === 'simple') {
+ return allowReserved ? v : encodeURIComponent(v as string);
+ }
+
+ return serializePrimitiveParam({
+ allowReserved,
+ name,
+ value: v as string,
+ });
+ })
+ .join(separator);
+ return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;
+};
+
+export const serializePrimitiveParam = ({
+ allowReserved,
+ name,
+ value,
+}: SerializePrimitiveParam) => {
+ if (value === undefined || value === null) {
+ return '';
+ }
+
+ if (typeof value === 'object') {
+ throw new Error(
+ 'Deeply-nested arrays/objects arenβt supported. Provide your own `querySerializer()` to handle these.'
+ );
+ }
+
+ return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;
+};
+
+export const serializeObjectParam = ({
+ allowReserved,
+ explode,
+ name,
+ style,
+ value,
+ valueOnly,
+}: SerializeOptions & {
+ value: Record | Date;
+ valueOnly?: boolean;
+}) => {
+ if (value instanceof Date) {
+ return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;
+ }
+
+ if (style !== 'deepObject' && !explode) {
+ let values: string[] = [];
+ Object.entries(value).forEach(([key, v]) => {
+ values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];
+ });
+ const joinedValues = values.join(',');
+ switch (style) {
+ case 'form':
+ return `${name}=${joinedValues}`;
+ case 'label':
+ return `.${joinedValues}`;
+ case 'matrix':
+ return `;${name}=${joinedValues}`;
+ default:
+ return joinedValues;
+ }
+ }
+
+ const separator = separatorObjectExplode(style);
+ const joinedValues = Object.entries(value)
+ .map(([key, v]) =>
+ serializePrimitiveParam({
+ allowReserved,
+ name: style === 'deepObject' ? `${name}[${key}]` : key,
+ value: v as string,
+ })
+ )
+ .join(separator);
+ return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;
+};
diff --git a/frontend/src/api/core/types.ts b/frontend/src/api/core/types.ts
new file mode 100644
index 000000000..9f53bd814
--- /dev/null
+++ b/frontend/src/api/core/types.ts
@@ -0,0 +1,80 @@
+import type { Auth, AuthToken } from './auth';
+import type { BodySerializer, QuerySerializer, QuerySerializerOptions } from './bodySerializer';
+
+export interface Client {
+ /**
+ * Returns the final request URL.
+ */
+ buildUrl: BuildUrlFn;
+ connect: MethodFn;
+ delete: MethodFn;
+ get: MethodFn;
+ getConfig: () => Config;
+ head: MethodFn;
+ options: MethodFn;
+ patch: MethodFn;
+ post: MethodFn;
+ put: MethodFn;
+ request: RequestFn;
+ setConfig: (config: Config) => Config;
+ trace: MethodFn;
+}
+
+export interface Config {
+ /**
+ * Auth token or a function returning auth token. The resolved value will be
+ * added to the request payload as defined by its `security` array.
+ */
+ auth?: ((auth: Auth) => Promise | AuthToken) | AuthToken;
+ /**
+ * A function for serializing request body parameter. By default,
+ * {@link JSON.stringify()} will be used.
+ */
+ bodySerializer?: BodySerializer | null;
+ /**
+ * An object containing any HTTP headers that you want to pre-populate your
+ * `Headers` object with.
+ *
+ * {@link https://developer.mozilla.org/docs/Web/API/Headers/Headers#init See more}
+ */
+ headers?:
+ | RequestInit['headers']
+ | Record<
+ string,
+ string | number | boolean | (string | number | boolean)[] | null | undefined | unknown
+ >;
+ /**
+ * The request method.
+ *
+ * {@link https://developer.mozilla.org/docs/Web/API/fetch#method See more}
+ */
+ method?: 'CONNECT' | 'DELETE' | 'GET' | 'HEAD' | 'OPTIONS' | 'PATCH' | 'POST' | 'PUT' | 'TRACE';
+ /**
+ * A function for serializing request query parameters. By default, arrays
+ * will be exploded in form style, objects will be exploded in deepObject
+ * style, and reserved characters are percent-encoded.
+ *
+ * This method will have no effect if the native `paramsSerializer()` Axios
+ * API function is used.
+ *
+ * {@link https://swagger.io/docs/specification/serialization/#query View examples}
+ */
+ querySerializer?: QuerySerializer | QuerySerializerOptions;
+ /**
+ * A function validating request data. This is useful if you want to ensure
+ * the request conforms to the desired shape, so it can be safely sent to
+ * the server.
+ */
+ requestValidator?: (data: unknown) => Promise;
+ /**
+ * A function transforming response data before it's returned. This is useful
+ * for post-processing data, e.g. converting ISO strings into Date objects.
+ */
+ responseTransformer?: (data: unknown) => Promise;
+ /**
+ * A function validating response data. This is useful if you want to ensure
+ * the response conforms to the desired shape, so it can be safely passed to
+ * the transformers and returned to the user.
+ */
+ responseValidator?: (data: unknown) => Promise;
+}
diff --git a/frontend/src/api/index.ts b/frontend/src/api/index.ts
new file mode 100644
index 000000000..0b26d1450
--- /dev/null
+++ b/frontend/src/api/index.ts
@@ -0,0 +1,3 @@
+// This file is auto-generated by @hey-api/openapi-ts
+export * from './types.gen';
+export * from './sdk.gen';
diff --git a/frontend/src/api/sdk.gen.ts b/frontend/src/api/sdk.gen.ts
new file mode 100644
index 000000000..3d4000353
--- /dev/null
+++ b/frontend/src/api/sdk.gen.ts
@@ -0,0 +1,263 @@
+// This file is auto-generated by @hey-api/openapi-ts
+
+import type { Options as ClientOptions, TDataShape, Client } from './client';
+import type {
+ AuthControllerData,
+ AuthControllerResponses,
+ AuthControllerUpdateEmailData,
+ AuthControllerUpdateEmailResponses,
+ AuthControllerRegisterData,
+ AuthControllerRegisterResponses,
+ TodoControllerGetAllData,
+ TodoControllerGetAllResponses,
+ TodoControllerAddTodoData,
+ TodoControllerAddTodoResponses,
+ TodoControllerAddTodoErrors,
+ TodoControllerCompleteTodoData,
+ TodoControllerCompleteTodoResponses,
+ TodoControllerCompleteTodoErrors,
+ TodoControllerUncompleteTodoData,
+ TodoControllerUncompleteTodoResponses,
+ TodoControllerUncompleteTodoErrors,
+ TodoControllerModifyTitleData,
+ TodoControllerModifyTitleResponses,
+ TodoControllerModifyTitleErrors,
+ TodoControllerDeleteTodoData,
+ TodoControllerDeleteTodoResponses,
+ TodoControllerDeleteTodoErrors,
+ TodoSseControllerStreamData,
+ TodoSseControllerStreamResponses,
+ TodoSseControllerOnData,
+ TodoSseControllerOnResponses,
+} from './types.gen';
+import { client as _heyApiClient } from './client.gen';
+
+export type Options<
+ TData extends TDataShape = TDataShape,
+ ThrowOnError extends boolean = boolean,
+> = ClientOptions & {
+ /**
+ * You can provide a client instance returned by `createClient()` instead of
+ * individual options. This might be also useful if you want to implement a
+ * custom client.
+ */
+ client?: Client;
+ /**
+ * You can pass arbitrary values through the `meta` object. This can be
+ * used to access values that aren't defined as part of the SDK function.
+ */
+ meta?: Record;
+};
+
+export const authController = (
+ options?: Options
+) => {
+ return (options?.client ?? _heyApiClient).post({
+ url: '/auth/login',
+ ...options,
+ });
+};
+
+export const authControllerUpdateEmail = (
+ options: Options
+) => {
+ return (options.client ?? _heyApiClient).patch<
+ AuthControllerUpdateEmailResponses,
+ unknown,
+ ThrowOnError
+ >({
+ url: '/auth/updateEmail',
+ ...options,
+ headers: {
+ 'Content-Type': 'application/json',
+ ...options.headers,
+ },
+ });
+};
+
+export const authControllerRegister = (
+ options: Options
+) => {
+ return (options.client ?? _heyApiClient).post<
+ AuthControllerRegisterResponses,
+ unknown,
+ ThrowOnError
+ >({
+ url: '/auth/register',
+ ...options,
+ headers: {
+ 'Content-Type': 'application/json',
+ ...options.headers,
+ },
+ });
+};
+
+/**
+ * Get all todos
+ */
+export const todoControllerGetAll = (
+ options?: Options
+) => {
+ return (options?.client ?? _heyApiClient).get<
+ TodoControllerGetAllResponses,
+ unknown,
+ ThrowOnError
+ >({
+ security: [
+ {
+ scheme: 'bearer',
+ type: 'http',
+ },
+ ],
+ url: '/todos',
+ ...options,
+ });
+};
+
+/**
+ * Create a new todo
+ */
+export const todoControllerAddTodo = (
+ options: Options
+) => {
+ return (options.client ?? _heyApiClient).post<
+ TodoControllerAddTodoResponses,
+ TodoControllerAddTodoErrors,
+ ThrowOnError
+ >({
+ security: [
+ {
+ scheme: 'bearer',
+ type: 'http',
+ },
+ ],
+ url: '/todos',
+ ...options,
+ headers: {
+ 'Content-Type': 'application/json',
+ ...options.headers,
+ },
+ });
+};
+
+/**
+ * Mark a todo as completed
+ */
+export const todoControllerCompleteTodo = (
+ options: Options
+) => {
+ return (options.client ?? _heyApiClient).patch<
+ TodoControllerCompleteTodoResponses,
+ TodoControllerCompleteTodoErrors,
+ ThrowOnError
+ >({
+ security: [
+ {
+ scheme: 'bearer',
+ type: 'http',
+ },
+ ],
+ url: '/todos/{id}/complete',
+ ...options,
+ });
+};
+
+/**
+ * Mark a todo as uncompleted
+ */
+export const todoControllerUncompleteTodo = (
+ options: Options
+) => {
+ return (options.client ?? _heyApiClient).patch<
+ TodoControllerUncompleteTodoResponses,
+ TodoControllerUncompleteTodoErrors,
+ ThrowOnError
+ >({
+ security: [
+ {
+ scheme: 'bearer',
+ type: 'http',
+ },
+ ],
+ url: '/todos/{id}/uncomplete',
+ ...options,
+ });
+};
+
+/**
+ * Update a todo title
+ */
+export const todoControllerModifyTitle = (
+ options: Options
+) => {
+ return (options.client ?? _heyApiClient).patch<
+ TodoControllerModifyTitleResponses,
+ TodoControllerModifyTitleErrors,
+ ThrowOnError
+ >({
+ security: [
+ {
+ scheme: 'bearer',
+ type: 'http',
+ },
+ ],
+ url: '/todos/{id}/title',
+ ...options,
+ headers: {
+ 'Content-Type': 'application/json',
+ ...options.headers,
+ },
+ });
+};
+
+/**
+ * Delete a todo
+ */
+export const todoControllerDeleteTodo = (
+ options: Options
+) => {
+ return (options.client ?? _heyApiClient).delete<
+ TodoControllerDeleteTodoResponses,
+ TodoControllerDeleteTodoErrors,
+ ThrowOnError
+ >({
+ security: [
+ {
+ scheme: 'bearer',
+ type: 'http',
+ },
+ ],
+ url: '/todos/{id}',
+ ...options,
+ });
+};
+
+export const todoSseControllerStream = (
+ options?: Options
+) => {
+ return (options?.client ?? _heyApiClient).get<
+ TodoSseControllerStreamResponses,
+ unknown,
+ ThrowOnError
+ >({
+ url: '/sse/todos/stream',
+ ...options,
+ });
+};
+
+export const todoSseControllerOn = (
+ options: Options
+) => {
+ return (options.client ?? _heyApiClient).post<
+ TodoSseControllerOnResponses,
+ unknown,
+ ThrowOnError
+ >({
+ url: '/sse/todos/On',
+ ...options,
+ headers: {
+ 'Content-Type': 'application/json',
+ ...options.headers,
+ },
+ });
+};
diff --git a/frontend/src/api/types.gen.ts b/frontend/src/api/types.gen.ts
new file mode 100644
index 000000000..dfb79e407
--- /dev/null
+++ b/frontend/src/api/types.gen.ts
@@ -0,0 +1,300 @@
+// This file is auto-generated by @hey-api/openapi-ts
+
+export type UpdateEmailRequestDto = {
+ /**
+ * The new email address
+ */
+ email: string;
+};
+
+export type RegisterRequestDto = {
+ /**
+ * The email address
+ */
+ email: string;
+ /**
+ * The password
+ */
+ password: string;
+};
+
+export type AddTodoRequestDto = {
+ /**
+ * The title of the todo
+ */
+ title: string;
+};
+
+export type TodoDto = {
+ /**
+ * The unique identifier of the todo
+ */
+ id: string;
+ /**
+ * The title of the todo
+ */
+ title: string;
+ /**
+ * The completion status of the todo
+ */
+ completed: boolean;
+ /**
+ * The creation timestamp of the todo
+ */
+ createdAt: number;
+ /**
+ * The last update timestamp of the todo
+ */
+ updatedAt?: number;
+};
+
+export type GetAllTodosResponseDto = {
+ /**
+ * Array of todo items
+ */
+ todos: Array;
+};
+
+export type ModifyTodoTitleRequestDto = {
+ /**
+ * The unique identifier of the todo
+ */
+ id: string;
+ /**
+ * The new title of the todo
+ */
+ title: string;
+};
+
+export type OnTodoRequest = {
+ [key: string]: unknown;
+};
+
+export type AuthControllerData = {
+ body?: never;
+ path?: never;
+ query?: never;
+ url: '/auth/login';
+};
+
+export type AuthControllerResponses = {
+ 201: unknown;
+};
+
+export type AuthControllerUpdateEmailData = {
+ body: UpdateEmailRequestDto;
+ path?: never;
+ query?: never;
+ url: '/auth/updateEmail';
+};
+
+export type AuthControllerUpdateEmailResponses = {
+ 200: unknown;
+};
+
+export type AuthControllerRegisterData = {
+ body: RegisterRequestDto;
+ path?: never;
+ query?: never;
+ url: '/auth/register';
+};
+
+export type AuthControllerRegisterResponses = {
+ 201: unknown;
+};
+
+export type TodoControllerGetAllData = {
+ body?: never;
+ path?: never;
+ query?: never;
+ url: '/todos';
+};
+
+export type TodoControllerGetAllResponses = {
+ /**
+ * Returns all todos
+ */
+ 200: GetAllTodosResponseDto;
+};
+
+export type TodoControllerGetAllResponse =
+ TodoControllerGetAllResponses[keyof TodoControllerGetAllResponses];
+
+export type TodoControllerAddTodoData = {
+ body: AddTodoRequestDto;
+ path?: never;
+ query?: never;
+ url: '/todos';
+};
+
+export type TodoControllerAddTodoErrors = {
+ /**
+ * Invalid input
+ */
+ 400: unknown;
+};
+
+export type TodoControllerAddTodoResponses = {
+ /**
+ * Todo created successfully
+ */
+ 201: unknown;
+};
+
+export type TodoControllerCompleteTodoData = {
+ body?: never;
+ path: {
+ /**
+ * Todo ID
+ */
+ id: string;
+ };
+ query?: never;
+ url: '/todos/{id}/complete';
+};
+
+export type TodoControllerCompleteTodoErrors = {
+ /**
+ * Invalid todo ID
+ */
+ 400: unknown;
+ /**
+ * Todo not found
+ */
+ 404: unknown;
+};
+
+export type TodoControllerCompleteTodoResponses = {
+ /**
+ * Todo marked as completed
+ */
+ 204: void;
+};
+
+export type TodoControllerCompleteTodoResponse =
+ TodoControllerCompleteTodoResponses[keyof TodoControllerCompleteTodoResponses];
+
+export type TodoControllerUncompleteTodoData = {
+ body?: never;
+ path: {
+ /**
+ * Todo ID
+ */
+ id: string;
+ };
+ query?: never;
+ url: '/todos/{id}/uncomplete';
+};
+
+export type TodoControllerUncompleteTodoErrors = {
+ /**
+ * Invalid todo ID
+ */
+ 400: unknown;
+ /**
+ * Todo not found
+ */
+ 404: unknown;
+};
+
+export type TodoControllerUncompleteTodoResponses = {
+ /**
+ * Todo marked as uncompleted
+ */
+ 204: void;
+};
+
+export type TodoControllerUncompleteTodoResponse =
+ TodoControllerUncompleteTodoResponses[keyof TodoControllerUncompleteTodoResponses];
+
+export type TodoControllerModifyTitleData = {
+ body: ModifyTodoTitleRequestDto;
+ path: {
+ /**
+ * Todo ID
+ */
+ id: string;
+ };
+ query?: never;
+ url: '/todos/{id}/title';
+};
+
+export type TodoControllerModifyTitleErrors = {
+ /**
+ * Invalid input
+ */
+ 400: unknown;
+ /**
+ * Todo not found
+ */
+ 404: unknown;
+};
+
+export type TodoControllerModifyTitleResponses = {
+ /**
+ * Todo title updated
+ */
+ 204: void;
+};
+
+export type TodoControllerModifyTitleResponse =
+ TodoControllerModifyTitleResponses[keyof TodoControllerModifyTitleResponses];
+
+export type TodoControllerDeleteTodoData = {
+ body?: never;
+ path: {
+ /**
+ * Todo ID
+ */
+ id: string;
+ };
+ query?: never;
+ url: '/todos/{id}';
+};
+
+export type TodoControllerDeleteTodoErrors = {
+ /**
+ * Invalid todo ID
+ */
+ 400: unknown;
+ /**
+ * Todo not found
+ */
+ 404: unknown;
+};
+
+export type TodoControllerDeleteTodoResponses = {
+ /**
+ * Todo deleted
+ */
+ 204: void;
+};
+
+export type TodoControllerDeleteTodoResponse =
+ TodoControllerDeleteTodoResponses[keyof TodoControllerDeleteTodoResponses];
+
+export type TodoSseControllerStreamData = {
+ body?: never;
+ path?: never;
+ query?: never;
+ url: '/sse/todos/stream';
+};
+
+export type TodoSseControllerStreamResponses = {
+ 200: unknown;
+};
+
+export type TodoSseControllerOnData = {
+ body: OnTodoRequest;
+ path?: never;
+ query?: never;
+ url: '/sse/todos/On';
+};
+
+export type TodoSseControllerOnResponses = {
+ 201: unknown;
+};
+
+export type ClientOptions = {
+ baseUrl: string;
+};
diff --git a/frontend/src/bitloops/proto/TodoServiceClientPb.ts b/frontend/src/bitloops/proto/TodoServiceClientPb.ts
deleted file mode 100644
index 3839488ea..000000000
--- a/frontend/src/bitloops/proto/TodoServiceClientPb.ts
+++ /dev/null
@@ -1,409 +0,0 @@
-/**
- * @fileoverview gRPC-Web generated client stub for todo
- * @enhanceable
- * @public
- */
-
-// Code generated by protoc-gen-grpc-web. DO NOT EDIT.
-// versions:
-// protoc-gen-grpc-web v1.4.2
-// protoc v3.20.3
-// source: src/bitloops/proto/todo.proto
-
-
-/* eslint-disable */
-// @ts-nocheck
-
-
-import * as grpcWeb from 'grpc-web';
-
-import * as src_bitloops_proto_todo_pb from '../../../src/bitloops/proto/todo_pb';
-
-
-export class TodoServiceClient {
- client_: grpcWeb.AbstractClientBase;
- hostname_: string;
- credentials_: null | { [index: string]: string; };
- options_: null | { [index: string]: any; };
-
- constructor (hostname: string,
- credentials?: null | { [index: string]: string; },
- options?: null | { [index: string]: any; }) {
- if (!options) options = {};
- if (!credentials) credentials = {};
- options['format'] = 'text';
-
- this.client_ = new grpcWeb.GrpcWebClientBase(options);
- this.hostname_ = hostname.replace(/\/+$/, '');
- this.credentials_ = credentials;
- this.options_ = options;
- }
-
- methodDescriptorAdd = new grpcWeb.MethodDescriptor(
- '/todo.TodoService/Add',
- grpcWeb.MethodType.UNARY,
- src_bitloops_proto_todo_pb.AddTodoRequest,
- src_bitloops_proto_todo_pb.AddTodoResponse,
- (request: src_bitloops_proto_todo_pb.AddTodoRequest) => {
- return request.serializeBinary();
- },
- src_bitloops_proto_todo_pb.AddTodoResponse.deserializeBinary
- );
-
- add(
- request: src_bitloops_proto_todo_pb.AddTodoRequest,
- metadata: grpcWeb.Metadata | null): Promise;
-
- add(
- request: src_bitloops_proto_todo_pb.AddTodoRequest,
- metadata: grpcWeb.Metadata | null,
- callback: (err: grpcWeb.RpcError,
- response: src_bitloops_proto_todo_pb.AddTodoResponse) => void): grpcWeb.ClientReadableStream;
-
- add(
- request: src_bitloops_proto_todo_pb.AddTodoRequest,
- metadata: grpcWeb.Metadata | null,
- callback?: (err: grpcWeb.RpcError,
- response: src_bitloops_proto_todo_pb.AddTodoResponse) => void) {
- if (callback !== undefined) {
- return this.client_.rpcCall(
- this.hostname_ +
- '/todo.TodoService/Add',
- request,
- metadata || {},
- this.methodDescriptorAdd,
- callback);
- }
- return this.client_.unaryCall(
- this.hostname_ +
- '/todo.TodoService/Add',
- request,
- metadata || {},
- this.methodDescriptorAdd);
- }
-
- methodDescriptorComplete = new grpcWeb.MethodDescriptor(
- '/todo.TodoService/Complete',
- grpcWeb.MethodType.UNARY,
- src_bitloops_proto_todo_pb.CompleteTodoRequest,
- src_bitloops_proto_todo_pb.CompleteTodoResponse,
- (request: src_bitloops_proto_todo_pb.CompleteTodoRequest) => {
- return request.serializeBinary();
- },
- src_bitloops_proto_todo_pb.CompleteTodoResponse.deserializeBinary
- );
-
- complete(
- request: src_bitloops_proto_todo_pb.CompleteTodoRequest,
- metadata: grpcWeb.Metadata | null): Promise;
-
- complete(
- request: src_bitloops_proto_todo_pb.CompleteTodoRequest,
- metadata: grpcWeb.Metadata | null,
- callback: (err: grpcWeb.RpcError,
- response: src_bitloops_proto_todo_pb.CompleteTodoResponse) => void): grpcWeb.ClientReadableStream;
-
- complete(
- request: src_bitloops_proto_todo_pb.CompleteTodoRequest,
- metadata: grpcWeb.Metadata | null,
- callback?: (err: grpcWeb.RpcError,
- response: src_bitloops_proto_todo_pb.CompleteTodoResponse) => void) {
- if (callback !== undefined) {
- return this.client_.rpcCall(
- this.hostname_ +
- '/todo.TodoService/Complete',
- request,
- metadata || {},
- this.methodDescriptorComplete,
- callback);
- }
- return this.client_.unaryCall(
- this.hostname_ +
- '/todo.TodoService/Complete',
- request,
- metadata || {},
- this.methodDescriptorComplete);
- }
-
- methodDescriptorUncomplete = new grpcWeb.MethodDescriptor(
- '/todo.TodoService/Uncomplete',
- grpcWeb.MethodType.UNARY,
- src_bitloops_proto_todo_pb.UncompleteTodoRequest,
- src_bitloops_proto_todo_pb.UncompleteTodoResponse,
- (request: src_bitloops_proto_todo_pb.UncompleteTodoRequest) => {
- return request.serializeBinary();
- },
- src_bitloops_proto_todo_pb.UncompleteTodoResponse.deserializeBinary
- );
-
- uncomplete(
- request: src_bitloops_proto_todo_pb.UncompleteTodoRequest,
- metadata: grpcWeb.Metadata | null): Promise;
-
- uncomplete(
- request: src_bitloops_proto_todo_pb.UncompleteTodoRequest,
- metadata: grpcWeb.Metadata | null,
- callback: (err: grpcWeb.RpcError,
- response: src_bitloops_proto_todo_pb.UncompleteTodoResponse) => void): grpcWeb.ClientReadableStream;
-
- uncomplete(
- request: src_bitloops_proto_todo_pb.UncompleteTodoRequest,
- metadata: grpcWeb.Metadata | null,
- callback?: (err: grpcWeb.RpcError,
- response: src_bitloops_proto_todo_pb.UncompleteTodoResponse) => void) {
- if (callback !== undefined) {
- return this.client_.rpcCall(
- this.hostname_ +
- '/todo.TodoService/Uncomplete',
- request,
- metadata || {},
- this.methodDescriptorUncomplete,
- callback);
- }
- return this.client_.unaryCall(
- this.hostname_ +
- '/todo.TodoService/Uncomplete',
- request,
- metadata || {},
- this.methodDescriptorUncomplete);
- }
-
- methodDescriptorModifyTitle = new grpcWeb.MethodDescriptor(
- '/todo.TodoService/ModifyTitle',
- grpcWeb.MethodType.UNARY,
- src_bitloops_proto_todo_pb.ModifyTitleTodoRequest,
- src_bitloops_proto_todo_pb.ModifyTitleTodoResponse,
- (request: src_bitloops_proto_todo_pb.ModifyTitleTodoRequest) => {
- return request.serializeBinary();
- },
- src_bitloops_proto_todo_pb.ModifyTitleTodoResponse.deserializeBinary
- );
-
- modifyTitle(
- request: src_bitloops_proto_todo_pb.ModifyTitleTodoRequest,
- metadata: grpcWeb.Metadata | null): Promise;
-
- modifyTitle(
- request: src_bitloops_proto_todo_pb.ModifyTitleTodoRequest,
- metadata: grpcWeb.Metadata | null,
- callback: (err: grpcWeb.RpcError,
- response: src_bitloops_proto_todo_pb.ModifyTitleTodoResponse) => void): grpcWeb.ClientReadableStream;
-
- modifyTitle(
- request: src_bitloops_proto_todo_pb.ModifyTitleTodoRequest,
- metadata: grpcWeb.Metadata | null,
- callback?: (err: grpcWeb.RpcError,
- response: src_bitloops_proto_todo_pb.ModifyTitleTodoResponse) => void) {
- if (callback !== undefined) {
- return this.client_.rpcCall(
- this.hostname_ +
- '/todo.TodoService/ModifyTitle',
- request,
- metadata || {},
- this.methodDescriptorModifyTitle,
- callback);
- }
- return this.client_.unaryCall(
- this.hostname_ +
- '/todo.TodoService/ModifyTitle',
- request,
- metadata || {},
- this.methodDescriptorModifyTitle);
- }
-
- methodDescriptorDelete = new grpcWeb.MethodDescriptor(
- '/todo.TodoService/Delete',
- grpcWeb.MethodType.UNARY,
- src_bitloops_proto_todo_pb.DeleteTodoRequest,
- src_bitloops_proto_todo_pb.DeleteTodoResponse,
- (request: src_bitloops_proto_todo_pb.DeleteTodoRequest) => {
- return request.serializeBinary();
- },
- src_bitloops_proto_todo_pb.DeleteTodoResponse.deserializeBinary
- );
-
- delete(
- request: src_bitloops_proto_todo_pb.DeleteTodoRequest,
- metadata: grpcWeb.Metadata | null): Promise;
-
- delete(
- request: src_bitloops_proto_todo_pb.DeleteTodoRequest,
- metadata: grpcWeb.Metadata | null,
- callback: (err: grpcWeb.RpcError,
- response: src_bitloops_proto_todo_pb.DeleteTodoResponse) => void): grpcWeb.ClientReadableStream