From c96df17b94f96578903f3de68394458af8e8a9f2 Mon Sep 17 00:00:00 2001 From: rajdip-b Date: Wed, 27 Dec 2023 13:17:25 +0530 Subject: [PATCH 01/15] feat: add project module --- .../20231225074847_init/migration.sql | 76 ---------- .../20231226184616_init/migration.sql | 134 ++++++++++++++++++ apps/api/src/prisma/schema.prisma | 117 +++++++++++---- .../dto/create.project/create.project.spec.ts | 7 + .../dto/create.project/create.project.ts | 1 + .../dto/update.project/update.project.spec.ts | 7 + .../dto/update.project/update.project.ts | 1 + .../src/project/project.controller.spec.ts | 18 +++ apps/api/src/project/project.controller.ts | 4 + apps/api/src/project/project.module.ts | 9 ++ apps/api/src/project/project.service.spec.ts | 18 +++ apps/api/src/project/project.service.ts | 4 + pnpm-lock.yaml | 6 - 13 files changed, 291 insertions(+), 111 deletions(-) delete mode 100644 apps/api/src/prisma/migrations/20231225074847_init/migration.sql create mode 100644 apps/api/src/prisma/migrations/20231226184616_init/migration.sql create mode 100644 apps/api/src/project/dto/create.project/create.project.spec.ts create mode 100644 apps/api/src/project/dto/create.project/create.project.ts create mode 100644 apps/api/src/project/dto/update.project/update.project.spec.ts create mode 100644 apps/api/src/project/dto/update.project/update.project.ts create mode 100644 apps/api/src/project/project.controller.spec.ts create mode 100644 apps/api/src/project/project.controller.ts create mode 100644 apps/api/src/project/project.module.ts create mode 100644 apps/api/src/project/project.service.spec.ts create mode 100644 apps/api/src/project/project.service.ts diff --git a/apps/api/src/prisma/migrations/20231225074847_init/migration.sql b/apps/api/src/prisma/migrations/20231225074847_init/migration.sql deleted file mode 100644 index 139a8a73..00000000 --- a/apps/api/src/prisma/migrations/20231225074847_init/migration.sql +++ /dev/null @@ -1,76 +0,0 @@ --- CreateEnum -CREATE TYPE "Scope" AS ENUM ('CREATE', 'READ', 'UPDATE', 'DELETE'); - --- CreateTable -CREATE TABLE "User" ( - "id" TEXT NOT NULL, - "email" TEXT NOT NULL, - "name" TEXT, - "profilePictureUrl" TEXT, - "isActive" BOOLEAN NOT NULL DEFAULT true, - "isOnboardingFinished" BOOLEAN NOT NULL DEFAULT false, - "isAdmin" BOOLEAN NOT NULL DEFAULT false, - - CONSTRAINT "User_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Project" ( - "id" TEXT NOT NULL, - "name" TEXT NOT NULL, - "description" TEXT, - "ownerId" TEXT NOT NULL, - - CONSTRAINT "Project_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Secret" ( - "id" TEXT NOT NULL, - "name" TEXT NOT NULL, - "value" TEXT NOT NULL, - "projectId" TEXT NOT NULL, - - CONSTRAINT "Secret_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "ApiKey" ( - "id" TEXT NOT NULL, - "name" TEXT NOT NULL, - "value" TEXT NOT NULL, - "projectId" TEXT NOT NULL, - "scopes" "Scope"[], - "userId" TEXT NOT NULL, - - CONSTRAINT "ApiKey_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Otp" ( - "code" TEXT NOT NULL, - "userId" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "expiresAt" TIMESTAMP(3) NOT NULL -); - --- CreateIndex -CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); - --- CreateIndex -CREATE UNIQUE INDEX "Otp_code_key" ON "Otp"("code"); - --- AddForeignKey -ALTER TABLE "Project" ADD CONSTRAINT "Project_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Secret" ADD CONSTRAINT "Secret_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "ApiKey" ADD CONSTRAINT "ApiKey_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "ApiKey" ADD CONSTRAINT "ApiKey_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Otp" ADD CONSTRAINT "Otp_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/apps/api/src/prisma/migrations/20231226184616_init/migration.sql b/apps/api/src/prisma/migrations/20231226184616_init/migration.sql new file mode 100644 index 00000000..acd55959 --- /dev/null +++ b/apps/api/src/prisma/migrations/20231226184616_init/migration.sql @@ -0,0 +1,134 @@ +-- CreateEnum +CREATE TYPE "ProjectRole" AS ENUM ('OWNER', 'MAINTAINER', 'VIEWER'); + +-- CreateEnum +CREATE TYPE "ApiKeyRole" AS ENUM ('CREATE_PROJECT', 'READ_PROJECT', 'UPDATE_PROJECT', 'DELETE_PROJECT', 'CREATE_SECRET', 'READ_SECRET', 'UPDATE_SECRET', 'DELETE_SECRET', 'ADD_USER', 'REMOVE_USER', 'UPDATE_USER_ROLE', 'CREATE_API_KEY', 'READ_API_KEY', 'UPDATE_API_KEY', 'DELETE_API_KEY'); + +-- CreateTable +CREATE TABLE "User" ( + "id" TEXT NOT NULL, + "email" TEXT NOT NULL, + "name" TEXT, + "profilePictureUrl" TEXT, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "isOnboardingFinished" BOOLEAN NOT NULL DEFAULT false, + "isAdmin" BOOLEAN NOT NULL DEFAULT false, + + CONSTRAINT "User_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Subscription" ( + "id" TEXT NOT NULL, + "plan" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "userId" TEXT NOT NULL, + + CONSTRAINT "Subscription_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Project" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "description" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "publicKey" TEXT NOT NULL, + "privateKey" TEXT, + "lastUpdatedById" TEXT NOT NULL, + + CONSTRAINT "Project_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ProjectMember" ( + "id" TEXT NOT NULL, + "role" "ProjectRole" NOT NULL, + "userId" TEXT NOT NULL, + "projectId" TEXT NOT NULL, + + CONSTRAINT "ProjectMember_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ApiKeyScope" ( + "id" TEXT NOT NULL, + "role" "ApiKeyRole" NOT NULL, + "apiKeyId" TEXT NOT NULL, + "projectId" TEXT NOT NULL, + + CONSTRAINT "ApiKeyScope_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Secret" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "value" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "rotateAt" TIMESTAMP(3), + "lastUpdatedById" TEXT NOT NULL, + "projectId" TEXT NOT NULL, + + CONSTRAINT "Secret_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ApiKey" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "value" TEXT NOT NULL, + "expiresAt" TIMESTAMP(3), + "userId" TEXT NOT NULL, + + CONSTRAINT "ApiKey_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Otp" ( + "code" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "expiresAt" TIMESTAMP(3) NOT NULL +); + +-- CreateIndex +CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "Subscription_userId_key" ON "Subscription"("userId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Otp_code_key" ON "Otp"("code"); + +-- AddForeignKey +ALTER TABLE "Subscription" ADD CONSTRAINT "Subscription_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Project" ADD CONSTRAINT "Project_lastUpdatedById_fkey" FOREIGN KEY ("lastUpdatedById") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectMember" ADD CONSTRAINT "ProjectMember_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectMember" ADD CONSTRAINT "ProjectMember_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ApiKeyScope" ADD CONSTRAINT "ApiKeyScope_apiKeyId_fkey" FOREIGN KEY ("apiKeyId") REFERENCES "ApiKey"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ApiKeyScope" ADD CONSTRAINT "ApiKeyScope_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Secret" ADD CONSTRAINT "Secret_lastUpdatedById_fkey" FOREIGN KEY ("lastUpdatedById") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Secret" ADD CONSTRAINT "Secret_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ApiKey" ADD CONSTRAINT "ApiKey_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Otp" ADD CONSTRAINT "Otp_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/apps/api/src/prisma/schema.prisma b/apps/api/src/prisma/schema.prisma index 10d2a8ff..e9de60f3 100644 --- a/apps/api/src/prisma/schema.prisma +++ b/apps/api/src/prisma/schema.prisma @@ -7,64 +7,123 @@ datasource db { url = env("DATABASE_URL") } -enum Scope { - CREATE - READ - UPDATE - DELETE +enum ProjectRole { + OWNER // Can do everything + MAINTAINER // Can do everything except deleting the project + VIEWER // Can only view the project and its secrets +} + +enum ApiKeyRole { + CREATE_PROJECT + READ_PROJECT + UPDATE_PROJECT + DELETE_PROJECT + CREATE_SECRET + READ_SECRET + UPDATE_SECRET + DELETE_SECRET + ADD_USER + REMOVE_USER + UPDATE_USER_ROLE + CREATE_API_KEY + READ_API_KEY + UPDATE_API_KEY + DELETE_API_KEY } model User { - id String @id @default(cuid()) - email String @unique + id String @id @default(cuid()) + email String @unique name String? profilePictureUrl String? - isActive Boolean @default(true) - isOnboardingFinished Boolean @default(false) - isAdmin Boolean @default(false) + isActive Boolean @default(true) + isOnboardingFinished Boolean @default(false) + isAdmin Boolean @default(false) + subscription Subscription? - projects Project[] + projects ProjectMember[] apiKeys ApiKey[] otps Otp[] + Secret Secret[] // Stores the secrets the user updated + Project Project[] // Stores the projects the user updated +} + +model Subscription { + id String @id @default(cuid()) + plan String + isActive Boolean @default(true) + + user User @relation(fields: [userId], references: [id], onDelete: Cascade, onUpdate: Cascade) + userId String @unique } model Project { - id String @id @default(cuid()) + id String @id @default(cuid()) name String description String? - owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade) - ownerId String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + publicKey String + privateKey String? // We store this only if the user wants us to do so! - secrets Secret[] - ApiKey ApiKey[] + lastUpdatedBy User @relation(fields: [lastUpdatedById], references: [id], onDelete: Cascade, onUpdate: Cascade) + lastUpdatedById String + + members ProjectMember[] + secrets Secret[] + apiKeyScopes ApiKeyScope[] } -model Secret { - id String @id @default(cuid()) - name String - value String +model ProjectMember { + id String @id @default(cuid()) + role ProjectRole + user User @relation(fields: [userId], references: [id], onDelete: Cascade, onUpdate: Cascade) + userId String + project Project @relation(fields: [projectId], references: [id], onDelete: Cascade, onUpdate: Cascade) + projectId String +} + +model ApiKeyScope { + id String @id @default(cuid()) + role ApiKeyRole + + apiKey ApiKey @relation(fields: [apiKeyId], references: [id], onDelete: Cascade, onUpdate: Cascade) + apiKeyId String projectId String - project Project @relation(fields: [projectId], references: [id], onDelete: Cascade) + project Project @relation(fields: [projectId], references: [id], onDelete: Cascade, onUpdate: Cascade) } -model ApiKey { - id String @id @default(cuid()) - name String - value String +model Secret { + id String @id @default(cuid()) + name String + value String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + rotateAt DateTime? + + lastUpdatedBy User @relation(fields: [lastUpdatedById], references: [id]) + lastUpdatedById String projectId String - project Project @relation(fields: [projectId], references: [id], onDelete: Cascade) + project Project @relation(fields: [projectId], references: [id], onDelete: Cascade, onUpdate: Cascade) +} + +model ApiKey { + id String @id @default(cuid()) + name String + value String + expiresAt DateTime? - scopes Scope[] + apiKeyScopes ApiKeyScope[] - user User @relation(fields: [userId], references: [id], onDelete: Cascade) + user User @relation(fields: [userId], references: [id], onDelete: Cascade, onUpdate: Cascade) userId String } model Otp { code String @unique - user User @relation(fields: [userId], references: [id], onDelete: Cascade) + user User @relation(fields: [userId], references: [id], onDelete: Cascade, onUpdate: Cascade) userId String createdAt DateTime @default(now()) expiresAt DateTime diff --git a/apps/api/src/project/dto/create.project/create.project.spec.ts b/apps/api/src/project/dto/create.project/create.project.spec.ts new file mode 100644 index 00000000..458a7d51 --- /dev/null +++ b/apps/api/src/project/dto/create.project/create.project.spec.ts @@ -0,0 +1,7 @@ +import { CreateProject } from './create.project'; + +describe('CreateProject', () => { + it('should be defined', () => { + expect(new CreateProject()).toBeDefined(); + }); +}); diff --git a/apps/api/src/project/dto/create.project/create.project.ts b/apps/api/src/project/dto/create.project/create.project.ts new file mode 100644 index 00000000..a8c0af42 --- /dev/null +++ b/apps/api/src/project/dto/create.project/create.project.ts @@ -0,0 +1 @@ +export class CreateProject {} diff --git a/apps/api/src/project/dto/update.project/update.project.spec.ts b/apps/api/src/project/dto/update.project/update.project.spec.ts new file mode 100644 index 00000000..b4d5cb57 --- /dev/null +++ b/apps/api/src/project/dto/update.project/update.project.spec.ts @@ -0,0 +1,7 @@ +import { UpdateProject } from './update.project'; + +describe('UpdateProject', () => { + it('should be defined', () => { + expect(new UpdateProject()).toBeDefined(); + }); +}); diff --git a/apps/api/src/project/dto/update.project/update.project.ts b/apps/api/src/project/dto/update.project/update.project.ts new file mode 100644 index 00000000..abb141e3 --- /dev/null +++ b/apps/api/src/project/dto/update.project/update.project.ts @@ -0,0 +1 @@ +export class UpdateProject {} diff --git a/apps/api/src/project/project.controller.spec.ts b/apps/api/src/project/project.controller.spec.ts new file mode 100644 index 00000000..9a56a5b0 --- /dev/null +++ b/apps/api/src/project/project.controller.spec.ts @@ -0,0 +1,18 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { ProjectController } from './project.controller'; + +describe('ProjectController', () => { + let controller: ProjectController; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [ProjectController], + }).compile(); + + controller = module.get(ProjectController); + }); + + it('should be defined', () => { + expect(controller).toBeDefined(); + }); +}); diff --git a/apps/api/src/project/project.controller.ts b/apps/api/src/project/project.controller.ts new file mode 100644 index 00000000..66980aef --- /dev/null +++ b/apps/api/src/project/project.controller.ts @@ -0,0 +1,4 @@ +import { Controller } from '@nestjs/common'; + +@Controller('project') +export class ProjectController {} diff --git a/apps/api/src/project/project.module.ts b/apps/api/src/project/project.module.ts new file mode 100644 index 00000000..94abb574 --- /dev/null +++ b/apps/api/src/project/project.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { ProjectService } from './project.service'; +import { ProjectController } from './project.controller'; + +@Module({ + providers: [ProjectService], + controllers: [ProjectController] +}) +export class ProjectModule {} diff --git a/apps/api/src/project/project.service.spec.ts b/apps/api/src/project/project.service.spec.ts new file mode 100644 index 00000000..126b6cc2 --- /dev/null +++ b/apps/api/src/project/project.service.spec.ts @@ -0,0 +1,18 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { ProjectService } from './project.service'; + +describe('ProjectService', () => { + let service: ProjectService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ProjectService], + }).compile(); + + service = module.get(ProjectService); + }); + + it('should be defined', () => { + expect(service).toBeDefined(); + }); +}); diff --git a/apps/api/src/project/project.service.ts b/apps/api/src/project/project.service.ts new file mode 100644 index 00000000..3274dd0a --- /dev/null +++ b/apps/api/src/project/project.service.ts @@ -0,0 +1,4 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class ProjectService {} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4eac1ce6..1620a7d1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -226,12 +226,6 @@ importers: specifier: ^2.3.0 version: 2.6.2 - packages/sdk-js: - dependencies: - tslib: - specifier: ^2.3.0 - version: 2.6.2 - packages/sdk-node: {} packages: From fd5c4d744467395c0b360916ed85bd6cf88c698e Mon Sep 17 00:00:00 2001 From: rajdip-b Date: Tue, 2 Jan 2024 23:46:44 +0530 Subject: [PATCH 02/15] feat: add project, environment module --- apps/api/src/app/app.module.ts | 8 +- apps/api/src/auth/auth.module.ts | 18 +- apps/api/src/auth/auth.service.spec.ts | 29 - apps/api/src/auth/auth.service.ts | 59 - .../auth/controller/auth.controller.spec.ts | 35 + .../auth/{ => controller}/auth.controller.ts | 11 +- .../src/auth/{ => guard}/admin.guard.spec.ts | 0 apps/api/src/auth/{ => guard}/admin.guard.ts | 0 .../src/auth/{ => guard}/auth.guard.spec.ts | 0 apps/api/src/auth/{ => guard}/auth.guard.ts | 17 +- .../src/auth/repository/auth.repository.ts | 56 + .../auth/repository/interface.repository.ts | 37 + .../src/auth/repository/mock.repository.ts | 23 + .../api/src/auth/service/auth.service.spec.ts | 33 + apps/api/src/auth/service/auth.service.ts | 87 + apps/api/src/common/create-key-pair.ts | 18 + apps/api/src/common/decrypt.ts | 12 + apps/api/src/common/encrypt.ts | 12 + apps/api/src/common/exclude-fields.ts | 13 + .../src/common/query.transform.pipe.spec.ts | 7 + apps/api/src/common/query.transform.pipe.ts | 18 + apps/api/src/common/tier-limit.ts | 7 + apps/api/src/common/util.spec.ts | 46 + .../controller/environment.controller.spec.ts | 18 + .../controller/environment.controller.ts | 4 + .../dto/create.environment.spec.ts | 7 + .../src/environment/dto/create.environment.ts | 14 + .../api/src/environment/environment.module.ts | 23 + .../repository/environment.repository.ts | 109 + .../repository/interface.repository.ts | 82 + .../environment/repository/mock.repository.ts | 45 + .../service/environment.service.spec.ts} | 10 +- .../service/environment.service.ts} | 2 +- apps/api/src/main.ts | 26 +- .../migration.sql | 78 +- apps/api/src/prisma/prisma.module.ts | 5 +- apps/api/src/prisma/prisma.repository.ts | 179 - apps/api/src/prisma/schema.prisma | 107 +- .../controller/project.controller.spec.ts | 41 + .../project/controller/project.controller.ts | 183 + .../dto/create.project/create.project.ts | 36 +- .../dto/update.project/update.project.ts | 14 +- .../project/misc/project.permission.spec.ts | 23 + .../src/project/misc/project.permission.ts | 81 + .../src/project/project.controller.spec.ts | 18 - apps/api/src/project/project.controller.ts | 4 - apps/api/src/project/project.module.ts | 23 +- .../repository/interface.repository.ts | 193 + .../src/project/repository/mock.repository.ts | 127 + .../project/repository/project.repository.ts | 340 + .../project/service/project.service.spec.ts | 39 + .../src/project/service/project.service.ts | 589 ++ apps/api/src/resend/resend.module.ts | 8 +- apps/api/src/resend/services/mail.resend.ts | 62 +- apps/api/src/resend/services/mock.resend.ts | 38 + .../services/resend.service.interface.ts | 18 + .../{ => services}/resend.service.spec.ts | 8 +- apps/api/src/resend/services/test.resend.ts | 17 - .../{ => controller}/user.controller.spec.ts | 9 +- .../user/{ => controller}/user.controller.ts | 8 +- apps/api/src/user/fake.repository.ts | 20 - .../user/repository/interface.repository.ts | 61 + .../src/user/repository/mock.repository.ts | 33 + .../src/user/repository/user.repository.ts | 80 + .../user/{ => service}/user.service.spec.ts | 8 +- .../src/user/{ => service}/user.service.ts | 14 +- apps/api/src/user/user.module.ts | 17 +- package.json | 1 + pnpm-lock.yaml | 8700 +++++------------ 69 files changed, 5336 insertions(+), 6732 deletions(-) delete mode 100644 apps/api/src/auth/auth.service.spec.ts delete mode 100644 apps/api/src/auth/auth.service.ts create mode 100644 apps/api/src/auth/controller/auth.controller.spec.ts rename apps/api/src/auth/{ => controller}/auth.controller.ts (58%) rename apps/api/src/auth/{ => guard}/admin.guard.spec.ts (100%) rename apps/api/src/auth/{ => guard}/admin.guard.ts (100%) rename apps/api/src/auth/{ => guard}/auth.guard.spec.ts (100%) rename apps/api/src/auth/{ => guard}/auth.guard.ts (77%) create mode 100644 apps/api/src/auth/repository/auth.repository.ts create mode 100644 apps/api/src/auth/repository/interface.repository.ts create mode 100644 apps/api/src/auth/repository/mock.repository.ts create mode 100644 apps/api/src/auth/service/auth.service.spec.ts create mode 100644 apps/api/src/auth/service/auth.service.ts create mode 100644 apps/api/src/common/create-key-pair.ts create mode 100644 apps/api/src/common/decrypt.ts create mode 100644 apps/api/src/common/encrypt.ts create mode 100644 apps/api/src/common/exclude-fields.ts create mode 100644 apps/api/src/common/query.transform.pipe.spec.ts create mode 100644 apps/api/src/common/query.transform.pipe.ts create mode 100644 apps/api/src/common/tier-limit.ts create mode 100644 apps/api/src/common/util.spec.ts create mode 100644 apps/api/src/environment/controller/environment.controller.spec.ts create mode 100644 apps/api/src/environment/controller/environment.controller.ts create mode 100644 apps/api/src/environment/dto/create.environment.spec.ts create mode 100644 apps/api/src/environment/dto/create.environment.ts create mode 100644 apps/api/src/environment/environment.module.ts create mode 100644 apps/api/src/environment/repository/environment.repository.ts create mode 100644 apps/api/src/environment/repository/interface.repository.ts create mode 100644 apps/api/src/environment/repository/mock.repository.ts rename apps/api/src/{project/project.service.spec.ts => environment/service/environment.service.spec.ts} (51%) rename apps/api/src/{project/project.service.ts => environment/service/environment.service.ts} (63%) rename apps/api/src/prisma/migrations/{20231226184616_init => 20240102080245_init}/migration.sql (59%) delete mode 100644 apps/api/src/prisma/prisma.repository.ts create mode 100644 apps/api/src/project/controller/project.controller.spec.ts create mode 100644 apps/api/src/project/controller/project.controller.ts create mode 100644 apps/api/src/project/misc/project.permission.spec.ts create mode 100644 apps/api/src/project/misc/project.permission.ts delete mode 100644 apps/api/src/project/project.controller.spec.ts delete mode 100644 apps/api/src/project/project.controller.ts create mode 100644 apps/api/src/project/repository/interface.repository.ts create mode 100644 apps/api/src/project/repository/mock.repository.ts create mode 100644 apps/api/src/project/repository/project.repository.ts create mode 100644 apps/api/src/project/service/project.service.spec.ts create mode 100644 apps/api/src/project/service/project.service.ts create mode 100644 apps/api/src/resend/services/mock.resend.ts rename apps/api/src/resend/{ => services}/resend.service.spec.ts (61%) delete mode 100644 apps/api/src/resend/services/test.resend.ts rename apps/api/src/user/{ => controller}/user.controller.spec.ts (91%) rename apps/api/src/user/{ => controller}/user.controller.ts (85%) delete mode 100644 apps/api/src/user/fake.repository.ts create mode 100644 apps/api/src/user/repository/interface.repository.ts create mode 100644 apps/api/src/user/repository/mock.repository.ts create mode 100644 apps/api/src/user/repository/user.repository.ts rename apps/api/src/user/{ => service}/user.service.spec.ts (89%) rename apps/api/src/user/{ => service}/user.service.ts (77%) diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index 0d6c35a6..dab8f442 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -8,8 +8,10 @@ import { PrismaModule } from '../prisma/prisma.module' import { CommonModule } from '../common/common.module' import { ResendModule } from '../resend/resend.module' import { APP_GUARD } from '@nestjs/core' -import { AuthGuard } from '../auth/auth.guard' +import { AuthGuard } from '../auth/guard/auth.guard' import { UserModule } from '../user/user.module' +import { ProjectModule } from '../project/project.module' +import { EnvironmentModule } from '../environment/environment.module' @Module({ controllers: [AppController], @@ -24,7 +26,9 @@ import { UserModule } from '../user/user.module' CommonModule, ResendModule, SupabaseModule, - UserModule + UserModule, + ProjectModule, + EnvironmentModule ], providers: [ { diff --git a/apps/api/src/auth/auth.module.ts b/apps/api/src/auth/auth.module.ts index 6968fb66..e680afee 100644 --- a/apps/api/src/auth/auth.module.ts +++ b/apps/api/src/auth/auth.module.ts @@ -1,7 +1,10 @@ import { Module } from '@nestjs/common' -import { AuthService } from './auth.service' -import { AuthController } from './auth.controller' +import { AuthService } from './service/auth.service' +import { AuthController } from './controller/auth.controller' import { JwtModule } from '@nestjs/jwt' +import { UserModule } from '../user/user.module' +import { AUTH_REPOSITORY } from './repository/interface.repository' +import { AuthRepository } from './repository/auth.repository' @Module({ imports: [ @@ -13,9 +16,16 @@ import { JwtModule } from '@nestjs/jwt' issuer: 'keyshade.xyz', algorithm: 'HS256' } - }) + }), + UserModule + ], + providers: [ + AuthService, + { + provide: AUTH_REPOSITORY, + useClass: AuthRepository + } ], - providers: [AuthService], controllers: [AuthController] }) export class AuthModule {} diff --git a/apps/api/src/auth/auth.service.spec.ts b/apps/api/src/auth/auth.service.spec.ts deleted file mode 100644 index 50530308..00000000 --- a/apps/api/src/auth/auth.service.spec.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing' -import { AuthService } from './auth.service' -import { PrismaRepository } from '../prisma/prisma.repository' -import { TestResend } from '../resend/services/test.resend' -import { RESEND_SERVICE } from '../resend/services/resend.service.interface' -import { JwtService } from '@nestjs/jwt' -import { PrismaService } from '../prisma/prisma.service' - -describe('AuthService', () => { - let service: AuthService - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [ - AuthService, - PrismaRepository, - { provide: RESEND_SERVICE, useClass: TestResend }, - JwtService, - PrismaService - ] - }).compile() - - service = module.get(AuthService) - }) - - it('should be defined', () => { - expect(service).toBeDefined() - }) -}) diff --git a/apps/api/src/auth/auth.service.ts b/apps/api/src/auth/auth.service.ts deleted file mode 100644 index 3f7a559a..00000000 --- a/apps/api/src/auth/auth.service.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { HttpException, HttpStatus, Inject, Injectable, Logger, LoggerService } from '@nestjs/common' -import { PrismaRepository } from '../prisma/prisma.repository' -import { randomUUID } from 'crypto' -import { JwtService } from '@nestjs/jwt' -import { UserAuthenticatedResponse } from './auth.types' -import { IResendService, RESEND_SERVICE } from '../resend/services/resend.service.interface' - -@Injectable() -export class AuthService { - private readonly OTP_EXPIRY = 5 * 60 * 1000 // 5 minutes - private readonly logger: LoggerService - - constructor( - private repository: PrismaRepository, - @Inject(RESEND_SERVICE) private resend: IResendService, - private jwt: JwtService - ) { - this.logger = new Logger(AuthService.name) - } - - async sendOtp(email: string): Promise { - if (!email || !email.includes('@')) { - this.logger.error(`Invalid email address: ${email}`) - throw new HttpException('Please enter a valid email address', HttpStatus.BAD_REQUEST) - } - - // We need to create the user if it doesn't exist yet - if (!(await this.repository.findUserByEmail(email))) { - await this.repository.createUser(email) - } - - const otp = await this.repository.createOtp(email, randomUUID().slice(0, 6).toUpperCase(), this.OTP_EXPIRY) - - await this.resend.sendOtp(email, otp.code) - this.logger.log(`Login code sent to ${email}: ${otp.code}`) - } - - async validateOtp(email: string, otp: string): Promise { - const user = await this.repository.findUserByEmail(email) - if (!user) { - this.logger.error(`User not found: ${email}`) - throw new HttpException('User not found', HttpStatus.NOT_FOUND) - } - - if (!(await this.repository.isOtpValid(email, otp))) { - this.logger.error(`Invalid login code for ${email}: ${otp}`) - throw new HttpException('Invalid login code', HttpStatus.UNAUTHORIZED) - } - - await this.repository.deleteOtp(email, otp) - - this.logger.log(`User logged in: ${email}`) - - return { - ...user, - token: await this.jwt.signAsync({ id: user.id }) - } - } -} diff --git a/apps/api/src/auth/controller/auth.controller.spec.ts b/apps/api/src/auth/controller/auth.controller.spec.ts new file mode 100644 index 00000000..8bbdf5ac --- /dev/null +++ b/apps/api/src/auth/controller/auth.controller.spec.ts @@ -0,0 +1,35 @@ +import { Test, TestingModule } from '@nestjs/testing' +import { MockAuthRepository } from '../repository/mock.repository' +import { AUTH_REPOSITORY } from '../repository/interface.repository' +import { AuthService } from '../service/auth.service' +import { RESEND_SERVICE } from '../../resend/services/resend.service.interface' +import { MockResend } from '../../resend/services/mock.resend' +import { JwtService } from '@nestjs/jwt' +import { PrismaService } from '../../prisma/prisma.service' +import { AuthController } from './auth.controller' +import { USER_REPOSITORY } from '../../user/repository/interface.repository' +import { MockUserRepository } from '../../user/repository/mock.repository' + +describe('AuthController', () => { + let controller: AuthController + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [AuthController], + providers: [ + AuthService, + { provide: RESEND_SERVICE, useClass: MockResend }, + { provide: AUTH_REPOSITORY, useClass: MockAuthRepository }, + { provide: USER_REPOSITORY, useClass: MockUserRepository }, + JwtService, + PrismaService + ] + }).compile() + + controller = module.get(AuthController) + }) + + it('should be defined', () => { + expect(controller).toBeDefined() + }) +}) diff --git a/apps/api/src/auth/auth.controller.ts b/apps/api/src/auth/controller/auth.controller.ts similarity index 58% rename from apps/api/src/auth/auth.controller.ts rename to apps/api/src/auth/controller/auth.controller.ts index d361be0e..591c4236 100644 --- a/apps/api/src/auth/auth.controller.ts +++ b/apps/api/src/auth/controller/auth.controller.ts @@ -1,7 +1,7 @@ import { Controller, Param, Post, Query } from '@nestjs/common' -import { AuthService } from './auth.service' -import { UserAuthenticatedResponse } from './auth.types' -import { Public } from '../decorators/public.decorator' +import { AuthService } from '../service/auth.service' +import { UserAuthenticatedResponse } from '../auth.types' +import { Public } from '../../decorators/public.decorator' @Controller('auth') export class AuthController { @@ -15,7 +15,10 @@ export class AuthController { @Public() @Post('validate-otp') - async validateOtp(@Query('email') email: string, @Query('otp') otp: string): Promise { + async validateOtp( + @Query('email') email: string, + @Query('otp') otp: string + ): Promise { return await this.authService.validateOtp(email, otp) } } diff --git a/apps/api/src/auth/admin.guard.spec.ts b/apps/api/src/auth/guard/admin.guard.spec.ts similarity index 100% rename from apps/api/src/auth/admin.guard.spec.ts rename to apps/api/src/auth/guard/admin.guard.spec.ts diff --git a/apps/api/src/auth/admin.guard.ts b/apps/api/src/auth/guard/admin.guard.ts similarity index 100% rename from apps/api/src/auth/admin.guard.ts rename to apps/api/src/auth/guard/admin.guard.ts diff --git a/apps/api/src/auth/auth.guard.spec.ts b/apps/api/src/auth/guard/auth.guard.spec.ts similarity index 100% rename from apps/api/src/auth/auth.guard.spec.ts rename to apps/api/src/auth/guard/auth.guard.spec.ts diff --git a/apps/api/src/auth/auth.guard.ts b/apps/api/src/auth/guard/auth.guard.ts similarity index 77% rename from apps/api/src/auth/auth.guard.ts rename to apps/api/src/auth/guard/auth.guard.ts index a24a39cf..74d8160c 100644 --- a/apps/api/src/auth/auth.guard.ts +++ b/apps/api/src/auth/guard/auth.guard.ts @@ -1,15 +1,24 @@ -import { CanActivate, ExecutionContext, ForbiddenException, Injectable } from '@nestjs/common' +import { + CanActivate, + ExecutionContext, + ForbiddenException, + Inject, + Injectable +} from '@nestjs/common' import { JwtService } from '@nestjs/jwt' import { Request } from 'express' -import { PrismaRepository } from '../prisma/prisma.repository' import { Reflector } from '@nestjs/core' -import { IS_PUBLIC_KEY } from '../decorators/public.decorator' +import { IS_PUBLIC_KEY } from '../../decorators/public.decorator' +import { + IUserRepository, + USER_REPOSITORY +} from '../../user/repository/interface.repository' @Injectable() export class AuthGuard implements CanActivate { constructor( private jwtService: JwtService, - private repository: PrismaRepository, + @Inject(USER_REPOSITORY) private repository: IUserRepository, private reflector: Reflector ) {} diff --git a/apps/api/src/auth/repository/auth.repository.ts b/apps/api/src/auth/repository/auth.repository.ts new file mode 100644 index 00000000..3231dc2b --- /dev/null +++ b/apps/api/src/auth/repository/auth.repository.ts @@ -0,0 +1,56 @@ +import { Otp, User } from '@prisma/client' +import { IAuthRepository } from './interface.repository' +import { PrismaService } from '../../prisma/prisma.service' + +export class AuthRepository implements IAuthRepository { + constructor(private readonly prisma: PrismaService) {} + + async isOtpValid(email: User['email'], otp: string): Promise { + const timeNow = new Date() + return ( + (await this.prisma.otp.count({ + where: { + code: otp, + user: { + email + }, + expiresAt: { + gt: timeNow + } + } + })) > 0 + ) + } + + async createOtp( + email: User['email'], + otp: string, + expiresAfter: number + ): Promise { + const timeNow = new Date() + return await this.prisma.otp.create({ + data: { + code: otp, + expiresAt: new Date(timeNow.getTime() + expiresAfter), + user: { + connect: { + email + } + } + } + }) + } + + async deleteOtp(email: User['email'], otp: string): Promise { + await this.prisma.otp.delete({ + where: { + code: otp, + AND: { + user: { + email + } + } + } + }) + } +} diff --git a/apps/api/src/auth/repository/interface.repository.ts b/apps/api/src/auth/repository/interface.repository.ts new file mode 100644 index 00000000..32dd3a0e --- /dev/null +++ b/apps/api/src/auth/repository/interface.repository.ts @@ -0,0 +1,37 @@ +import { User, Otp } from '@prisma/client' + +export const AUTH_REPOSITORY = 'AUTH_REPOSITORY' + +/** + * Interface for the Auth Repository. + */ +export interface IAuthRepository { + /** + * Checks if an OTP is valid for the given email. + * @param {User['email']} email - The email against which to check the OTP. + * @param {string} otp - The OTP code to check. + * @returns {Promise} - A promise that resolves to true if the OTP is valid, false otherwise. + */ + isOtpValid(email: User['email'], otp: string): Promise + + /** + * Creates an OTP for the given email. + * @param {User['email']} email - The email to create the OTP for. + * @param {string} otp - The OTP code. + * @param {number} expiresAfter - The number of milliseconds after which the OTP expires. + * @returns {Promise} - A promise that resolves to the created OTP. + */ + createOtp( + email: User['email'], + otp: string, + expiresAfter: number + ): Promise + + /** + * Deletes an OTP. + * @param {User['email']} email - The email of the OTP to delete. + * @param {string} otp - The OTP code to delete. + * @returns {Promise} - A promise that resolves when the OTP is successfully deleted. + */ + deleteOtp(email: User['email'], otp: string): Promise +} diff --git a/apps/api/src/auth/repository/mock.repository.ts b/apps/api/src/auth/repository/mock.repository.ts new file mode 100644 index 00000000..e770fdcc --- /dev/null +++ b/apps/api/src/auth/repository/mock.repository.ts @@ -0,0 +1,23 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { IAuthRepository } from './interface.repository' + +export class MockAuthRepository implements IAuthRepository { + isOtpValid(email: string, otp: string): Promise { + throw new Error('Method not implemented.') + } + createOtp( + email: string, + otp: string, + expiresAfter: number + ): Promise<{ + code: string + userId: string + createdAt: Date + expiresAt: Date + }> { + throw new Error('Method not implemented.') + } + deleteOtp(email: string, otp: string): Promise { + throw new Error('Method not implemented.') + } +} diff --git a/apps/api/src/auth/service/auth.service.spec.ts b/apps/api/src/auth/service/auth.service.spec.ts new file mode 100644 index 00000000..5036bd7d --- /dev/null +++ b/apps/api/src/auth/service/auth.service.spec.ts @@ -0,0 +1,33 @@ +import { Test, TestingModule } from '@nestjs/testing' +import { AuthService } from './auth.service' +import { MockResend } from '../../resend/services/mock.resend' +import { RESEND_SERVICE } from '../../resend/services/resend.service.interface' +import { JwtService } from '@nestjs/jwt' +import { PrismaService } from '../../prisma/prisma.service' +import { AUTH_REPOSITORY } from '../repository/interface.repository' +import { MockAuthRepository } from '../repository/mock.repository' +import { USER_REPOSITORY } from '../../user/repository/interface.repository' +import { MockUserRepository } from '../../user/repository/mock.repository' + +describe('AuthService', () => { + let service: AuthService + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + AuthService, + { provide: RESEND_SERVICE, useClass: MockResend }, + { provide: AUTH_REPOSITORY, useClass: MockAuthRepository }, + { provide: USER_REPOSITORY, useClass: MockUserRepository }, + JwtService, + PrismaService + ] + }).compile() + + service = module.get(AuthService) + }) + + it('should be defined', () => { + expect(service).toBeDefined() + }) +}) diff --git a/apps/api/src/auth/service/auth.service.ts b/apps/api/src/auth/service/auth.service.ts new file mode 100644 index 00000000..5f279f36 --- /dev/null +++ b/apps/api/src/auth/service/auth.service.ts @@ -0,0 +1,87 @@ +import { + HttpException, + HttpStatus, + Inject, + Injectable, + Logger, + LoggerService +} from '@nestjs/common' +import { randomUUID } from 'crypto' +import { JwtService } from '@nestjs/jwt' +import { UserAuthenticatedResponse } from '../auth.types' +import { + IResendService, + RESEND_SERVICE +} from '../../resend/services/resend.service.interface' +import { + IUserRepository, + USER_REPOSITORY +} from '../../user/repository/interface.repository' +import { + AUTH_REPOSITORY, + IAuthRepository +} from '../repository/interface.repository' + +@Injectable() +export class AuthService { + private readonly OTP_EXPIRY = 5 * 60 * 1000 // 5 minutes + private readonly logger: LoggerService + + constructor( + @Inject(AUTH_REPOSITORY) private readonly authRepository: IAuthRepository, + @Inject(USER_REPOSITORY) readonly userRepository: IUserRepository, + @Inject(RESEND_SERVICE) private resend: IResendService, + private jwt: JwtService + ) { + this.logger = new Logger(AuthService.name) + } + + async sendOtp(email: string): Promise { + if (!email || !email.includes('@')) { + this.logger.error(`Invalid email address: ${email}`) + throw new HttpException( + 'Please enter a valid email address', + HttpStatus.BAD_REQUEST + ) + } + + // We need to create the user if it doesn't exist yet + if (!(await this.userRepository.findUserByEmail(email))) { + await this.userRepository.createUser(email) + } + + const otp = await this.authRepository.createOtp( + email, + randomUUID().slice(0, 6).toUpperCase(), + this.OTP_EXPIRY + ) + + await this.resend.sendOtp(email, otp.code) + this.logger.log(`Login code sent to ${email}: ${otp.code}`) + } + + async validateOtp( + email: string, + otp: string + ): Promise { + const user = await this.userRepository.findUserByEmail(email) + if (!user) { + this.logger.error(`User not found: ${email}`) + throw new HttpException('User not found', HttpStatus.NOT_FOUND) + } + + if (!(await this.authRepository.isOtpValid(email, otp))) { + this.logger.error(`Invalid login code for ${email}: ${otp}`) + throw new HttpException('Invalid login code', HttpStatus.UNAUTHORIZED) + } + + await this.authRepository.deleteOtp(email, otp) + + this.logger.log(`User logged in: ${email}`) + + return { + ...user, + token: await this.jwt.signAsync({ id: user.id }) + } + } +} diff --git a/apps/api/src/common/create-key-pair.ts b/apps/api/src/common/create-key-pair.ts new file mode 100644 index 00000000..8cf0d79e --- /dev/null +++ b/apps/api/src/common/create-key-pair.ts @@ -0,0 +1,18 @@ +import { generateKeyPairSync } from 'crypto' + +export const createKeyPair = (): { + publicKey: string + privateKey: string +} => { + const { publicKey, privateKey } = generateKeyPairSync('rsa', { + modulusLength: 2048 + }) + + const publicKeyPEM = publicKey.export({ type: 'pkcs1', format: 'pem' }) + const privateKeyPEM = privateKey.export({ type: 'pkcs1', format: 'pem' }) + + return { + publicKey: publicKeyPEM.toString(), + privateKey: privateKeyPEM.toString() + } +} diff --git a/apps/api/src/common/decrypt.ts b/apps/api/src/common/decrypt.ts new file mode 100644 index 00000000..e7c9f86f --- /dev/null +++ b/apps/api/src/common/decrypt.ts @@ -0,0 +1,12 @@ +import { createPrivateKey, privateDecrypt } from 'crypto' + +export const decrypt = (privateKey: string, data: string): string => { + const privateKeyPEM = createPrivateKey({ + key: privateKey, + format: 'pem' + }) + + const buffer = Buffer.from(data, 'base64') + const decrypted = privateDecrypt(privateKeyPEM, buffer) + return decrypted.toString('utf8') +} diff --git a/apps/api/src/common/encrypt.ts b/apps/api/src/common/encrypt.ts new file mode 100644 index 00000000..52b5f02c --- /dev/null +++ b/apps/api/src/common/encrypt.ts @@ -0,0 +1,12 @@ +import { createPublicKey, publicEncrypt } from 'crypto' + +export const encrypt = (publicKey: string, data: string): string => { + const publicKeyPEM = createPublicKey({ + key: publicKey, + format: 'pem' + }) + + const messageBuffer = Buffer.from(data) + const encrypted = publicEncrypt(publicKeyPEM, messageBuffer) + return encrypted.toString('base64') +} diff --git a/apps/api/src/common/exclude-fields.ts b/apps/api/src/common/exclude-fields.ts new file mode 100644 index 00000000..b88afe01 --- /dev/null +++ b/apps/api/src/common/exclude-fields.ts @@ -0,0 +1,13 @@ +/** + * Removes fields from an object + * @param key The object to remove fields from + * @param fields The fields to remove + * @returns The object without the removed fields + */ +export const excludeFields = ( + key: T, + ...fields: K[] +): Partial => + Object.fromEntries( + Object.entries(key).filter(([k]) => !fields.includes(k as K)) + ) as Partial diff --git a/apps/api/src/common/query.transform.pipe.spec.ts b/apps/api/src/common/query.transform.pipe.spec.ts new file mode 100644 index 00000000..f178f1e6 --- /dev/null +++ b/apps/api/src/common/query.transform.pipe.spec.ts @@ -0,0 +1,7 @@ +import { QueryTransformPipe } from './query.transform.pipe'; + +describe('QueryTransformPipe', () => { + it('should be defined', () => { + expect(new QueryTransformPipe()).toBeDefined(); + }); +}); diff --git a/apps/api/src/common/query.transform.pipe.ts b/apps/api/src/common/query.transform.pipe.ts new file mode 100644 index 00000000..8532619a --- /dev/null +++ b/apps/api/src/common/query.transform.pipe.ts @@ -0,0 +1,18 @@ +import { ArgumentMetadata, Injectable, PipeTransform } from '@nestjs/common' + +/** + * Currently, NestJS doesn't have the inbuilt functionality to transform + * numeric query parameters to numbers. This pipe is a workaround for that. + */ +@Injectable() +export class QueryTransformPipe implements PipeTransform { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + transform(value: any, metadata: ArgumentMetadata) { + if (metadata.type === 'query') { + if (metadata.data === 'limit') + return isNaN(value) || value === 0 ? 10 : parseInt(value) + if (metadata.data === 'page') return isNaN(value) ? 1 : parseInt(value) + } + return value + } +} diff --git a/apps/api/src/common/tier-limit.ts b/apps/api/src/common/tier-limit.ts new file mode 100644 index 00000000..ccce04e3 --- /dev/null +++ b/apps/api/src/common/tier-limit.ts @@ -0,0 +1,7 @@ +export const FreeTierLimit = { + MAX_PROJECTS: 3, + MAX_ENVIRONMENTS: 3, + MAX_SECRETS_PER_PROJECT: 10, + MAX_MEMBERS_PER_PROJECT: 5, + MAX_API_KEYS_PER_PROJECT: 5 +} diff --git a/apps/api/src/common/util.spec.ts b/apps/api/src/common/util.spec.ts new file mode 100644 index 00000000..9a27c4a3 --- /dev/null +++ b/apps/api/src/common/util.spec.ts @@ -0,0 +1,46 @@ +import { createKeyPair } from './create-key-pair' +import { decrypt } from './decrypt' +import { encrypt } from './encrypt' +import { excludeFields } from './exclude-fields' + +describe('util', () => { + it('should be defined', () => { + expect(createKeyPair).toBeDefined() + expect(decrypt).toBeDefined() + expect(encrypt).toBeDefined() + expect(excludeFields).toBeDefined() + }) + + it('should create a key pair', () => { + const keyPair = createKeyPair() + expect(keyPair).toBeDefined() + expect(keyPair.publicKey).toBeDefined() + expect(keyPair.privateKey).toBeDefined() + }) + + it('should encrypt and decrypt a string', () => { + const keyPair = createKeyPair() + const plaintext = 'hello world' + const encrypted = encrypt(keyPair.publicKey, plaintext) + const decrypted = decrypt(keyPair.privateKey, encrypted) + expect(decrypted).toEqual(plaintext) + }) + + it('should exclude fields', () => { + const object = { + id: '1', + name: 'John Doe', + email: 'johndoe@keyshade.xyz', + profilePictureUrl: 'https://keyshade.xyz/johndoe.jpg', + isActive: true, + isOnboardingFinished: false, + isAdmin: false + } + const excluded = excludeFields(object, 'isActive') + expect(excluded).not.toHaveProperty('isActive') + expect(excluded).toEqual({ + ...object, + isActive: undefined + }) + }) +}) diff --git a/apps/api/src/environment/controller/environment.controller.spec.ts b/apps/api/src/environment/controller/environment.controller.spec.ts new file mode 100644 index 00000000..3dfed82a --- /dev/null +++ b/apps/api/src/environment/controller/environment.controller.spec.ts @@ -0,0 +1,18 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { EnvironmentController } from './environment.controller'; + +describe('EnvironmentController', () => { + let controller: EnvironmentController; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [EnvironmentController], + }).compile(); + + controller = module.get(EnvironmentController); + }); + + it('should be defined', () => { + expect(controller).toBeDefined(); + }); +}); diff --git a/apps/api/src/environment/controller/environment.controller.ts b/apps/api/src/environment/controller/environment.controller.ts new file mode 100644 index 00000000..0d4e4a1b --- /dev/null +++ b/apps/api/src/environment/controller/environment.controller.ts @@ -0,0 +1,4 @@ +import { Controller } from '@nestjs/common'; + +@Controller('environment') +export class EnvironmentController {} diff --git a/apps/api/src/environment/dto/create.environment.spec.ts b/apps/api/src/environment/dto/create.environment.spec.ts new file mode 100644 index 00000000..1d1bfde2 --- /dev/null +++ b/apps/api/src/environment/dto/create.environment.spec.ts @@ -0,0 +1,7 @@ +import { CreateEnvironment } from './create.environment'; + +describe('CreateEnvironment', () => { + it('should be defined', () => { + expect(new CreateEnvironment()).toBeDefined(); + }); +}); diff --git a/apps/api/src/environment/dto/create.environment.ts b/apps/api/src/environment/dto/create.environment.ts new file mode 100644 index 00000000..287734c7 --- /dev/null +++ b/apps/api/src/environment/dto/create.environment.ts @@ -0,0 +1,14 @@ +import { IsBoolean, IsOptional, IsString } from 'class-validator' + +export class CreateEnvironment { + @IsString() + name: string + + @IsString() + @IsOptional() + description: string + + @IsBoolean() + @IsOptional() + isDefault: boolean +} diff --git a/apps/api/src/environment/environment.module.ts b/apps/api/src/environment/environment.module.ts new file mode 100644 index 00000000..0c3bf082 --- /dev/null +++ b/apps/api/src/environment/environment.module.ts @@ -0,0 +1,23 @@ +import { Module } from '@nestjs/common' +import { EnvironmentController } from './controller/environment.controller' +import { EnvironmentService } from './service/environment.service' +import { ENVIRONMENT_REPOSITORY } from './repository/interface.repository' +import { EnvironmentRepository } from './repository/environment.repository' + +@Module({ + controllers: [EnvironmentController], + exports: [ + { + provide: ENVIRONMENT_REPOSITORY, + useClass: EnvironmentRepository + } + ], + providers: [ + EnvironmentService, + { + provide: ENVIRONMENT_REPOSITORY, + useClass: EnvironmentRepository + } + ] +}) +export class EnvironmentModule {} diff --git a/apps/api/src/environment/repository/environment.repository.ts b/apps/api/src/environment/repository/environment.repository.ts new file mode 100644 index 00000000..f9f0f5bf --- /dev/null +++ b/apps/api/src/environment/repository/environment.repository.ts @@ -0,0 +1,109 @@ +import { Environment } from '@prisma/client' +import { PrismaService } from '../../prisma/prisma.service' +import { IEnvironmentRepository } from './interface.repository' +import { Injectable } from '@nestjs/common' + +@Injectable() +export class EnvironmentRepository implements IEnvironmentRepository { + constructor(private readonly prisma: PrismaService) {} + + async createEnvironment( + environment: Partial, + projectId: string, + userId: string + ): Promise { + return await this.prisma.environment.create({ + data: { + name: environment.name, + description: environment.description, + projectId, + lastUpdatedById: userId + } + }) + } + + async environmentExists( + environmentName: string, + projectId: string + ): Promise { + return await this.prisma.environment + .count({ + where: { + name: environmentName, + projectId + } + }) + .then((count) => count > 0) + } + + async getEnvironmentByProjectIdAndId( + projectId: string, + environmentId: string + ): Promise { + return await this.prisma.environment.findUnique({ + where: { + id: environmentId + }, + include: { + secrets: true, + lastUpdatedBy: true + } + }) + } + + async getEnvironmentsOfProject( + projectId: string, + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise { + return await this.prisma.environment.findMany({ + where: { + projectId, + name: { + contains: search + } + }, + include: { + secrets: true, + lastUpdatedBy: true + }, + skip: (page - 1) * limit, + take: limit, + orderBy: { + [sort]: order + } + }) + } + + async updateEnvironment( + environmentId: string, + environment: Partial, + userId: string + ): Promise { + return await this.prisma.environment.update({ + where: { + id: environmentId + }, + data: { + name: environment.name, + description: environment.description, + lastUpdatedById: userId + }, + include: { + secrets: true, + lastUpdatedBy: true + } + }) + } + + async deleteEnvironment(environmentId: string): Promise { + await this.prisma.environment.delete({ + where: { + id: environmentId + } + }) + } +} diff --git a/apps/api/src/environment/repository/interface.repository.ts b/apps/api/src/environment/repository/interface.repository.ts new file mode 100644 index 00000000..f65858e9 --- /dev/null +++ b/apps/api/src/environment/repository/interface.repository.ts @@ -0,0 +1,82 @@ +import { Environment, Project, User } from '@prisma/client' + +export const ENVIRONMENT_REPOSITORY = 'ENVIRONMENT_REPOSITORY' + +/** + * Repository interface for handling Environment-related operations. + */ +export interface IEnvironmentRepository { + /** + * Creates a new environment for a project. + * @param {Partial} environment - The environment data. + * @param {Project['id']} projectId - The ID of the project to which the environment belongs. + * @param {User['id']} userId - The ID of the user creating the environment. + * @returns {Promise} - A promise that resolves to the created environment. + */ + createEnvironment( + environment: Partial, + projectId: Project['id'], + userId: User['id'] + ): Promise + + /** + * Checks if an environment with the given name exists for a specific project. + * @param {string} environmentName - The name of the environment. + * @param {Project['id']} projectId - The ID of the project. + * @returns {Promise} - A promise that resolves to a boolean indicating whether the environment exists. + */ + environmentExists( + environmentName: string, + projectId: Project['id'] + ): Promise + + /** + * Retrieves an environment by project ID and environment ID. + * @param {Project['id']} projectId - The ID of the project. + * @param {Environment['id']} environmentId - The ID of the environment. + * @returns {Promise} - A promise that resolves to the retrieved environment or null if not found. + */ + getEnvironmentByProjectIdAndId( + projectId: Project['id'], + environmentId: Environment['id'] + ): Promise + + /** + * Retrieves environments of a project with optional pagination, sorting, and search. + * @param {Project['id']} projectId - The ID of the project. + * @param {number} page - The page number for pagination. + * @param {number} limit - The number of environments per page. + * @param {string} sort - The field to sort by. + * @param {string} order - The sort order ('asc' or 'desc'). + * @param {string} search - The search term for environment names. + * @returns {Promise} - A promise that resolves to an array of environments. + */ + getEnvironmentsOfProject( + projectId: Project['id'], + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise + + /** + * Updates an existing environment. + * @param {Environment['id']} environmentId - The ID of the environment to update. + * @param {Partial} environment - The updated environment data. + * @param {User['id']} userId - The ID of the user updating the environment. + * @returns {Promise} - A promise that resolves to the updated environment. + */ + updateEnvironment( + environmentId: Environment['id'], + environment: Partial, + userId: User['id'] + ): Promise + + /** + * Deletes an environment. + * @param {Environment['id']} environmentId - The ID of the environment to delete. + * @returns {Promise} - A promise that resolves when the environment is successfully deleted. + */ + deleteEnvironment(environmentId: Environment['id']): Promise +} diff --git a/apps/api/src/environment/repository/mock.repository.ts b/apps/api/src/environment/repository/mock.repository.ts new file mode 100644 index 00000000..64e50850 --- /dev/null +++ b/apps/api/src/environment/repository/mock.repository.ts @@ -0,0 +1,45 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { Environment } from '@prisma/client' +import { IEnvironmentRepository } from './interface.repository' + +export class MockEnvironmentRepository implements IEnvironmentRepository { + createEnvironment( + environment: Partial, + projectId: string, + userId: string + ): Promise { + throw new Error('Method not implemented.') + } + environmentExists( + environmentName: string, + projectId: string + ): Promise { + throw new Error('Method not implemented.') + } + getEnvironmentByProjectIdAndId( + projectId: string, + environmentId: string + ): Promise { + throw new Error('Method not implemented.') + } + getEnvironmentsOfProject( + projectId: string, + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise { + throw new Error('Method not implemented.') + } + updateEnvironment( + environmentId: string, + environment: Partial, + userId: string + ): Promise { + throw new Error('Method not implemented.') + } + deleteEnvironment(environmentId: string): Promise { + throw new Error('Method not implemented.') + } +} diff --git a/apps/api/src/project/project.service.spec.ts b/apps/api/src/environment/service/environment.service.spec.ts similarity index 51% rename from apps/api/src/project/project.service.spec.ts rename to apps/api/src/environment/service/environment.service.spec.ts index 126b6cc2..cd2ad4bb 100644 --- a/apps/api/src/project/project.service.spec.ts +++ b/apps/api/src/environment/service/environment.service.spec.ts @@ -1,15 +1,15 @@ import { Test, TestingModule } from '@nestjs/testing'; -import { ProjectService } from './project.service'; +import { EnvironmentService } from './environment.service'; -describe('ProjectService', () => { - let service: ProjectService; +describe('EnvironmentService', () => { + let service: EnvironmentService; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ - providers: [ProjectService], + providers: [EnvironmentService], }).compile(); - service = module.get(ProjectService); + service = module.get(EnvironmentService); }); it('should be defined', () => { diff --git a/apps/api/src/project/project.service.ts b/apps/api/src/environment/service/environment.service.ts similarity index 63% rename from apps/api/src/project/project.service.ts rename to apps/api/src/environment/service/environment.service.ts index 3274dd0a..46a89b0a 100644 --- a/apps/api/src/project/project.service.ts +++ b/apps/api/src/environment/service/environment.service.ts @@ -1,4 +1,4 @@ import { Injectable } from '@nestjs/common'; @Injectable() -export class ProjectService {} +export class EnvironmentService {} diff --git a/apps/api/src/main.ts b/apps/api/src/main.ts index add65f4f..a9bb1180 100644 --- a/apps/api/src/main.ts +++ b/apps/api/src/main.ts @@ -9,6 +9,7 @@ import { NestFactory } from '@nestjs/core' import { AppModule } from './app/app.module' import chalk from 'chalk' import moment from 'moment' +import { QueryTransformPipe } from './common/query.transform.pipe' class CustomLogger implements LoggerService { log(message: string) { @@ -16,15 +17,27 @@ class CustomLogger implements LoggerService { } info(message: string) { - console.info(`${chalk.green('[INFO]')} ${chalk.green(moment().format('YYYY-MM-DD HH:mm:ss'))} - ${message}`) + console.info( + `${chalk.green('[INFO]')} ${chalk.green( + moment().format('YYYY-MM-DD HH:mm:ss') + )} - ${message}` + ) } error(message: string) { - console.error(`${chalk.red('[ERROR]')} ${chalk.red(moment().format('YYYY-MM-DD HH:mm:ss'))} - ${message}`) + console.error( + `${chalk.red('[ERROR]')} ${chalk.red( + moment().format('YYYY-MM-DD HH:mm:ss') + )} - ${message}` + ) } warn(message: string) { - console.warn(`${chalk.yellow('[WARN]')} ${chalk.yellow(moment().format('YYYY-MM-DD HH:mm:ss'))} - ${message}`) + console.warn( + `${chalk.yellow('[WARN]')} ${chalk.yellow( + moment().format('YYYY-MM-DD HH:mm:ss') + )} - ${message}` + ) } } @@ -39,11 +52,14 @@ async function bootstrap() { new ValidationPipe({ whitelist: true, transform: true - }) + }), + new QueryTransformPipe() ) const port = 4200 await app.listen(port) - logger.log(`🚀 Application is running on: http://localhost:${port}/${globalPrefix}`) + logger.log( + `🚀 Application is running on: http://localhost:${port}/${globalPrefix}` + ) } bootstrap() diff --git a/apps/api/src/prisma/migrations/20231226184616_init/migration.sql b/apps/api/src/prisma/migrations/20240102080245_init/migration.sql similarity index 59% rename from apps/api/src/prisma/migrations/20231226184616_init/migration.sql rename to apps/api/src/prisma/migrations/20240102080245_init/migration.sql index acd55959..80eb9670 100644 --- a/apps/api/src/prisma/migrations/20231226184616_init/migration.sql +++ b/apps/api/src/prisma/migrations/20240102080245_init/migration.sql @@ -2,7 +2,23 @@ CREATE TYPE "ProjectRole" AS ENUM ('OWNER', 'MAINTAINER', 'VIEWER'); -- CreateEnum -CREATE TYPE "ApiKeyRole" AS ENUM ('CREATE_PROJECT', 'READ_PROJECT', 'UPDATE_PROJECT', 'DELETE_PROJECT', 'CREATE_SECRET', 'READ_SECRET', 'UPDATE_SECRET', 'DELETE_SECRET', 'ADD_USER', 'REMOVE_USER', 'UPDATE_USER_ROLE', 'CREATE_API_KEY', 'READ_API_KEY', 'UPDATE_API_KEY', 'DELETE_API_KEY'); +CREATE TYPE "ApiKeyRole" AS ENUM ('CREATE_PROJECT', 'READ_PROJECT', 'UPDATE_PROJECT', 'DELETE_PROJECT', 'CREATE_SECRET', 'READ_SECRET', 'UPDATE_SECRET', 'DELETE_SECRET', 'ADD_USER', 'REMOVE_USER', 'UPDATE_USER_ROLE', 'CREATE_API_KEY', 'READ_API_KEY', 'UPDATE_API_KEY', 'DELETE_API_KEY', 'CREATE_ENVIRONMENT', 'READ_ENVIRONMENT', 'UPDATE_ENVIRONMENT', 'DELETE_ENVIRONMENT'); + +-- CreateEnum +CREATE TYPE "NotificationType" AS ENUM ('INVITED_TO_PROJECT', 'REMOVED_FROM_PROJECT', 'PROJECT_UPDATED', 'PROJECT_DELETED', 'SECRET_UPDATED', 'SECRET_DELETED', 'SECRET_ADDED', 'API_KEY_UPDATED', 'API_KEY_DELETED', 'API_KEY_ADDED', 'ENVIRONMENT_UPDATED', 'ENVIRONMENT_DELETED', 'ENVIRONMENT_ADDED'); + +-- CreateTable +CREATE TABLE "Notification" ( + "id" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "readAt" TIMESTAMP(3), + "type" "NotificationType" NOT NULL, + "message" TEXT NOT NULL, + "link" TEXT, + "userId" TEXT NOT NULL, + + CONSTRAINT "Notification_pkey" PRIMARY KEY ("id") +); -- CreateTable CREATE TABLE "User" ( @@ -27,6 +43,32 @@ CREATE TABLE "Subscription" ( CONSTRAINT "Subscription_pkey" PRIMARY KEY ("id") ); +-- CreateTable +CREATE TABLE "FreeTierLimit" ( + "id" TEXT NOT NULL, + "maxProjects" INTEGER NOT NULL DEFAULT 5, + "maxEnvironments" INTEGER NOT NULL DEFAULT 3, + "maxApiKeys" INTEGER NOT NULL DEFAULT 3, + "maxSecretsPerProject" INTEGER NOT NULL DEFAULT 10, + "maxMembersPerProject" INTEGER NOT NULL DEFAULT 5, + + CONSTRAINT "FreeTierLimit_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Environment" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "description" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "isDefault" BOOLEAN NOT NULL DEFAULT false, + "lastUpdatedById" TEXT NOT NULL, + "projectId" TEXT NOT NULL, + + CONSTRAINT "Environment_pkey" PRIMARY KEY ("id") +); + -- CreateTable CREATE TABLE "Project" ( "id" TEXT NOT NULL, @@ -36,6 +78,9 @@ CREATE TABLE "Project" ( "updatedAt" TIMESTAMP(3) NOT NULL, "publicKey" TEXT NOT NULL, "privateKey" TEXT, + "storePrivateKey" BOOLEAN NOT NULL DEFAULT false, + "isFreeTier" BOOLEAN NOT NULL DEFAULT true, + "isDisabled" BOOLEAN NOT NULL DEFAULT false, "lastUpdatedById" TEXT NOT NULL, CONSTRAINT "Project_pkey" PRIMARY KEY ("id") @@ -47,6 +92,7 @@ CREATE TABLE "ProjectMember" ( "role" "ProjectRole" NOT NULL, "userId" TEXT NOT NULL, "projectId" TEXT NOT NULL, + "invitationAccepted" BOOLEAN NOT NULL DEFAULT false, CONSTRAINT "ProjectMember_pkey" PRIMARY KEY ("id") ); @@ -61,16 +107,26 @@ CREATE TABLE "ApiKeyScope" ( CONSTRAINT "ApiKeyScope_pkey" PRIMARY KEY ("id") ); +-- CreateTable +CREATE TABLE "SecretVersion" ( + "id" TEXT NOT NULL, + "value" TEXT NOT NULL, + "version" INTEGER NOT NULL DEFAULT 1, + "secretId" TEXT NOT NULL, + + CONSTRAINT "SecretVersion_pkey" PRIMARY KEY ("id") +); + -- CreateTable CREATE TABLE "Secret" ( "id" TEXT NOT NULL, "name" TEXT NOT NULL, - "value" TEXT NOT NULL, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, "rotateAt" TIMESTAMP(3), "lastUpdatedById" TEXT NOT NULL, "projectId" TEXT NOT NULL, + "environmentId" TEXT NOT NULL, CONSTRAINT "Secret_pkey" PRIMARY KEY ("id") ); @@ -100,12 +156,24 @@ CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); -- CreateIndex CREATE UNIQUE INDEX "Subscription_userId_key" ON "Subscription"("userId"); +-- CreateIndex +CREATE UNIQUE INDEX "ProjectMember_projectId_userId_key" ON "ProjectMember"("projectId", "userId"); + -- CreateIndex CREATE UNIQUE INDEX "Otp_code_key" ON "Otp"("code"); +-- AddForeignKey +ALTER TABLE "Notification" ADD CONSTRAINT "Notification_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + -- AddForeignKey ALTER TABLE "Subscription" ADD CONSTRAINT "Subscription_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; +-- AddForeignKey +ALTER TABLE "Environment" ADD CONSTRAINT "Environment_lastUpdatedById_fkey" FOREIGN KEY ("lastUpdatedById") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Environment" ADD CONSTRAINT "Environment_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; + -- AddForeignKey ALTER TABLE "Project" ADD CONSTRAINT "Project_lastUpdatedById_fkey" FOREIGN KEY ("lastUpdatedById") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; @@ -121,12 +189,18 @@ ALTER TABLE "ApiKeyScope" ADD CONSTRAINT "ApiKeyScope_apiKeyId_fkey" FOREIGN KEY -- AddForeignKey ALTER TABLE "ApiKeyScope" ADD CONSTRAINT "ApiKeyScope_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; +-- AddForeignKey +ALTER TABLE "SecretVersion" ADD CONSTRAINT "SecretVersion_secretId_fkey" FOREIGN KEY ("secretId") REFERENCES "Secret"("id") ON DELETE CASCADE ON UPDATE CASCADE; + -- AddForeignKey ALTER TABLE "Secret" ADD CONSTRAINT "Secret_lastUpdatedById_fkey" FOREIGN KEY ("lastUpdatedById") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "Secret" ADD CONSTRAINT "Secret_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; +-- AddForeignKey +ALTER TABLE "Secret" ADD CONSTRAINT "Secret_environmentId_fkey" FOREIGN KEY ("environmentId") REFERENCES "Environment"("id") ON DELETE CASCADE ON UPDATE CASCADE; + -- AddForeignKey ALTER TABLE "ApiKey" ADD CONSTRAINT "ApiKey_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/apps/api/src/prisma/prisma.module.ts b/apps/api/src/prisma/prisma.module.ts index 56b00322..db9da7f3 100644 --- a/apps/api/src/prisma/prisma.module.ts +++ b/apps/api/src/prisma/prisma.module.ts @@ -1,10 +1,9 @@ import { Global, Module } from '@nestjs/common' import { PrismaService } from './prisma.service' -import { PrismaRepository } from './prisma.repository' @Global() @Module({ - providers: [PrismaService, PrismaRepository], - exports: [PrismaService, PrismaRepository] + providers: [PrismaService], + exports: [PrismaService] }) export class PrismaModule {} diff --git a/apps/api/src/prisma/prisma.repository.ts b/apps/api/src/prisma/prisma.repository.ts deleted file mode 100644 index bfeb1a9a..00000000 --- a/apps/api/src/prisma/prisma.repository.ts +++ /dev/null @@ -1,179 +0,0 @@ -import { Injectable } from '@nestjs/common' -import { PrismaService } from './prisma.service' -import { Otp, User } from '@prisma/client' - -@Injectable() -export class PrismaRepository { - constructor(private prisma: PrismaService) {} - - /** - * Find a user by email - * @param email the email to search for - * @returns the user if found, null otherwise - */ - async findUserByEmail(email: string): Promise { - return await this.prisma.user.findUnique({ - where: { - email - } - }) - } - - /** - * Find a user by the user id - * @param id The id of the user to find - * @returns the user if found, null otherwise - */ - async findUserById(id: string): Promise { - return await this.prisma.user.findUnique({ - where: { - id - } - }) - } - - /** - * Find all users - * @param page The page number - * @param limit The number of items per page - * @param sort The field to sort by - * @param order The order to sort by - * @param search The search string - * @returns The list of users - */ - async findUsers( - page: number, - limit: number, - sort: string, - order: string, - search: string - ): Promise { - return await this.prisma.user.findMany({ - skip: (page - 1) * limit, - take: limit, - orderBy: { - [sort]: order - }, - where: { - OR: [ - { - name: { - contains: search - } - }, - { - email: { - contains: search - } - } - ] - } - }) - } - - /** - * Create a user with the given email. The onboarding process - * will aim at updating the user further. - * @param email The email of the user to create - * @returns - */ - async createUser(email: string): Promise { - return await this.prisma.user.create({ - data: { - email - } - }) - } - - /** - * Update an existing user - * @param id ID of the user to update - * @param data The data to update - * @returns The updated user - */ - async updateUser(id: string, data: Partial): Promise { - return await this.prisma.user.update({ - where: { - id - }, - data - }) - } - - /** - * Delete a user by id - * @param id The id of the user to delete - * @returns The deleted user - */ - async deleteUser(id: string): Promise { - return await this.prisma.user.delete({ - where: { - id - } - }) - } - - /** - * An OTP is valid if it exists, is not expired, and is associated with the given email - * @param email the email against which to check the OTP - * @param otp the OTP code to check - * @returns returns true if the OTP is valid, false otherwise - */ - async isOtpValid(email: string, otp: string): Promise { - const timeNow = new Date() - return ( - (await this.prisma.otp.count({ - where: { - code: otp, - user: { - email - }, - expiresAt: { - gt: timeNow - } - } - })) > 0 - ) - } - - async createOtp( - email: string, - otp: string, - expiresAfter: number - ): Promise { - const timeNow = new Date() - return await this.prisma.otp.create({ - data: { - code: otp, - expiresAt: new Date(timeNow.getTime() + expiresAfter), - user: { - connect: { - email - } - } - } - }) - } - - async deleteOtp(email: string, otp: string): Promise { - await this.prisma.otp.delete({ - where: { - code: otp, - AND: { - user: { - email - } - } - } - }) - } - - async excludeFields( - key: T, - ...fields: K[] - ): Promise> { - return Object.fromEntries( - Object.entries(key).filter(([k]) => !fields.includes(k as K)) - ) as Partial - } -} diff --git a/apps/api/src/prisma/schema.prisma b/apps/api/src/prisma/schema.prisma index e9de60f3..01c6d73c 100644 --- a/apps/api/src/prisma/schema.prisma +++ b/apps/api/src/prisma/schema.prisma @@ -10,7 +10,7 @@ datasource db { enum ProjectRole { OWNER // Can do everything MAINTAINER // Can do everything except deleting the project - VIEWER // Can only view the project and its secrets + VIEWER // Can only view the project and use its secrets } enum ApiKeyRole { @@ -29,6 +29,37 @@ enum ApiKeyRole { READ_API_KEY UPDATE_API_KEY DELETE_API_KEY + CREATE_ENVIRONMENT + READ_ENVIRONMENT + UPDATE_ENVIRONMENT + DELETE_ENVIRONMENT +} + +enum NotificationType { + INVITED_TO_PROJECT + REMOVED_FROM_PROJECT + PROJECT_UPDATED + PROJECT_DELETED + SECRET_UPDATED + SECRET_DELETED + SECRET_ADDED + API_KEY_UPDATED + API_KEY_DELETED + API_KEY_ADDED + ENVIRONMENT_UPDATED + ENVIRONMENT_DELETED + ENVIRONMENT_ADDED +} + +model Notification { + id String @id @default(cuid()) + createdAt DateTime @default(now()) + readAt DateTime? + type NotificationType + message String + link String? + user User @relation(fields: [userId], references: [id], onDelete: Cascade, onUpdate: Cascade) + userId String } model User { @@ -41,11 +72,13 @@ model User { isAdmin Boolean @default(false) subscription Subscription? - projects ProjectMember[] - apiKeys ApiKey[] - otps Otp[] - Secret Secret[] // Stores the secrets the user updated - Project Project[] // Stores the projects the user updated + projects ProjectMember[] + apiKeys ApiKey[] + otps Otp[] + notifications Notification[] + Secret Secret[] // Stores the secrets the user updated + project Project[] // Stores the projects the user updated + environments Environment[] // Stores the environments the user updated } model Subscription { @@ -57,14 +90,34 @@ model Subscription { userId String @unique } -model Project { +model Environment { id String @id @default(cuid()) name String description String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt - publicKey String - privateKey String? // We store this only if the user wants us to do so! + isDefault Boolean @default(false) + + lastUpdatedBy User @relation(fields: [lastUpdatedById], references: [id], onDelete: Cascade, onUpdate: Cascade) + lastUpdatedById String + + secrets Secret[] + + project Project @relation(fields: [projectId], references: [id], onDelete: Cascade, onUpdate: Cascade) + projectId String +} + +model Project { + id String @id @default(cuid()) + name String + description String? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + publicKey String + privateKey String? // We store this only if the user wants us to do so! + storePrivateKey Boolean @default(false) + isFreeTier Boolean @default(true) + isDisabled Boolean @default(false) // This is set to true when the user stops his subscription and still has premium features in use lastUpdatedBy User @relation(fields: [lastUpdatedById], references: [id], onDelete: Cascade, onUpdate: Cascade) lastUpdatedById String @@ -72,15 +125,19 @@ model Project { members ProjectMember[] secrets Secret[] apiKeyScopes ApiKeyScope[] + environments Environment[] } model ProjectMember { - id String @id @default(cuid()) - role ProjectRole - user User @relation(fields: [userId], references: [id], onDelete: Cascade, onUpdate: Cascade) - userId String - project Project @relation(fields: [projectId], references: [id], onDelete: Cascade, onUpdate: Cascade) - projectId String + id String @id @default(cuid()) + role ProjectRole + user User @relation(fields: [userId], references: [id], onDelete: Cascade, onUpdate: Cascade) + userId String + project Project @relation(fields: [projectId], references: [id], onDelete: Cascade, onUpdate: Cascade) + projectId String + invitationAccepted Boolean @default(false) + + @@unique([projectId, userId]) } model ApiKeyScope { @@ -94,12 +151,21 @@ model ApiKeyScope { project Project @relation(fields: [projectId], references: [id], onDelete: Cascade, onUpdate: Cascade) } +model SecretVersion { + id String @id @default(cuid()) + value String + version Int @default(1) + + secretId String + secret Secret @relation(fields: [secretId], references: [id], onDelete: Cascade, onUpdate: Cascade) +} + model Secret { - id String @id @default(cuid()) + id String @id @default(cuid()) name String - value String - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt + versions SecretVersion[] // Stores the versions of the secret + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt rotateAt DateTime? lastUpdatedBy User @relation(fields: [lastUpdatedById], references: [id]) @@ -107,6 +173,9 @@ model Secret { projectId String project Project @relation(fields: [projectId], references: [id], onDelete: Cascade, onUpdate: Cascade) + + environmentId String + environment Environment @relation(fields: [environmentId], references: [id], onDelete: Cascade, onUpdate: Cascade) } model ApiKey { diff --git a/apps/api/src/project/controller/project.controller.spec.ts b/apps/api/src/project/controller/project.controller.spec.ts new file mode 100644 index 00000000..eccf5090 --- /dev/null +++ b/apps/api/src/project/controller/project.controller.spec.ts @@ -0,0 +1,41 @@ +import { Test, TestingModule } from '@nestjs/testing' +import { ProjectController } from './project.controller' +import { ProjectService } from '../service/project.service' +import { MockProjectRepository } from '../repository/mock.repository' +import { PROJECT_REPOSITORY } from '../repository/interface.repository' +import { ENVIRONMENT_REPOSITORY } from '../../environment/repository/interface.repository' +import { MockEnvironmentRepository } from '../../environment/repository/mock.repository' +import { USER_REPOSITORY } from '../../user/repository/interface.repository' +import { MockUserRepository } from '../../user/repository/mock.repository' +import { RESEND_SERVICE } from '../../resend/services/resend.service.interface' +import { MockResend } from '../../resend/services/mock.resend' +import { JwtService } from '@nestjs/jwt' +import { ProjectPermission } from '../misc/project.permission' + +describe('ProjectController', () => { + let controller: ProjectController + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [ProjectController], + providers: [ + ProjectService, + { provide: PROJECT_REPOSITORY, useClass: MockProjectRepository }, + { + provide: ENVIRONMENT_REPOSITORY, + useClass: MockEnvironmentRepository + }, + { provide: USER_REPOSITORY, useClass: MockUserRepository }, + { provide: RESEND_SERVICE, useClass: MockResend }, + JwtService, + ProjectPermission + ] + }).compile() + + controller = module.get(ProjectController) + }) + + it('should be defined', () => { + expect(controller).toBeDefined() + }) +}) diff --git a/apps/api/src/project/controller/project.controller.ts b/apps/api/src/project/controller/project.controller.ts new file mode 100644 index 00000000..bf2e0a23 --- /dev/null +++ b/apps/api/src/project/controller/project.controller.ts @@ -0,0 +1,183 @@ +import { + Body, + Controller, + Delete, + Get, + Param, + Post, + Put, + Query, + UseGuards +} from '@nestjs/common' +import { ProjectService } from '../service/project.service' +import { CurrentUser } from '../../decorators/user.decorator' +import { Project, ProjectRole, User } from '@prisma/client' +import { + CreateProject, + ProjectMemberDTO +} from '../dto/create.project/create.project' +import { UpdateProject } from '../dto/update.project/update.project' +import { AdminGuard } from '../../auth/guard/admin.guard' + +@Controller('project') +export class ProjectController { + constructor(private readonly service: ProjectService) {} + + @Post() + async createProject(@CurrentUser() user: User, @Body() dto: CreateProject) { + return await this.service.createProject(user, dto) + } + + @Put(':projectId') + async updateProject( + @CurrentUser() user: User, + @Param('projectId') projectId: Project['id'], + @Body() dto: UpdateProject + ) { + return await this.service.updateProject(user, projectId, dto) + } + + @Delete(':projectId') + async deleteProject( + @CurrentUser() user: User, + @Param('projectId') projectId: Project['id'] + ) { + return await this.service.deleteProject(user, projectId) + } + + @Post(':projectId/member') + async addUsersToProject( + @CurrentUser() user: User, + @Param('projectId') projectId: Project['id'], + @Body() members: ProjectMemberDTO[] + ) { + return await this.service.addUsersToProject(user, projectId, members) + } + + @Delete(':projectId/member') + async removeUsersFromProject( + @CurrentUser() user: User, + @Param('projectId') projectId: Project['id'], + @Body() userIds: User['id'][] + ) { + return await this.service.removeUsersFromProject(user, projectId, userIds) + } + + @Put(':projectId/member') + async updateMemberRole( + @CurrentUser() user: User, + @Param('projectId') projectId: Project['id'], + @Query('userId') userId: User['id'], + @Query('role') role: ProjectRole + ) { + return await this.service.updateMemberRole(user, projectId, userId, role) + } + + @Get(':projectId/is-member/:userId') + async isMemberOfProject( + @CurrentUser() user: User, + @Param('projectId') projectId: Project['id'], + @Param('userId') userId: User['id'] + ) { + return await this.service.isUserMemberOfProject(user, projectId, userId) + } + + @Put(':projectId/accept-invitation') + async acceptInvitation( + @CurrentUser() user: User, + @Param('projectId') projectId: Project['id'] + ) { + return await this.service.acceptInvitation(user, projectId) + } + + @Put(':projectId/cancel-invitation/:inviteeId') + async cancelInvitation( + @CurrentUser() user: User, + @Param('projectId') projectId: Project['id'], + @Param('inviteeId') inviteeId: User['id'] + ) { + return await this.service.cancelInvitation(user, projectId, inviteeId) + } + + @Put(':projectId/decline-invitation/:inviteeId') + async declineInvitation( + @CurrentUser() user: User, + @Param('projectId') projectId: Project['id'] + ) { + return await this.service.declineInvitation(user, projectId) + } + + @Put(':projectId/leave') + async leaveProject( + @CurrentUser() user: User, + @Param('projectId') projectId: Project['id'] + ) { + return await this.service.leaveProject(user, projectId) + } + + @Get(':projectId') + async getProject( + @CurrentUser() user: User, + @Param('projectId') projectId: Project['id'] + ) { + return await this.service.getProjectByUserAndId(user, projectId) + } + + @Get() + async getAllProjects( + @CurrentUser() user: User, + @Query('page') page: number = 1, + @Query('limit') limit: number = 10, + @Query('sort') sort: string = 'name', + @Query('order') order: string = 'asc', + @Query('search') search: string = '' + ) { + return await this.service.getProjectsOfUser( + user, + page, + limit, + sort, + order, + search + ) + } + + @Get(':projectId/members') + async getMembersOfProject( + @CurrentUser() user: User, + @Param('projectId') projectId: Project['id'], + @Query('page') page: number = 1, + @Query('limit') limit: number = 10, + @Query('sort') sort: string = 'name', + @Query('order') order: string = 'asc', + @Query('search') search: string = '' + ) { + return await this.service.getProjectMembers( + user, + projectId, + page, + limit, + sort, + order, + search + ) + } + + @Get('admin/:projectId') + @UseGuards(AdminGuard) + async getProjectById(@Param('projectId') projectId: Project['id']) { + return await this.service.getProjectById(projectId) + } + + @Get('admin/all') + @UseGuards(AdminGuard) + async getAllProjectsAdmin( + @Query('page') page: number = 1, + @Query('limit') limit: number = 10, + @Query('sort') sort: string = 'name', + @Query('order') order: string = 'asc', + @Query('search') search: string = '' + ) { + return await this.service.getProjects(page, limit, sort, order, search) + } +} diff --git a/apps/api/src/project/dto/create.project/create.project.ts b/apps/api/src/project/dto/create.project/create.project.ts index a8c0af42..342ae719 100644 --- a/apps/api/src/project/dto/create.project/create.project.ts +++ b/apps/api/src/project/dto/create.project/create.project.ts @@ -1 +1,35 @@ -export class CreateProject {} +import { ProjectRole } from '@prisma/client' +import { CreateEnvironment } from '../../../environment/dto/create.environment' +import { + IsArray, + IsBoolean, + IsNotEmpty, + IsOptional, + IsString +} from 'class-validator' + +export class CreateProject { + @IsString() + @IsNotEmpty() + name: string + + @IsString() + @IsOptional() + description: string + + @IsBoolean() + storePrivateKey: boolean + + @IsArray() + @IsOptional() + environments: CreateEnvironment[] + + @IsArray() + @IsOptional() + members: ProjectMemberDTO[] +} + +export interface ProjectMemberDTO { + email: string + role: ProjectRole +} diff --git a/apps/api/src/project/dto/update.project/update.project.ts b/apps/api/src/project/dto/update.project/update.project.ts index abb141e3..58d05f6d 100644 --- a/apps/api/src/project/dto/update.project/update.project.ts +++ b/apps/api/src/project/dto/update.project/update.project.ts @@ -1 +1,13 @@ -export class UpdateProject {} +import { IsBoolean, IsOptional, IsString } from 'class-validator' +import { CreateProject } from '../create.project/create.project' +import { PartialType } from '@nestjs/swagger' + +export class UpdateProject extends PartialType(CreateProject) { + @IsBoolean() + @IsOptional() + regenerateKeyPair: boolean + + @IsString() + @IsOptional() + privateKey: string +} diff --git a/apps/api/src/project/misc/project.permission.spec.ts b/apps/api/src/project/misc/project.permission.spec.ts new file mode 100644 index 00000000..5acd11ce --- /dev/null +++ b/apps/api/src/project/misc/project.permission.spec.ts @@ -0,0 +1,23 @@ +import { Test, TestingModule } from '@nestjs/testing' +import { ProjectPermission } from './project.permission' +import { PROJECT_REPOSITORY } from '../repository/interface.repository' +import { MockProjectRepository } from '../repository/mock.repository' + +describe('ProjectPermission', () => { + let service: ProjectPermission + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + ProjectPermission, + { provide: PROJECT_REPOSITORY, useClass: MockProjectRepository } + ] + }).compile() + + service = module.get(ProjectPermission) + }) + + it('should be defined', () => { + expect(service).toBeDefined() + }) +}) diff --git a/apps/api/src/project/misc/project.permission.ts b/apps/api/src/project/misc/project.permission.ts new file mode 100644 index 00000000..4fab02d5 --- /dev/null +++ b/apps/api/src/project/misc/project.permission.ts @@ -0,0 +1,81 @@ +import { Inject, UnauthorizedException } from '@nestjs/common' +import { Project, ProjectRole, User } from '@prisma/client' +import { ProjectRepository } from '../repository/project.repository' +import { PROJECT_REPOSITORY } from '../repository/interface.repository' + +export class ProjectPermission { + constructor( + @Inject(PROJECT_REPOSITORY) private readonly repository: ProjectRepository + ) {} + + async canUpdateProject(user: User, projectId: Project['id']): Promise { + // Admins can do everything + if (user.isAdmin) Promise.resolve() + + // Else, check if the user is a project admin + const memberships = await this.resolveProjectsOfUser(user) + const membership = memberships.find( + (membership) => membership.projectId === projectId + ) + if (!membership) { + throw new UnauthorizedException('User is not a member of the project') + } + if (membership.role === ProjectRole.VIEWER) { + throw new UnauthorizedException('OWNER or MAINTAINER role is required') + } + } + + async canDeleteProject(user: User, projectId: Project['id']): Promise { + await this.isProjectAdmin(user, projectId) + } + + async canAddUserToProject( + user: User, + projectId: Project['id'] + ): Promise { + await this.isProjectAdmin(user, projectId) + } + + async canRemoveUserFromProject( + user: User, + projectId: Project['id'] + ): Promise { + await this.isProjectAdmin(user, projectId) + } + + async canUpdateUserPermissionsOfProject( + user: User, + projectId: Project['id'] + ): Promise { + await this.isProjectAdmin(user, projectId) + } + + async isProjectAdmin(user: User, projectId: Project['id']): Promise { + // Admins can do everything + if (user.isAdmin) Promise.resolve() + + // Else, check if the user is a project admin + const memberships = await this.resolveProjectsOfUser(user) + const membership = memberships.find( + (membership) => membership.projectId === projectId + ) + if (!membership) { + throw new UnauthorizedException('User is not a member of the project') + } + if (membership.role !== ProjectRole.OWNER) { + throw new UnauthorizedException('OWNER role is required') + } + } + + private async resolveProjectsOfUser( + user: User + ): Promise<{ projectId: Project['id']; role: ProjectRole }[]> { + const memberships = await this.repository.getProjectMembershipsOfUser( + user.id + ) + return memberships.map((membership) => ({ + projectId: membership.projectId, + role: membership.role + })) + } +} diff --git a/apps/api/src/project/project.controller.spec.ts b/apps/api/src/project/project.controller.spec.ts deleted file mode 100644 index 9a56a5b0..00000000 --- a/apps/api/src/project/project.controller.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { ProjectController } from './project.controller'; - -describe('ProjectController', () => { - let controller: ProjectController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [ProjectController], - }).compile(); - - controller = module.get(ProjectController); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/apps/api/src/project/project.controller.ts b/apps/api/src/project/project.controller.ts deleted file mode 100644 index 66980aef..00000000 --- a/apps/api/src/project/project.controller.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Controller } from '@nestjs/common'; - -@Controller('project') -export class ProjectController {} diff --git a/apps/api/src/project/project.module.ts b/apps/api/src/project/project.module.ts index 94abb574..1d08a1c4 100644 --- a/apps/api/src/project/project.module.ts +++ b/apps/api/src/project/project.module.ts @@ -1,9 +1,22 @@ -import { Module } from '@nestjs/common'; -import { ProjectService } from './project.service'; -import { ProjectController } from './project.controller'; +import { Module } from '@nestjs/common' +import { ProjectService } from './service/project.service' +import { ProjectController } from './controller/project.controller' +import { ProjectRepository } from './repository/project.repository' +import { PROJECT_REPOSITORY } from './repository/interface.repository' +import { ProjectPermission } from './misc/project.permission' +import { EnvironmentModule } from '../environment/environment.module' +import { UserModule } from '../user/user.module' @Module({ - providers: [ProjectService], - controllers: [ProjectController] + providers: [ + ProjectService, + { + provide: PROJECT_REPOSITORY, + useClass: ProjectRepository + }, + ProjectPermission + ], + controllers: [ProjectController], + imports: [UserModule, EnvironmentModule] }) export class ProjectModule {} diff --git a/apps/api/src/project/repository/interface.repository.ts b/apps/api/src/project/repository/interface.repository.ts new file mode 100644 index 00000000..b1cc001c --- /dev/null +++ b/apps/api/src/project/repository/interface.repository.ts @@ -0,0 +1,193 @@ +import { Project, ProjectMember, ProjectRole, User } from '@prisma/client' + +export const PROJECT_REPOSITORY = 'PROJECT_REPOSITORY' + +/** + * Interface for the Project Repository. + */ +export interface IProjectRepository { + /** + * Checks if a project with the given name exists for the specified user. + * @param {string} projectName - The name of the project. + * @param {User['id']} userId - The ID of the user. + * @returns {Promise} - A promise that resolves to a boolean indicating whether the project exists. + */ + projectExists(projectName: string, userId: User['id']): Promise + + /** + * Creates a new project. + * @param {Partial} project - The project data. + * @param {User['id']} userId - The ID of the user creating the project. + * @returns {Promise} - A promise that resolves to the created project. + */ + createProject(project: Partial, userId: User['id']): Promise + + /** + * Updates an existing project. + * @param {Project['id']} projectId - The ID of the project to update. + * @param {Partial} project - The updated project data. + * @param {User['id']} userId - The ID of the user updating the project. + * @returns {Promise} - A promise that resolves to the updated project. + */ + updateProject( + projectId: Project['id'], + project: Partial, + userId: User['id'] + ): Promise + + /** + * Deletes a project. + * @param {Project['id']} projectId - The ID of the project to delete. + * @returns {Promise} - A promise that resolves when the project is successfully deleted. + */ + deleteProject(projectId: Project['id']): Promise + + /** + * Adds a member to a project with the specified role. + * @param {Project['id']} projectId - The ID of the project. + * @param {User['id']} userId - The ID of the user to add as a member. + * @param {ProjectRole} role - The role of the user in the project. + * @returns {Promise} - A promise that resolves to the added project member. + */ + addMemberToProject( + projectId: Project['id'], + userId: User['id'], + role: ProjectRole + ): Promise + + /** + * Removes a member from a project. + * @param {Project['id']} projectId - The ID of the project. + * @param {User['id']} userId - The ID of the user to remove from the project. + * @returns {Promise} - A promise that resolves when the user is successfully removed from the project. + */ + removeMemberFromProject( + projectId: Project['id'], + userId: User['id'] + ): Promise + + /** + * Updates the role of a member in a project. + * @param {Project['id']} projectId - The ID of the project. + * @param {User['id']} userId - The ID of the user whose role needs to be updated. + * @param {ProjectRole} role - The new role for the user in the project. + * @returns {Promise} - A promise that resolves to the updated project member. + */ + updateMembership( + projectId: Project['id'], + userId: User['id'], + data: Partial> + ): Promise + + /** + * Checks if a user is a member of a project. + * @param {Project['id']} projectId - The ID of the project. + * @param {User['id']} userId - The ID of the user. + * @returns {Promise} - A promise that resolves to a boolean indicating whether the user is a member of the project. + */ + memberExistsInProject( + projectId: Project['id'], + userId: User['id'] + ): Promise + + /** + * Checks if a user has a pending invitation to a project. + * @param {Project['id']} projectId - The ID of the project. + * @param {User['id']} userId - The ID of the user. + * @returns {Promise} - A promise that resolves to a boolean indicating whether the user has a pending invitation to the project. + */ + invitationPending( + projectId: Project['id'], + userId: User['id'] + ): Promise + + /** + * Retrieves a project membership by project ID and user ID. + * @param {Project['id']} projectId - The ID of the project. + * @param {User['id']} userId - The ID of the user. + * @returns {Promise} - A promise that resolves to the project membership or null if not found. + */ + deleteMembership(projectId: Project['id'], userId: User['id']): Promise + + /** + * Retrieves a project by user ID and project ID. + * @param {User['id']} userId - The ID of the user. + * @param {Project['id']} projectId - The ID of the project. + * @returns {Promise} - A promise that resolves to the project or null if not found. + */ + getProjectByUserIdAndId( + userId: User['id'], + projectId: Project['id'] + ): Promise + + /** + * Retrieves a project by ID. + * @param {Project['id']} projectId - The ID of the project. + * @returns {Promise} - A promise that resolves to the project or null if not found. + */ + getProjectById(projectId: Project['id']): Promise + + /** + * Retrieves projects of a user with optional pagination, sorting, and search. + * @param {User['id']} userId - The ID of the user. + * @param {number} page - The page number for pagination. + * @param {number} limit - The number of projects per page. + * @param {string} sort - The field to sort by. + * @param {string} order - The sort order ('asc' or 'desc'). + * @param {string} search - The search term for project names or descriptions. + * @returns {Promise>} - A promise that resolves to an array of projects and permission. + */ + getProjectsOfUser( + userId: User['id'], + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise> + + /** + * Retrieves projects with optional pagination, sorting, and search. + * @param {number} page - The page number for pagination. + * @param {number} limit - The number of projects per page. + * @param {string} sort - The field to sort by. + * @param {string} order - The sort order ('asc' or 'desc'). + * @param {string} search - The search term for project names or descriptions. + * @returns {Promise} - A promise that resolves to an array of projects. + */ + getProjects( + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise + + /** + * Retrieves project memberships of a user. + * @param {User['id']} userId - The ID of the user. + * @returns {Promise} - A promise that resolves to an array of project memberships. + */ + getProjectMembershipsOfUser(userId: User['id']): Promise + + /** + * Retrieves members of a project. + * @param {Project['id']} projectId - The ID of the project. + * @returns {Promise} - A promise that resolves to an array of project members. + */ + getMembersOfProject( + projectId: Project['id'], + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise< + { + id: string + role: ProjectRole + user: User + invitationAccepted: boolean + }[] + > +} diff --git a/apps/api/src/project/repository/mock.repository.ts b/apps/api/src/project/repository/mock.repository.ts new file mode 100644 index 00000000..c74295f7 --- /dev/null +++ b/apps/api/src/project/repository/mock.repository.ts @@ -0,0 +1,127 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { + $Enums, + Project, + ProjectMember, + ProjectRole, + User +} from '@prisma/client' +import { IProjectRepository } from './interface.repository' + +export class MockProjectRepository implements IProjectRepository { + deleteMembership(projectId: string, userId: string): Promise { + throw new Error('Method not implemented.') + } + invitationPending(projectId: string, userId: string): Promise { + throw new Error('Method not implemented.') + } + addMemberToProject( + projectId: string, + userId: string, + role: $Enums.ProjectRole + ): Promise<{ + id: string + role: $Enums.ProjectRole + userId: string + projectId: string + invitationAccepted: boolean + }> { + throw new Error('Method not implemented.') + } + removeMemberFromProject(projectId: string, userId: string): Promise { + throw new Error('Method not implemented.') + } + updateMembership( + projectId: string, + userId: string, + data: Partial> + ): Promise<{ + id: string + role: $Enums.ProjectRole + userId: string + projectId: string + invitationAccepted: boolean + }> { + throw new Error('Method not implemented.') + } + memberExistsInProject(projectId: string, userId: string): Promise { + throw new Error('Method not implemented.') + } + getMembersOfProject( + projectId: string, + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise< + { + id: string + role: $Enums.ProjectRole + user: { + id: string + email: string + name: string + profilePictureUrl: string + isActive: boolean + isOnboardingFinished: boolean + isAdmin: boolean + } + invitationAccepted: boolean + }[] + > { + throw new Error('Method not implemented.') + } + projectExists(projectName: string, userId: string): Promise { + throw new Error('Method not implemented.') + } + + createProject(project: Partial, userId: string): Promise { + throw new Error('Method not implemented.') + } + + updateProject( + projectId: string, + project: Partial, + userId: string + ): Promise { + throw new Error('Method not implemented.') + } + + deleteProject(projectId: string): Promise { + throw new Error('Method not implemented.') + } + + getProjectByUserIdAndId(userId: string, projectId: string): Promise { + throw new Error('Method not implemented.') + } + + getProjectById(projectId: string): Promise { + throw new Error('Method not implemented.') + } + + getProjectsOfUser( + userId: User['id'], + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise> { + throw new Error('Method not implemented.') + } + + getProjects( + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise { + throw new Error('Method not implemented.') + } + + getProjectMembershipsOfUser(userId: User['id']): Promise { + throw new Error('Method not implemented.') + } +} diff --git a/apps/api/src/project/repository/project.repository.ts b/apps/api/src/project/repository/project.repository.ts new file mode 100644 index 00000000..6ef1626b --- /dev/null +++ b/apps/api/src/project/repository/project.repository.ts @@ -0,0 +1,340 @@ +import { Project, ProjectMember, ProjectRole, User } from '@prisma/client' +import { PrismaService } from '../../prisma/prisma.service' +import { IProjectRepository } from './interface.repository' +import { Injectable } from '@nestjs/common' + +@Injectable() +export class ProjectRepository implements IProjectRepository { + constructor(private readonly prisma: PrismaService) {} + + async addMemberToProject( + projectId: Project['id'], + userId: User['id'], + role: ProjectRole + ): Promise { + return await this.prisma.projectMember.create({ + data: { + projectId, + userId, + role + } + }) + } + + async removeMemberFromProject( + projectId: Project['id'], + userId: User['id'] + ): Promise { + await this.prisma.projectMember.delete({ + where: { + projectId_userId: { + projectId, + userId + } + } + }) + } + + async updateMembership( + projectId: Project['id'], + userId: User['id'], + data: Partial> + ): Promise { + return await this.prisma.projectMember.update({ + where: { + projectId_userId: { + projectId, + userId + } + }, + data: { + role: data.role, + invitationAccepted: data.invitationAccepted + } + }) + } + + async memberExistsInProject( + projectId: string, + userId: string + ): Promise { + return await this.prisma.projectMember + .count({ + where: { + projectId, + userId + } + }) + .then((count) => count > 0) + } + + async invitationPending( + projectId: Project['id'], + userId: User['id'] + ): Promise { + return await this.prisma.projectMember + .count({ + where: { + projectId, + userId, + invitationAccepted: false + } + }) + .then((count) => count > 0) + } + + async deleteMembership( + projectId: Project['id'], + userId: User['id'] + ): Promise { + await this.prisma.projectMember.delete({ + where: { + projectId_userId: { + projectId, + userId + } + } + }) + } + + async projectExists( + projectName: string, + userId: User['id'] + ): Promise { + return this.prisma.projectMember + .count({ + where: { + user: { + id: userId + }, + project: { + name: projectName + } + } + }) + .then((count) => count > 0) + } + + async createProject(project: Partial, userId: User['id']) { + const user = await this.prisma.user.findUnique({ + where: { + id: userId + }, + include: { + subscription: true + } + }) + + return await this.prisma.project.create({ + data: { + name: project.name, + description: project.description, + publicKey: project.publicKey, + privateKey: project.privateKey, + storePrivateKey: project.storePrivateKey, + lastUpdatedById: userId, + members: { + create: { + userId: userId, + role: ProjectRole.OWNER, + invitationAccepted: true + } + }, + isFreeTier: + user.subscription === null || user.subscription.isActive === false + } + }) + } + + async updateProject( + projectId: Project['id'], + project: Partial, + userId: User['id'] + ) { + return await this.prisma.project.update({ + where: { + id: projectId + }, + data: { + ...project, + lastUpdatedById: userId + } + }) + } + + async deleteProject(projectId: Project['id']): Promise { + await this.prisma.project.delete({ + where: { + id: projectId + } + }) + return Promise.resolve() + } + + async getProjectByUserIdAndId(userId: User['id'], projectId: Project['id']) { + return await this.prisma.project.findUnique({ + where: { + id: projectId, + members: { + some: { + userId: userId + } + } + }, + include: { + members: { + select: { + user: true, + invitationAccepted: true, + role: true + } + } + } + }) + } + + async getProjectById(projectId: Project['id']) { + return await this.prisma.project.findUnique({ + where: { + id: projectId + }, + include: { + members: { + select: { + user: true, + invitationAccepted: true, + role: true + } + } + } + }) + } + + async getProjectsOfUser( + userId: User['id'], + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise> { + const memberships = await this.prisma.projectMember.findMany({ + skip: (page - 1) * limit, + orderBy: { + project: { + [sort]: order + } + }, + include: { + project: true + }, + take: limit, + where: { + userId: userId, + project: { + OR: [ + { + name: { + contains: search + } + }, + { + description: { + contains: search + } + } + ] + } + } + }) + + return memberships.map((membership) => ({ + ...membership.project, + role: membership.role + })) + } + + async getProjects( + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise { + return await this.prisma.project.findMany({ + skip: (page - 1) * limit, + take: limit, + orderBy: { + [sort]: order + }, + where: { + OR: [ + { + name: { + contains: search + } + }, + { + description: { + contains: search + } + } + ] + } + }) + } + + async getProjectMembershipsOfUser(userId: User['id']) { + return await this.prisma.projectMember.findMany({ + where: { + userId: userId + } + }) + } + + async getMembersOfProject( + projectId: Project['id'], + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise< + { + id: string + role: ProjectRole + user: User + invitationAccepted: boolean + }[] + > { + return await this.prisma.projectMember.findMany({ + skip: (page - 1) * limit, + take: limit, + orderBy: { + project: { + [sort]: order + } + }, + where: { + projectId: projectId, + user: { + OR: [ + { + name: { + contains: search + } + }, + { + email: { + contains: search + } + } + ] + } + }, + include: { + user: true + } + }) + } +} diff --git a/apps/api/src/project/service/project.service.spec.ts b/apps/api/src/project/service/project.service.spec.ts new file mode 100644 index 00000000..d20fa81c --- /dev/null +++ b/apps/api/src/project/service/project.service.spec.ts @@ -0,0 +1,39 @@ +import { Test, TestingModule } from '@nestjs/testing' +import { ProjectService } from './project.service' +import { PROJECT_REPOSITORY } from '../repository/interface.repository' +import { MockProjectRepository } from '../repository/mock.repository' +import { ENVIRONMENT_REPOSITORY } from '../../environment/repository/interface.repository' +import { MockEnvironmentRepository } from '../../environment/repository/mock.repository' +import { USER_REPOSITORY } from '../../user/repository/interface.repository' +import { MockUserRepository } from '../../user/repository/mock.repository' +import { MockResend } from '../../resend/services/mock.resend' +import { RESEND_SERVICE } from '../../resend/services/resend.service.interface' +import { JwtService } from '@nestjs/jwt' +import { ProjectPermission } from '../misc/project.permission' + +describe('ProjectService', () => { + let service: ProjectService + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + ProjectService, + { provide: PROJECT_REPOSITORY, useClass: MockProjectRepository }, + { + provide: ENVIRONMENT_REPOSITORY, + useClass: MockEnvironmentRepository + }, + { provide: USER_REPOSITORY, useClass: MockUserRepository }, + { provide: RESEND_SERVICE, useClass: MockResend }, + ProjectPermission, + JwtService + ] + }).compile() + + service = module.get(ProjectService) + }) + + it('should be defined', () => { + expect(service).toBeDefined() + }) +}) diff --git a/apps/api/src/project/service/project.service.ts b/apps/api/src/project/service/project.service.ts new file mode 100644 index 00000000..38dbf594 --- /dev/null +++ b/apps/api/src/project/service/project.service.ts @@ -0,0 +1,589 @@ +import { + ConflictException, + Inject, + Injectable, + Logger, + NotFoundException +} from '@nestjs/common' +import { Project, ProjectRole, User } from '@prisma/client' +import { + CreateProject, + ProjectMemberDTO +} from '../dto/create.project/create.project' +import { UpdateProject } from '../dto/update.project/update.project' +import { ProjectPermission } from '../misc/project.permission' +import { + IProjectRepository, + PROJECT_REPOSITORY +} from '../repository/interface.repository' +import { + ENVIRONMENT_REPOSITORY, + IEnvironmentRepository +} from '../../environment/repository/interface.repository' +import { + IUserRepository, + USER_REPOSITORY +} from '../../user/repository/interface.repository' +import { + IResendService, + RESEND_SERVICE +} from '../../resend/services/resend.service.interface' +import { CurrentUser } from '../../decorators/user.decorator' +import { JwtService } from '@nestjs/jwt' +import { createKeyPair } from '../../common/create-key-pair' +import { excludeFields } from '../../common/exclude-fields' + +@Injectable() +export class ProjectService { + private readonly log: Logger = new Logger(ProjectService.name) + + constructor( + @Inject(PROJECT_REPOSITORY) + private readonly projectRepository: IProjectRepository, + @Inject(ENVIRONMENT_REPOSITORY) + private readonly environmentRepository: IEnvironmentRepository, + @Inject(USER_REPOSITORY) private readonly userRepository: IUserRepository, + @Inject(RESEND_SERVICE) private readonly resendService: IResendService, + private readonly jwt: JwtService, + private readonly permission: ProjectPermission + ) {} + + async createProject(user: User, dto: CreateProject): Promise { + // Check if project with this name already exists for the user + if (await this.projectRepository.projectExists(dto.name, user.id)) + throw new ConflictException( + `Project with this name **${dto.name}** already exists` + ) + + // Create the public and private key pair + const { publicKey, privateKey } = createKeyPair() + + const data: Partial = { + name: dto.name, + description: dto.description, + storePrivateKey: dto.storePrivateKey, + publicKey + } + + // Check if the private key should be stored + // PLEASE DON'T STORE YOUR PRIVATE KEYS WITH US!! + if (dto.storePrivateKey) { + data.privateKey = privateKey + } + + // Create and return the project + const newProject = await this.projectRepository.createProject(data, user.id) + // Create and assign the environments providedd in the request, if any + // or create a default environment + if (dto.environments && dto.environments.length > 0) { + let defaultEnvironmentExists = false + for (const environment of dto.environments) { + defaultEnvironmentExists = + defaultEnvironmentExists || environment.isDefault + + const env = await this.environmentRepository.createEnvironment( + { + name: environment.name, + description: environment.description, + isDefault: defaultEnvironmentExists ? environment.isDefault : false // We don't want more than one default environment + }, + newProject.id, + user.id + ) + + this.log.debug(`Created environment ${env} for project ${newProject}`) + } + } else { + const defaultEnvironment = this.environmentRepository.createEnvironment( + { + name: 'Default', + description: 'Default environment for the project', + isDefault: true + }, + newProject.id, + user.id + ) + + this.log.debug( + `Created default environment ${defaultEnvironment} for project ${newProject}` + ) + } + + // Add users to the project if any + if (dto.members && dto.members.length > 0) { + this.addMembersToProject(newProject, user, dto.members) + } + + this.log.debug(`Created project ${newProject}`) + // It is important that we log before the private key is set + // in order to not log the private key + newProject.privateKey = privateKey + + return newProject + } + + async updateProject( + user: User, + projectId: Project['id'], + dto: UpdateProject + ): Promise { + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + + // Check if the project exists or not + if (!project) + throw new NotFoundException(`Project with id ${projectId} not found`) + + // Check if project with this name already exists for the user + if ( + dto.name && + (await this.projectRepository.projectExists(dto.name, user.id)) + ) + throw new ConflictException( + `Project with this name **${dto.name}** already exists` + ) + + // Check if the user has the permission to update the project + this.permission.canUpdateProject(user, projectId) + + const data: Partial = { + name: dto.name, + description: dto.description, + updatedAt: new Date(), + storePrivateKey: dto.storePrivateKey, + privateKey: dto.storePrivateKey ? project.privateKey : null + } + + let privateKey = undefined, + publicKey = undefined + // A new key pair can be generated only if: + // - The existing private key is provided + // - Or, the private key was stored + // Only administrators can do this action since it's irreversible! + if (dto.regenerateKeyPair && (dto.privateKey || project.privateKey)) { + // Check if the user has the permission to regenerate the key pair + this.permission.isProjectAdmin(user, projectId) + + const res = createKeyPair() + privateKey = res.privateKey + publicKey = res.publicKey + + data.publicKey = publicKey + // Check if the private key should be stored + data.privateKey = dto.storePrivateKey ? privateKey : null + + // TODO: Re-hash all secrets + } + + // Update and return the project + const updatedProject = await this.projectRepository.updateProject( + projectId, + data, + user.id + ) + + this.log.debug(`Updated project ${updatedProject.id}`) + return { + ...updatedProject, + privateKey + } + } + + async deleteProject(user: User, projectId: Project['id']): Promise { + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + + // Check if the project exists or not + if (!project) + throw new NotFoundException(`Project with id ${projectId} not found`) + + // Check if the user has the permission to delete the project + this.permission.canDeleteProject(user, projectId) + + // Delete the project + await this.projectRepository.deleteProject(projectId) + this.log.debug(`Deleted project ${project}`) + } + + async addUsersToProject( + user: User, + projectId: Project['id'], + members: ProjectMemberDTO[] + ): Promise { + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + + // Check if the project exists or not + if (!project) + throw new NotFoundException(`Project with id ${projectId} not found`) + + // Check if the user has the permission to add users to the project + this.permission.canAddUserToProject(user, projectId) + + // Add users to the project if any + if (members && members.length > 0) { + this.addMembersToProject(project, user, members) + } + } + + async removeUsersFromProject( + user: User, + projectId: Project['id'], + userIds: User['id'][] + ): Promise { + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + + // Check if the project exists or not + if (!project) + throw new NotFoundException(`Project with id ${projectId} not found`) + + // Check if the user has the permission to remove users from the project + this.permission.canRemoveUserFromProject(user, projectId) + + // Check if the user is already a member of the project + if ( + !(await this.projectRepository.memberExistsInProject(projectId, user.id)) + ) + throw new ConflictException( + `User ${user.name} (${user.id}) is not a member of project ${project.name} (${project.id})` + ) + + // Remove users from the project if any + if (userIds && userIds.length > 0) { + for (const userId of userIds) { + if (userId === user.id) + throw new ConflictException( + `You cannot remove yourself from the project. Please delete the project instead.` + ) + + await this.projectRepository.removeMemberFromProject(projectId, userId) + + this.log.debug( + `Removed user ${userId} from project ${project.name} (${project.id})` + ) + } + } + } + + async updateMemberRole( + user: User, + projectId: Project['id'], + userId: User['id'], + role: ProjectRole + ): Promise { + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + + // Check if the project exists or not + if (!project) + throw new NotFoundException(`Project with id ${projectId} not found`) + + // Check if the user has the permission to update the role of the user + this.permission.canUpdateUserPermissionsOfProject(user, projectId) + + // Check if the member in concern is a part of the project or not + if ( + !(await this.projectRepository.memberExistsInProject(projectId, userId)) + ) + throw new NotFoundException( + `User ${userId} is not a member of project ${project.name} (${project.id})` + ) + + // Update the role of the user + await this.projectRepository.updateMembership(projectId, userId, { + role + }) + + this.log.debug( + `Updated role of user ${userId} to ${role} in project ${project.name} (${project.id})` + ) + } + + async isUserMemberOfProject( + user: User, + projectId: Project['id'], + otherUserId: User['id'] + ): Promise { + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + + // Check if the project exists or not + if (!project) + throw new NotFoundException(`Project with id ${projectId} not found`) + + // Check if the user has maintainer or owner role in the project + this.permission.canUpdateUserPermissionsOfProject(user, projectId) + + return await this.projectRepository.memberExistsInProject( + projectId, + otherUserId + ) + } + + async acceptInvitation( + @CurrentUser() user: User, + projectId: Project['id'] + ): Promise { + // Check if the user has a pending invitation to the project + if (!(await this.projectRepository.invitationPending(projectId, user.id))) + throw new ConflictException( + `User ${user.name} (${user.id}) is not invited to project ${projectId}` + ) + + // Update the membership + await this.projectRepository.updateMembership(projectId, user.id, { + invitationAccepted: true + }) + + this.log.debug( + `User ${user.name} (${user.id}) accepted invitation to project ${projectId}` + ) + } + + async cancelInvitation( + @CurrentUser() user: User, + projectId: Project['id'], + inviteeId: User['id'] + ): Promise { + // Check if the user has permission to decline the invitation + this.permission.canRemoveUserFromProject(user, projectId) + + // Check if the user has a pending invitation to the project + if (!(await this.projectRepository.invitationPending(projectId, inviteeId))) + throw new ConflictException( + `User ${user.id} is not invited to project ${projectId}` + ) + + // Delete the membership + await this.projectRepository.deleteMembership(projectId, inviteeId) + + this.log.debug( + `User ${user.name} (${user.id}) declined invitation to project ${projectId}` + ) + } + + async declineInvitation( + @CurrentUser() user: User, + projectId: Project['id'] + ): Promise { + // Check if the user has a pending invitation to the project + if (!(await this.projectRepository.invitationPending(projectId, user.id))) + throw new ConflictException( + `User ${user.name} (${user.id}) is not invited to project ${projectId}` + ) + + // Delete the membership + await this.projectRepository.deleteMembership(projectId, user.id) + + this.log.debug( + `User ${user.name} (${user.id}) declined invitation to project ${projectId}` + ) + } + + async leaveProject( + @CurrentUser() user: User, + projectId: Project['id'] + ): Promise { + // Check if the user is a member of the project + if ( + !(await this.projectRepository.memberExistsInProject(projectId, user.id)) + ) + throw new ConflictException( + `User ${user.name} (${user.id}) is not a member of project ${projectId}` + ) + + // Delete the membership + await this.projectRepository.deleteMembership(projectId, user.id) + + this.log.debug(`User ${user.name} (${user.id}) left project ${projectId}`) + } + + async getProjectByUserAndId( + user: User, + projectId: Project['id'] + ): Promise { + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + + // Check if the project exists or not + if (!project) + throw new NotFoundException(`Project with id ${projectId} not found`) + + //@ts-expect-error We know that project.members is not undefined since it is included in the query + const memberCount = project.members.length + + const data = { + ...project, + members: memberCount + } + return data + } + + async getProjectById( + projectId: Project['id'] + ): Promise { + const project = await this.projectRepository.getProjectById(projectId) + + // Check if the project exists or not + if (!project) + throw new NotFoundException(`Project with id ${projectId} not found`) + + //@ts-expect-error We know that project.members is not undefined since it is included in the query + const memberCount = project.members.length + + const data = { + ...project, + members: memberCount + } + return data + } + + async getProjectsOfUser( + user: User, + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise>> { + return ( + await this.projectRepository.getProjectsOfUser( + user.id, + page, + limit, + sort, + order, + search + ) + ).map((project) => excludeFields(project, 'privateKey', 'publicKey')) + } + + async getProjects( + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise[]> { + return ( + await this.projectRepository.getProjects(page, limit, sort, order, search) + ).map((project) => excludeFields(project, 'privateKey', 'publicKey')) + } + + async getProjectMembers( + user: User, + projectId: Project['id'], + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise< + Array<{ + id: string + role: ProjectRole + user: User + invitationAccepted: boolean + }> + > { + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + + // Check if the project exists or not + if (!project) + throw new NotFoundException(`Project with id ${projectId} not found`) + + return await this.projectRepository.getMembersOfProject( + projectId, + page, + limit, + sort, + order, + search + ) + } + + private async addMembersToProject( + project: Project, + currentUser: User, + members: ProjectMemberDTO[] + ) { + for (const member of members) { + let memberUser: User | null = await this.userRepository.findUserByEmail( + member.email + ) + + // Check if the user is already a member of the project + if ( + memberUser && + (await this.projectRepository.memberExistsInProject( + project.id, + memberUser.id + )) + ) + continue + + if (memberUser) { + this.resendService.projectInvitationMailForRegisteredUser( + member.email, + project.name, + `${process.env.WORKSPACE_FRONTEND_URL}/project/${project.id}/join`, + currentUser.name, + member.role + ) + + this.log.debug( + `Sent project invitation mail to registered user ${memberUser}` + ) + } else { + memberUser = await this.userRepository.createUser(member.email) + + this.log.debug(`Created non-registered user ${memberUser}`) + + this.resendService.projectInvitationMailForNonRegisteredUser( + member.email, + project.name, + `${process.env.WORKSPACE_FRONTEND_URL}/project/${ + project.id + }/join?token=${await await this.jwt.signAsync({ + id: memberUser.id + })}`, + currentUser.name, + member.role + ) + + this.log.debug( + `Sent project invitation mail to non-registered user ${memberUser}` + ) + } + + // Create the project membership + const membership = await this.projectRepository.addMemberToProject( + project.id, + memberUser.id, + member.role + ) + + this.log.debug( + `Added user ${memberUser} as ${member.role} to project ${project.name}. Membership: ${membership.id}` + ) + } + } +} diff --git a/apps/api/src/resend/resend.module.ts b/apps/api/src/resend/resend.module.ts index 30f89eea..f403febe 100644 --- a/apps/api/src/resend/resend.module.ts +++ b/apps/api/src/resend/resend.module.ts @@ -1,16 +1,16 @@ import { Global, Module } from '@nestjs/common' import { MailResend } from './services/mail.resend' import { RESEND_SERVICE } from './services/resend.service.interface' -import { TestResend } from './services/test.resend' +import { MockResend } from './services/mock.resend' const customProvider = { provide: RESEND_SERVICE, - useClass: process.env.NODE_ENV === 'development' ? MailResend : TestResend + useClass: process.env.NODE_ENV === 'test' ? MockResend : MailResend } @Global() @Module({ - providers: [MailResend, TestResend, customProvider], - exports: [customProvider, MailResend, TestResend] + providers: [MailResend, MockResend, customProvider], + exports: [customProvider, MailResend, MockResend] }) export class ResendModule {} diff --git a/apps/api/src/resend/services/mail.resend.ts b/apps/api/src/resend/services/mail.resend.ts index b1be1f2d..0a889580 100644 --- a/apps/api/src/resend/services/mail.resend.ts +++ b/apps/api/src/resend/services/mail.resend.ts @@ -1,6 +1,7 @@ import { Injectable, Logger } from '@nestjs/common' import { Resend } from 'resend' import { IResendService } from './resend.service.interface' +import { $Enums } from '@prisma/client' @Injectable() export class MailResend implements IResendService { @@ -10,6 +11,61 @@ export class MailResend implements IResendService { constructor() { this.resend = new Resend(process.env.RESEND_API_KEY) } + async projectInvitationMailForRegisteredUser( + email: string, + project: string, + actionUrl: string, + invitee: string, + role: $Enums.ProjectRole + ): Promise { + const subject = `You have been invited to a ${project}` + const body = ` + + + Project Invitation + + +

Welcome to keyshade!

+

Hello there!

+

You have been invited to join the project ${project} by ${invitee} as ${role.toString()}.

+

Please click on the link below to accept the invitation.

+

Accept Invitation

+

Thank you for choosing us.

+

Best Regards,

+

keyshade Team

+ + + ` + await this.sendEmail(email, subject, body) + } + + async projectInvitationMailForNonRegisteredUser( + email: string, + project: string, + actionUrl: string, + invitee: string, + role: $Enums.ProjectRole + ): Promise { + const subject = `You have been invited to a ${project}` + const body = ` + + + Project Invitation + + +

Welcome to keyshade!

+

Hello there!

+

You have been invited to join the project ${project} by ${invitee} as ${role.toString()}.

+

Please click on the link below to accept the invitation.

+

Accept Invitation

+

Thank you for choosing us.

+

Best Regards,

+

keyshade Team

+ + + ` + await this.sendEmail(email, subject, body) + } async sendOtp(email: string, otp: string): Promise { const subject = 'Your Login OTP' @@ -34,7 +90,11 @@ export class MailResend implements IResendService { await this.sendEmail(email, subject, body) } - private async sendEmail(email: string, subject: string, body: string): Promise { + private async sendEmail( + email: string, + subject: string, + body: string + ): Promise { const { error } = await this.resend.emails.send({ from: process.env.FROM_EMAIL, to: email, diff --git a/apps/api/src/resend/services/mock.resend.ts b/apps/api/src/resend/services/mock.resend.ts new file mode 100644 index 00000000..09b7ff28 --- /dev/null +++ b/apps/api/src/resend/services/mock.resend.ts @@ -0,0 +1,38 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { Injectable, Logger } from '@nestjs/common' +import { IResendService } from './resend.service.interface' +import { Resend } from 'resend' +import { $Enums } from '@prisma/client' + +@Injectable() +export class MockResend implements IResendService { + private readonly log = new Logger(MockResend.name) + + constructor() { + // Check if resend is working + new Resend('SOME KEY') + } + projectInvitationMailForRegisteredUser( + email: string, + project: string, + actionUrl: string, + invitee: string, + role: $Enums.ProjectRole + ): Promise { + throw new Error('Method not implemented.') + } + + projectInvitationMailForNonRegisteredUser( + email: string, + project: string, + actionUrl: string, + invitee: string, + role: $Enums.ProjectRole + ): Promise { + throw new Error('Method not implemented.') + } + + async sendOtp(email: string, otp: string): Promise { + this.log.log(`OTP for ${email} is ${otp}`) + } +} diff --git a/apps/api/src/resend/services/resend.service.interface.ts b/apps/api/src/resend/services/resend.service.interface.ts index 08f6dcdd..bbdf2031 100644 --- a/apps/api/src/resend/services/resend.service.interface.ts +++ b/apps/api/src/resend/services/resend.service.interface.ts @@ -1,5 +1,23 @@ +import { ProjectRole } from '@prisma/client' + export const RESEND_SERVICE = 'RESEND_SERVICE' export interface IResendService { sendOtp(email: string, otp: string): Promise + + projectInvitationMailForRegisteredUser( + email: string, + project: string, + actionUrl: string, + invitedBy: string, + role: ProjectRole + ): Promise + + projectInvitationMailForNonRegisteredUser( + email: string, + project: string, + actionUrl: string, + invitedBy: string, + role: ProjectRole + ): Promise } diff --git a/apps/api/src/resend/resend.service.spec.ts b/apps/api/src/resend/services/resend.service.spec.ts similarity index 61% rename from apps/api/src/resend/resend.service.spec.ts rename to apps/api/src/resend/services/resend.service.spec.ts index e825495e..c2b8594e 100644 --- a/apps/api/src/resend/resend.service.spec.ts +++ b/apps/api/src/resend/services/resend.service.spec.ts @@ -1,16 +1,16 @@ import { Test, TestingModule } from '@nestjs/testing' -import { IResendService } from './services/resend.service.interface' -import { TestResend } from './services/test.resend' +import { IResendService } from './resend.service.interface' +import { MockResend } from './mock.resend' describe('ResendService', () => { let service: IResendService beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ - providers: [TestResend] + providers: [MockResend] }).compile() - service = module.get(TestResend) + service = module.get(MockResend) }) it('should be defined', () => { diff --git a/apps/api/src/resend/services/test.resend.ts b/apps/api/src/resend/services/test.resend.ts deleted file mode 100644 index bd28be3f..00000000 --- a/apps/api/src/resend/services/test.resend.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common' -import { IResendService } from './resend.service.interface' -import { Resend } from 'resend' - -@Injectable() -export class TestResend implements IResendService { - private readonly log = new Logger(TestResend.name) - - constructor() { - // Check if resend is working - new Resend('SOME KEY') - } - - async sendOtp(email: string, otp: string): Promise { - this.log.log(`OTP for ${email} is ${otp}`) - } -} diff --git a/apps/api/src/user/user.controller.spec.ts b/apps/api/src/user/controller/user.controller.spec.ts similarity index 91% rename from apps/api/src/user/user.controller.spec.ts rename to apps/api/src/user/controller/user.controller.spec.ts index 651dde45..f2e4117a 100644 --- a/apps/api/src/user/user.controller.spec.ts +++ b/apps/api/src/user/controller/user.controller.spec.ts @@ -1,8 +1,9 @@ import { Test, TestingModule } from '@nestjs/testing' import { UserController } from './user.controller' -import { UserService } from './user.service' -import { fakeRepository } from './fake.repository' +import { UserService } from '../service/user.service' import { User } from '@prisma/client' +import { USER_REPOSITORY } from '../repository/interface.repository' +import { MockUserRepository } from '../repository/mock.repository' describe('UserController', () => { let controller: UserController @@ -24,8 +25,8 @@ describe('UserController', () => { providers: [ UserService, { - provide: 'PrismaRepository', - useValue: fakeRepository + provide: USER_REPOSITORY, + useValue: MockUserRepository } ] }).compile() diff --git a/apps/api/src/user/user.controller.ts b/apps/api/src/user/controller/user.controller.ts similarity index 85% rename from apps/api/src/user/user.controller.ts rename to apps/api/src/user/controller/user.controller.ts index c344249d..8dc0d9de 100644 --- a/apps/api/src/user/user.controller.ts +++ b/apps/api/src/user/controller/user.controller.ts @@ -7,11 +7,11 @@ import { Query, UseGuards } from '@nestjs/common' -import { UserService } from './user.service' -import { CurrentUser } from '../decorators/user.decorator' +import { UserService } from '../service/user.service' +import { CurrentUser } from '../../decorators/user.decorator' import { User } from '@prisma/client' -import { UpdateUserDto } from './dto/update.user/update.user' -import { AdminGuard } from '../auth/admin.guard' +import { UpdateUserDto } from '../dto/update.user/update.user' +import { AdminGuard } from '../../auth/guard/admin.guard' @Controller('user') export class UserController { diff --git a/apps/api/src/user/fake.repository.ts b/apps/api/src/user/fake.repository.ts deleted file mode 100644 index 0c975f27..00000000 --- a/apps/api/src/user/fake.repository.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { User } from '@prisma/client' -import { PrismaRepository } from '../prisma/prisma.repository' - -export const fakeRepository: Partial = { - async excludeFields( - key: T, - ...fields: K[] - ): Promise> { - return Object.fromEntries( - Object.entries(key).filter(([k]) => !fields.includes(k as K)) - ) as Partial - }, - - async updateUser(id: string, data: User): Promise { - return Promise.resolve({ - id, - ...data - }) - } -} diff --git a/apps/api/src/user/repository/interface.repository.ts b/apps/api/src/user/repository/interface.repository.ts new file mode 100644 index 00000000..ba0efd58 --- /dev/null +++ b/apps/api/src/user/repository/interface.repository.ts @@ -0,0 +1,61 @@ +import { User } from '@prisma/client' + +export const USER_REPOSITORY = 'USER_REPOSITORY' + +/** + * Interface for the User Repository. + */ +export interface IUserRepository { + /** + * Find a user by email. + * @param {User['email']} email - The email to search for. + * @returns {Promise} - A promise that resolves to the user if found, null otherwise. + */ + findUserByEmail(email: User['email']): Promise + + /** + * Find a user by user ID. + * @param {string} id - The ID of the user to find. + * @returns {Promise} - A promise that resolves to the user if found, null otherwise. + */ + findUserById(id: string): Promise + + /** + * Find all users with optional pagination, sorting, and search. + * @param {number} page - The page number. + * @param {number} limit - The number of items per page. + * @param {string} sort - The field to sort by. + * @param {string} order - The sort order ('asc' or 'desc'). + * @param {string} search - The search string. + * @returns {Promise} - A promise that resolves to the list of users. + */ + findUsers( + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise + + /** + * Create a user with the given email. The onboarding process will aim at updating the user further. + * @param {User['email']} email - The email of the user to create. + * @returns {Promise} - A promise that resolves to the created user. + */ + createUser(email: User['email']): Promise + + /** + * Update an existing user. + * @param {string} id - ID of the user to update. + * @param {Partial} data - The data to update. + * @returns {Promise} - A promise that resolves to the updated user. + */ + updateUser(id: string, data: Partial): Promise + + /** + * Delete a user by ID. + * @param {string} id - The ID of the user to delete. + * @returns {Promise} - A promise that resolves to the deleted user. + */ + deleteUser(id: string): Promise +} diff --git a/apps/api/src/user/repository/mock.repository.ts b/apps/api/src/user/repository/mock.repository.ts new file mode 100644 index 00000000..16a8c8a4 --- /dev/null +++ b/apps/api/src/user/repository/mock.repository.ts @@ -0,0 +1,33 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { User } from '@prisma/client' +import { IUserRepository } from './interface.repository' + +export class MockUserRepository implements IUserRepository { + findUserByEmail(email: string): Promise { + throw new Error('Method not implemented.') + } + findUserById(id: string): Promise { + throw new Error('Method not implemented.') + } + findUsers( + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise { + throw new Error('Method not implemented.') + } + createUser(email: string): Promise { + throw new Error('Method not implemented.') + } + deleteUser(id: string): Promise { + throw new Error('Method not implemented.') + } + async updateUser(id: string, data: User): Promise { + return Promise.resolve({ + id, + ...data + }) + } +} diff --git a/apps/api/src/user/repository/user.repository.ts b/apps/api/src/user/repository/user.repository.ts new file mode 100644 index 00000000..47a6b5f9 --- /dev/null +++ b/apps/api/src/user/repository/user.repository.ts @@ -0,0 +1,80 @@ +import { Injectable } from '@nestjs/common' +import { PrismaService } from '../../prisma/prisma.service' +import { User } from '@prisma/client' +import { IUserRepository } from './interface.repository' + +@Injectable() +export class UserRepository implements IUserRepository { + constructor(private readonly prisma: PrismaService) {} + + async findUserByEmail(email: User['email']): Promise { + return await this.prisma.user.findUnique({ + where: { + email + } + }) + } + + async findUserById(id: string): Promise { + return await this.prisma.user.findUnique({ + where: { + id + } + }) + } + + async findUsers( + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise { + return await this.prisma.user.findMany({ + skip: (page - 1) * limit, + take: limit, + orderBy: { + [sort]: order + }, + where: { + OR: [ + { + name: { + contains: search + } + }, + { + email: { + contains: search + } + } + ] + } + }) + } + + async createUser(email: User['email']): Promise { + return await this.prisma.user.create({ + data: { + email + } + }) + } + + async updateUser(id: string, data: Partial): Promise { + return await this.prisma.user.update({ + where: { + id + }, + data + }) + } + + async deleteUser(id: string): Promise { + return await this.prisma.user.delete({ + where: { + id + } + }) + } +} diff --git a/apps/api/src/user/user.service.spec.ts b/apps/api/src/user/service/user.service.spec.ts similarity index 89% rename from apps/api/src/user/user.service.spec.ts rename to apps/api/src/user/service/user.service.spec.ts index f30596c3..49c8d638 100644 --- a/apps/api/src/user/user.service.spec.ts +++ b/apps/api/src/user/service/user.service.spec.ts @@ -1,7 +1,8 @@ import { Test, TestingModule } from '@nestjs/testing' import { UserService } from './user.service' -import { fakeRepository } from './fake.repository' import { User } from '@prisma/client' +import { USER_REPOSITORY } from '../repository/interface.repository' +import { MockUserRepository } from '../repository/mock.repository' describe('UserService', () => { let service: UserService @@ -20,10 +21,7 @@ describe('UserService', () => { const module: TestingModule = await Test.createTestingModule({ providers: [ UserService, - { - provide: 'PrismaRepository', - useValue: fakeRepository - } + { provide: USER_REPOSITORY, useClass: MockUserRepository } ] }).compile() diff --git a/apps/api/src/user/user.service.ts b/apps/api/src/user/service/user.service.ts similarity index 77% rename from apps/api/src/user/user.service.ts rename to apps/api/src/user/service/user.service.ts index 8227162f..c42ba936 100644 --- a/apps/api/src/user/user.service.ts +++ b/apps/api/src/user/service/user.service.ts @@ -1,18 +1,22 @@ import { Inject, Injectable, Logger } from '@nestjs/common' -import { PrismaRepository } from '../prisma/prisma.repository' -import { UpdateUserDto } from './dto/update.user/update.user' +import { UpdateUserDto } from '../dto/update.user/update.user' import { User } from '@prisma/client' +import { + IUserRepository, + USER_REPOSITORY +} from '../repository/interface.repository' +import { excludeFields } from '../../common/exclude-fields' @Injectable() export class UserService { private readonly log = new Logger(UserService.name) constructor( - @Inject('PrismaRepository') private readonly repository: PrismaRepository + @Inject(USER_REPOSITORY) private readonly repository: IUserRepository ) {} async getSelf(user: User) { - return this.repository.excludeFields(user, 'isActive') + return excludeFields(user, 'isActive') } async updateSelf(user: User, dto: UpdateUserDto, finishOnboarding: boolean) { @@ -22,7 +26,7 @@ export class UserService { isOnboardingFinished: finishOnboarding } this.log.log(`Updating user ${user.id} with data ${dto}`) - return await this.repository.excludeFields( + return excludeFields( await this.repository.updateUser(user.id, data), 'isActive' ) diff --git a/apps/api/src/user/user.module.ts b/apps/api/src/user/user.module.ts index c3bc855a..bd626e2f 100644 --- a/apps/api/src/user/user.module.ts +++ b/apps/api/src/user/user.module.ts @@ -1,15 +1,22 @@ import { Module } from '@nestjs/common' -import { UserController } from './user.controller' -import { UserService } from './user.service' -import { PrismaRepository } from '../prisma/prisma.repository' +import { UserController } from './controller/user.controller' +import { UserService } from './service/user.service' +import { USER_REPOSITORY } from './repository/interface.repository' +import { UserRepository } from './repository/user.repository' @Module({ controllers: [UserController], providers: [ UserService, { - provide: 'PrismaRepository', - useClass: PrismaRepository + provide: USER_REPOSITORY, + useClass: UserRepository + } + ], + exports: [ + { + provide: USER_REPOSITORY, + useClass: UserRepository } ] }) diff --git a/package.json b/package.json index 25dbb348..f29d091e 100644 --- a/package.json +++ b/package.json @@ -94,6 +94,7 @@ "@nestjs/jwt": "^10.2.0", "@nestjs/passport": "^10.0.3", "@nestjs/platform-express": "^10.0.2", + "@nestjs/swagger": "^7.1.17", "@prisma/client": "^5.7.1", "@supabase/supabase-js": "^2.39.1", "axios": "^1.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b0c85fdf..da5eed9f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,7 @@ settings: excludeLinksFromLockfile: false importers: + .: dependencies: '@nestjs/common': @@ -25,6 +26,9 @@ importers: '@nestjs/platform-express': specifier: ^10.0.2 version: 10.3.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0) + '@nestjs/swagger': + specifier: ^7.1.17 + version: 7.1.17(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.14) '@prisma/client': specifier: ^5.7.1 version: 5.7.1(prisma@5.7.1) @@ -49,12 +53,15 @@ importers: express: specifier: ^4.18.2 version: 4.18.2 + husky: + specifier: ^8.0.3 + version: 8.0.3 moment: specifier: ^2.29.4 version: 2.29.4 next: - specifier: 13.4.4 - version: 13.4.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) + specifier: 14.0.4 + version: 14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) passport-jwt: specifier: ^4.0.1 version: 4.0.1 @@ -103,7 +110,7 @@ importers: version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) '@nx/next': specifier: ^17.2.7 - version: 17.2.7(@babel/core@7.23.6)(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(next@13.4.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) + version: 17.2.7(@babel/core@7.23.6)(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(next@14.0.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) '@nx/node': specifier: 17.2.7 version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) @@ -159,8 +166,8 @@ importers: specifier: ~8.48.0 version: 8.48.0 eslint-config-next: - specifier: 13.4.4 - version: 13.4.4(eslint@8.48.0)(typescript@5.2.2) + specifier: 14.0.4 + version: 14.0.4(eslint@8.48.0)(typescript@5.2.2) eslint-config-prettier: specifier: ^9.0.0 version: 9.1.0(eslint@8.48.0) @@ -185,9 +192,6 @@ importers: jest-environment-node: specifier: ^29.4.1 version: 29.7.0 - js:library: - specifier: link:@nx/js:library - version: link:@nx/js:library nx: specifier: 17.2.7 version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101) @@ -228,50 +232,31 @@ importers: packages/sdk-node: {} packages: + /@aashutoshrathi/word-wrap@1.2.6: - resolution: - { - integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} dev: true /@adobe/css-tools@4.3.2: - resolution: - { - integrity: sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw== - } + resolution: {integrity: sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==} dev: true /@alloc/quick-lru@5.2.0: - resolution: - { - integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} dev: true /@ampproject/remapping@2.2.1: - resolution: - { - integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 /@angular-devkit/core@16.0.1: - resolution: - { - integrity: sha512-2uz98IqkKJlgnHbWQ7VeL4pb+snGAZXIama2KXi+k9GsRntdcw+udX8rL3G9SdUGUF+m6+147Y1oRBMHsO/v4w== - } - engines: - { - node: ^16.14.0 || >=18.10.0, - npm: ^6.11.0 || ^7.5.6 || >=8.0.0, - yarn: '>= 1.13.0' - } + resolution: {integrity: sha512-2uz98IqkKJlgnHbWQ7VeL4pb+snGAZXIama2KXi+k9GsRntdcw+udX8rL3G9SdUGUF+m6+147Y1oRBMHsO/v4w==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^3.5.2 peerDependenciesMeta: @@ -286,16 +271,8 @@ packages: dev: true /@angular-devkit/core@16.2.8: - resolution: - { - integrity: sha512-PTGozYvh1Bin5lB15PwcXa26Ayd17bWGLS3H8Rs0s+04mUDvfNofmweaX1LgumWWy3nCUTDuwHxX10M3G0wE2g== - } - engines: - { - node: ^16.14.0 || >=18.10.0, - npm: ^6.11.0 || ^7.5.6 || >=8.0.0, - yarn: '>= 1.13.0' - } + resolution: {integrity: sha512-PTGozYvh1Bin5lB15PwcXa26Ayd17bWGLS3H8Rs0s+04mUDvfNofmweaX1LgumWWy3nCUTDuwHxX10M3G0wE2g==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^3.5.2 peerDependenciesMeta: @@ -311,16 +288,8 @@ packages: dev: true /@angular-devkit/schematics@16.0.1: - resolution: - { - integrity: sha512-A9D0LTYmiqiBa90GKcSuWb7hUouGIbm/AHbJbjL85WLLRbQA2PwKl7P5Mpd6nS/ZC0kfG4VQY3VOaDvb3qpI9g== - } - engines: - { - node: ^16.14.0 || >=18.10.0, - npm: ^6.11.0 || ^7.5.6 || >=8.0.0, - yarn: '>= 1.13.0' - } + resolution: {integrity: sha512-A9D0LTYmiqiBa90GKcSuWb7hUouGIbm/AHbJbjL85WLLRbQA2PwKl7P5Mpd6nS/ZC0kfG4VQY3VOaDvb3qpI9g==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} dependencies: '@angular-devkit/core': 16.0.1 jsonc-parser: 3.2.0 @@ -332,16 +301,8 @@ packages: dev: true /@angular-devkit/schematics@16.2.8: - resolution: - { - integrity: sha512-MBiKZOlR9/YMdflALr7/7w/BGAfo/BGTrlkqsIB6rDWV1dYiCgxI+033HsiNssLS6RQyCFx/e7JA2aBBzu9zEg== - } - engines: - { - node: ^16.14.0 || >=18.10.0, - npm: ^6.11.0 || ^7.5.6 || >=8.0.0, - yarn: '>= 1.13.0' - } + resolution: {integrity: sha512-MBiKZOlR9/YMdflALr7/7w/BGAfo/BGTrlkqsIB6rDWV1dYiCgxI+033HsiNssLS6RQyCFx/e7JA2aBBzu9zEg==} + engines: {node: ^16.14.0 || >=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} dependencies: '@angular-devkit/core': 16.2.8 jsonc-parser: 3.2.0 @@ -353,28 +314,19 @@ packages: dev: true /@babel/code-frame@7.23.5: - resolution: - { - integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.23.4 chalk: 2.4.2 /@babel/compat-data@7.23.5: - resolution: - { - integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} /@babel/core@7.23.6: - resolution: - { - integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} + engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.23.5 @@ -395,11 +347,8 @@ packages: - supports-color /@babel/generator@7.23.6: - resolution: - { - integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 '@jridgewell/gen-mapping': 0.3.3 @@ -407,31 +356,22 @@ packages: jsesc: 2.5.2 /@babel/helper-annotate-as-pure@7.22.5: - resolution: - { - integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 dev: true /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: - resolution: - { - integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 dev: true /@babel/helper-compilation-targets@7.23.6: - resolution: - { - integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} dependencies: '@babel/compat-data': 7.23.5 '@babel/helper-validator-option': 7.23.5 @@ -440,11 +380,8 @@ packages: semver: 6.3.1 /@babel/helper-create-class-features-plugin@7.23.6(@babel/core@7.23.6): - resolution: - { - integrity: sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: @@ -461,11 +398,8 @@ packages: dev: true /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.6): - resolution: - { - integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: @@ -476,10 +410,7 @@ packages: dev: true /@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA== - } + resolution: {integrity: sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: @@ -494,56 +425,38 @@ packages: dev: true /@babel/helper-environment-visitor@7.22.20: - resolution: - { - integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} /@babel/helper-function-name@7.23.0: - resolution: - { - integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 '@babel/types': 7.23.6 /@babel/helper-hoist-variables@7.22.5: - resolution: - { - integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 /@babel/helper-member-expression-to-functions@7.23.0: - resolution: - { - integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 dev: true /@babel/helper-module-imports@7.22.15: - resolution: - { - integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: @@ -555,29 +468,20 @@ packages: '@babel/helper-validator-identifier': 7.22.20 /@babel/helper-optimise-call-expression@7.22.5: - resolution: - { - integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 dev: true /@babel/helper-plugin-utils@7.22.5: - resolution: - { - integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} dev: true /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.6): - resolution: - { - integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: @@ -588,11 +492,8 @@ packages: dev: true /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.6): - resolution: - { - integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: @@ -603,60 +504,39 @@ packages: dev: true /@babel/helper-simple-access@7.22.5: - resolution: - { - integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 /@babel/helper-skip-transparent-expression-wrappers@7.22.5: - resolution: - { - integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 dev: true /@babel/helper-split-export-declaration@7.22.6: - resolution: - { - integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 /@babel/helper-string-parser@7.23.4: - resolution: - { - integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} /@babel/helper-validator-identifier@7.22.20: - resolution: - { - integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} /@babel/helper-validator-option@7.23.5: - resolution: - { - integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} /@babel/helper-wrap-function@7.22.20: - resolution: - { - integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} dependencies: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.22.15 @@ -664,11 +544,8 @@ packages: dev: true /@babel/helpers@7.23.6: - resolution: - { - integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} + engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 '@babel/traverse': 7.23.6 @@ -677,32 +554,23 @@ packages: - supports-color /@babel/highlight@7.23.4: - resolution: - { - integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 /@babel/parser@7.23.6: - resolution: - { - integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + engines: {node: '>=6.0.0'} hasBin: true dependencies: '@babel/types': 7.23.6 /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: @@ -711,11 +579,8 @@ packages: dev: true /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: @@ -726,11 +591,8 @@ packages: dev: true /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: @@ -740,11 +602,8 @@ packages: dev: true /@babel/plugin-proposal-decorators@7.23.6(@babel/core@7.23.6): - resolution: - { - integrity: sha512-D7Ccq9LfkBFnow3azZGJvZYgcfeqAw3I1e5LoTpj6UKIFQilh8yqXsIGcRIqbBdsPWIz+Ze7ZZfggSj62Qp+Fg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-D7Ccq9LfkBFnow3azZGJvZYgcfeqAw3I1e5LoTpj6UKIFQilh8yqXsIGcRIqbBdsPWIz+Ze7ZZfggSj62Qp+Fg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -758,11 +617,8 @@ packages: dev: true /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.6): - resolution: - { - integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -770,10 +626,7 @@ packages: dev: true /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - } + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -782,10 +635,7 @@ packages: dev: true /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - } + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -794,10 +644,7 @@ packages: dev: true /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.6): - resolution: - { - integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - } + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -806,11 +653,8 @@ packages: dev: true /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.6): - resolution: - { - integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -819,11 +663,8 @@ packages: dev: true /@babel/plugin-syntax-decorators@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -832,10 +673,7 @@ packages: dev: true /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - } + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -844,10 +682,7 @@ packages: dev: true /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - } + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -856,11 +691,8 @@ packages: dev: true /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -869,11 +701,8 @@ packages: dev: true /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -882,10 +711,7 @@ packages: dev: true /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - } + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -894,10 +720,7 @@ packages: dev: true /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - } + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -906,11 +729,8 @@ packages: dev: true /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -919,10 +739,7 @@ packages: dev: true /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - } + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -931,10 +748,7 @@ packages: dev: true /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - } + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -943,10 +757,7 @@ packages: dev: true /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - } + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -955,10 +766,7 @@ packages: dev: true /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - } + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -967,10 +775,7 @@ packages: dev: true /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - } + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -979,10 +784,7 @@ packages: dev: true /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - } + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -991,11 +793,8 @@ packages: dev: true /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.6): - resolution: - { - integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1004,11 +803,8 @@ packages: dev: true /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.6): - resolution: - { - integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1017,11 +813,8 @@ packages: dev: true /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1030,11 +823,8 @@ packages: dev: true /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.6): - resolution: - { - integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: @@ -1044,11 +834,8 @@ packages: dev: true /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1057,11 +844,8 @@ packages: dev: true /@babel/plugin-transform-async-generator-functions@7.23.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1073,11 +857,8 @@ packages: dev: true /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1088,11 +869,8 @@ packages: dev: true /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1101,11 +879,8 @@ packages: dev: true /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1114,11 +889,8 @@ packages: dev: true /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1128,11 +900,8 @@ packages: dev: true /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: @@ -1143,11 +912,8 @@ packages: dev: true /@babel/plugin-transform-classes@7.23.5(@babel/core@7.23.6): - resolution: - { - integrity: sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1164,11 +930,8 @@ packages: dev: true /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1178,11 +941,8 @@ packages: dev: true /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1191,11 +951,8 @@ packages: dev: true /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1205,11 +962,8 @@ packages: dev: true /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1218,11 +972,8 @@ packages: dev: true /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1232,11 +983,8 @@ packages: dev: true /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1246,11 +994,8 @@ packages: dev: true /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1260,11 +1005,8 @@ packages: dev: true /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.6): - resolution: - { - integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1274,11 +1016,8 @@ packages: dev: true /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1289,11 +1028,8 @@ packages: dev: true /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1303,11 +1039,8 @@ packages: dev: true /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1316,11 +1049,8 @@ packages: dev: true /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1330,11 +1060,8 @@ packages: dev: true /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1343,11 +1070,8 @@ packages: dev: true /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1357,11 +1081,8 @@ packages: dev: true /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1372,11 +1093,8 @@ packages: dev: true /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1388,11 +1106,8 @@ packages: dev: true /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1402,11 +1117,8 @@ packages: dev: true /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.6): - resolution: - { - integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: @@ -1416,11 +1128,8 @@ packages: dev: true /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1429,11 +1138,8 @@ packages: dev: true /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1443,11 +1149,8 @@ packages: dev: true /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1457,11 +1160,8 @@ packages: dev: true /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1474,11 +1174,8 @@ packages: dev: true /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1488,11 +1185,8 @@ packages: dev: true /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1502,11 +1196,8 @@ packages: dev: true /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1517,11 +1208,8 @@ packages: dev: true /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1530,11 +1218,8 @@ packages: dev: true /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1544,11 +1229,8 @@ packages: dev: true /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1560,11 +1242,8 @@ packages: dev: true /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1573,11 +1252,8 @@ packages: dev: true /@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1586,11 +1262,8 @@ packages: dev: true /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1599,11 +1272,8 @@ packages: dev: true /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.6): - resolution: - { - integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1612,11 +1282,8 @@ packages: dev: true /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1629,11 +1296,8 @@ packages: dev: true /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1643,11 +1307,8 @@ packages: dev: true /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1657,11 +1318,8 @@ packages: dev: true /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1670,11 +1328,8 @@ packages: dev: true /@babel/plugin-transform-runtime@7.23.6(@babel/core@7.23.6): - resolution: - { - integrity: sha512-kF1Zg62aPseQ11orDhFRw+aPG/eynNQtI+TyY+m33qJa2cJ5EEvza2P2BNTIA9E5MyqFABHEyY6CPHwgdy9aNg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-kF1Zg62aPseQ11orDhFRw+aPG/eynNQtI+TyY+m33qJa2cJ5EEvza2P2BNTIA9E5MyqFABHEyY6CPHwgdy9aNg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1690,11 +1345,8 @@ packages: dev: true /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1703,11 +1355,8 @@ packages: dev: true /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1717,11 +1366,8 @@ packages: dev: true /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1730,11 +1376,8 @@ packages: dev: true /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1743,11 +1386,8 @@ packages: dev: true /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1756,11 +1396,8 @@ packages: dev: true /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.6): - resolution: - { - integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1772,11 +1409,8 @@ packages: dev: true /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1785,11 +1419,8 @@ packages: dev: true /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1799,11 +1430,8 @@ packages: dev: true /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1813,11 +1441,8 @@ packages: dev: true /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: @@ -1827,11 +1452,8 @@ packages: dev: true /@babel/preset-env@7.23.6(@babel/core@7.23.6): - resolution: - { - integrity: sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1921,10 +1543,7 @@ packages: dev: true /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.6): - resolution: - { - integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== - } + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: @@ -1935,11 +1554,8 @@ packages: dev: true /@babel/preset-react@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1953,11 +1569,8 @@ packages: dev: true /@babel/preset-typescript@7.23.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1970,39 +1583,27 @@ packages: dev: true /@babel/regjsgen@0.8.0: - resolution: - { - integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - } + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true /@babel/runtime@7.23.6: - resolution: - { - integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} + engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 dev: true /@babel/template@7.22.15: - resolution: - { - integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 '@babel/parser': 7.23.6 '@babel/types': 7.23.6 /@babel/traverse@7.23.6: - resolution: - { - integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} + engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 '@babel/generator': 7.23.6 @@ -2018,39 +1619,27 @@ packages: - supports-color /@babel/types@7.23.6: - resolution: - { - integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.23.4 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 /@bcoe/v8-coverage@0.2.3: - resolution: - { - integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - } + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true /@cspotcode/source-map-support@0.8.1: - resolution: - { - integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 dev: true /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): - resolution: - { - integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: @@ -2059,19 +1648,13 @@ packages: dev: true /@eslint-community/regexpp@4.10.0: - resolution: - { - integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== - } - engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true /@eslint/eslintrc@2.1.4: - resolution: - { - integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 @@ -2087,19 +1670,13 @@ packages: dev: true /@eslint/js@8.48.0: - resolution: - { - integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true /@humanwhocodes/config-array@0.11.13: - resolution: - { - integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== - } - engines: { node: '>=10.10.0' } + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.1 debug: 4.3.4 @@ -2109,26 +1686,17 @@ packages: dev: true /@humanwhocodes/module-importer@1.0.1: - resolution: - { - integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - } - engines: { node: '>=12.22' } + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} dev: true /@humanwhocodes/object-schema@2.0.1: - resolution: - { - integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== - } + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} dev: true /@isaacs/cliui@8.0.2: - resolution: - { - integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} dependencies: string-width: 5.1.2 string-width-cjs: /string-width@4.2.3 @@ -2138,11 +1706,8 @@ packages: wrap-ansi-cjs: /wrap-ansi@7.0.0 /@istanbuljs/load-nyc-config@1.1.0: - resolution: - { - integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} dependencies: camelcase: 5.3.1 find-up: 4.1.0 @@ -2152,19 +1717,13 @@ packages: dev: true /@istanbuljs/schema@0.1.3: - resolution: - { - integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} dev: true /@jest/console@29.7.0: - resolution: - { - integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@types/node': 18.16.9 @@ -2175,11 +1734,8 @@ packages: dev: true /@jest/core@29.7.0(ts-node@10.9.1): - resolution: - { - integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -2221,11 +1777,8 @@ packages: dev: true /@jest/environment@29.7.0: - resolution: - { - integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 @@ -2234,21 +1787,15 @@ packages: dev: true /@jest/expect-utils@29.7.0: - resolution: - { - integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 dev: true /@jest/expect@29.7.0: - resolution: - { - integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: expect: 29.7.0 jest-snapshot: 29.7.0 @@ -2257,11 +1804,8 @@ packages: dev: true /@jest/fake-timers@29.7.0: - resolution: - { - integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 @@ -2272,11 +1816,8 @@ packages: dev: true /@jest/globals@29.7.0: - resolution: - { - integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.7.0 '@jest/expect': 29.7.0 @@ -2287,11 +1828,8 @@ packages: dev: true /@jest/reporters@29.7.0: - resolution: - { - integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -2327,21 +1865,15 @@ packages: dev: true /@jest/schemas@29.6.3: - resolution: - { - integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 dev: true /@jest/source-map@29.6.3: - resolution: - { - integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jridgewell/trace-mapping': 0.3.20 callsites: 3.1.0 @@ -2349,11 +1881,8 @@ packages: dev: true /@jest/test-result@29.7.0: - resolution: - { - integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/console': 29.7.0 '@jest/types': 29.6.3 @@ -2362,11 +1891,8 @@ packages: dev: true /@jest/test-sequencer@29.7.0: - resolution: - { - integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/test-result': 29.7.0 graceful-fs: 4.2.11 @@ -2375,11 +1901,8 @@ packages: dev: true /@jest/transform@29.7.0: - resolution: - { - integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.23.6 '@jest/types': 29.6.3 @@ -2401,11 +1924,8 @@ packages: dev: true /@jest/types@29.6.3: - resolution: - { - integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 @@ -2416,91 +1936,58 @@ packages: dev: true /@jridgewell/gen-mapping@0.3.3: - resolution: - { - integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.20 /@jridgewell/resolve-uri@3.1.1: - resolution: - { - integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} /@jridgewell/set-array@1.1.2: - resolution: - { - integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} /@jridgewell/source-map@0.3.5: - resolution: - { - integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== - } + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 dev: true /@jridgewell/sourcemap-codec@1.4.15: - resolution: - { - integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - } + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} /@jridgewell/trace-mapping@0.3.20: - resolution: - { - integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== - } + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 /@jridgewell/trace-mapping@0.3.9: - resolution: - { - integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - } + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 dev: true /@leichtgewicht/ip-codec@2.0.4: - resolution: - { - integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== - } + resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} dev: true /@ltd/j-toml@1.38.0: - resolution: - { - integrity: sha512-lYtBcmvHustHQtg4X7TXUu1Xa/tbLC3p2wLvgQI+fWVySguVZJF60Snxijw5EiohumxZbR10kWYFFebh1zotiw== - } + resolution: {integrity: sha512-lYtBcmvHustHQtg4X7TXUu1Xa/tbLC3p2wLvgQI+fWVySguVZJF60Snxijw5EiohumxZbR10kWYFFebh1zotiw==} dev: true /@lukeed/csprng@1.1.0: - resolution: - { - integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} + engines: {node: '>=8'} /@monodon/rust@1.3.2(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(typescript@5.2.2): - resolution: - { - integrity: sha512-WcI8y0s8mVngdF/nwvki5EP3LS7YDnIxZyMcU34iVT6flVexcipN2F89e0pLb8ER9yS2AaMyvuDyX1JlqDi9bg== - } + resolution: {integrity: sha512-WcI8y0s8mVngdF/nwvki5EP3LS7YDnIxZyMcU34iVT6flVexcipN2F89e0pLb8ER9yS2AaMyvuDyX1JlqDi9bg==} dependencies: '@ltd/j-toml': 1.38.0 '@nx/devkit': 17.1.2(nx@17.1.2) @@ -2521,10 +2008,7 @@ packages: dev: true /@nestjs/common@10.3.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.14)(rxjs@7.8.1): - resolution: - { - integrity: sha512-DGv34UHsZBxCM3H5QGE2XE/+oLJzz5+714JQjBhjD9VccFlQs3LRxo/epso4l7nJIiNlZkPyIUC8WzfU/5RTsQ== - } + resolution: {integrity: sha512-DGv34UHsZBxCM3H5QGE2XE/+oLJzz5+714JQjBhjD9VccFlQs3LRxo/epso4l7nJIiNlZkPyIUC8WzfU/5RTsQ==} peerDependencies: class-transformer: '*' class-validator: '*' @@ -2545,10 +2029,7 @@ packages: uid: 2.0.2 /@nestjs/config@3.1.1(@nestjs/common@10.3.0)(reflect-metadata@0.1.14): - resolution: - { - integrity: sha512-qu5QlNiJdqQtOsnB6lx4JCXPQ96jkKUsOGd+JXfXwqJqZcOSAq6heNFg0opW4pq4J/VZoNwoo87TNnx9wthnqQ== - } + resolution: {integrity: sha512-qu5QlNiJdqQtOsnB6lx4JCXPQ96jkKUsOGd+JXfXwqJqZcOSAq6heNFg0opW4pq4J/VZoNwoo87TNnx9wthnqQ==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 reflect-metadata: ^0.1.13 @@ -2562,10 +2043,7 @@ packages: dev: false /@nestjs/core@10.3.0(@nestjs/common@10.3.0)(@nestjs/platform-express@10.3.0)(reflect-metadata@0.1.14)(rxjs@7.8.1): - resolution: - { - integrity: sha512-N06P5ncknW/Pm8bj964WvLIZn2gNhHliCBoAO1LeBvNImYkecqKcrmLbY49Fa1rmMfEM3MuBHeDys3edeuYAOA== - } + resolution: {integrity: sha512-N06P5ncknW/Pm8bj964WvLIZn2gNhHliCBoAO1LeBvNImYkecqKcrmLbY49Fa1rmMfEM3MuBHeDys3edeuYAOA==} requiresBuild: true peerDependencies: '@nestjs/common': ^10.0.0 @@ -2596,10 +2074,7 @@ packages: - encoding /@nestjs/jwt@10.2.0(@nestjs/common@10.3.0): - resolution: - { - integrity: sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g== - } + resolution: {integrity: sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 dependencies: @@ -2608,11 +2083,27 @@ packages: jsonwebtoken: 9.0.2 dev: false + /@nestjs/mapped-types@2.0.4(@nestjs/common@10.3.0)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-xl+gUSp0B+ln1VSNoUftlglk8dfpUes3DHGxKZ5knuBxS5g2H/8p9/DSBOYWUfO5f4u9s6ffBPZ71WO+tbe5SA==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + class-transformer: ^0.4.0 || ^0.5.0 + class-validator: ^0.13.0 || ^0.14.0 + reflect-metadata: ^0.1.12 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + '@nestjs/common': 10.3.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.14)(rxjs@7.8.1) + class-transformer: 0.5.1 + class-validator: 0.14.0 + reflect-metadata: 0.1.14 + dev: false + /@nestjs/passport@10.0.3(@nestjs/common@10.3.0)(passport@0.7.0): - resolution: - { - integrity: sha512-znJ9Y4S8ZDVY+j4doWAJ8EuuVO7SkQN3yOBmzxbGaXbvcSwFDAdGJ+OMCg52NdzIO4tQoN4pYKx8W6M0ArfFRQ== - } + resolution: {integrity: sha512-znJ9Y4S8ZDVY+j4doWAJ8EuuVO7SkQN3yOBmzxbGaXbvcSwFDAdGJ+OMCg52NdzIO4tQoN4pYKx8W6M0ArfFRQ==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 passport: ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0 @@ -2622,10 +2113,7 @@ packages: dev: false /@nestjs/platform-express@10.3.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0): - resolution: - { - integrity: sha512-E4hUW48bYv8OHbP9XQg6deefmXb0pDSSuE38SdhA0mJ37zGY7C5EqqBUdlQk4ttfD+OdnbIgJ1zOokT6dd2d7A== - } + resolution: {integrity: sha512-E4hUW48bYv8OHbP9XQg6deefmXb0pDSSuE38SdhA0mJ37zGY7C5EqqBUdlQk4ttfD+OdnbIgJ1zOokT6dd2d7A==} peerDependencies: '@nestjs/common': ^10.0.0 '@nestjs/core': ^10.0.0 @@ -2641,10 +2129,7 @@ packages: - supports-color /@nestjs/schematics@10.0.3(typescript@5.2.2): - resolution: - { - integrity: sha512-2BRujK0GqGQ7j1Zpz+obVfskDnnOeVKt5aXoSaVngKo8Oczy8uYCY+R547TQB+Kf35epdfFER2pVnQrX3/It5A== - } + resolution: {integrity: sha512-2BRujK0GqGQ7j1Zpz+obVfskDnnOeVKt5aXoSaVngKo8Oczy8uYCY+R547TQB+Kf35epdfFER2pVnQrX3/It5A==} peerDependencies: typescript: '>=4.8.2' dependencies: @@ -2659,10 +2144,7 @@ packages: dev: true /@nestjs/schematics@9.2.0(typescript@5.2.2): - resolution: - { - integrity: sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw== - } + resolution: {integrity: sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw==} peerDependencies: typescript: '>=4.3.5' dependencies: @@ -2675,11 +2157,37 @@ packages: - chokidar dev: true + /@nestjs/swagger@7.1.17(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-ASCxBrvMEN2o/8vEEmrIPMNzrr/hVi7QIR4y1oNYvoBNXHuwoF1VSI3+4Rq/3xmwVnVveJxHlBIs2u5xY9VgGQ==} + peerDependencies: + '@fastify/static': ^6.0.0 + '@nestjs/common': ^9.0.0 || ^10.0.0 + '@nestjs/core': ^9.0.0 || ^10.0.0 + class-transformer: '*' + class-validator: '*' + reflect-metadata: ^0.1.12 + peerDependenciesMeta: + '@fastify/static': + optional: true + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + '@nestjs/common': 10.3.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 10.3.0(@nestjs/common@10.3.0)(@nestjs/platform-express@10.3.0)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/mapped-types': 2.0.4(@nestjs/common@10.3.0)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.14) + class-transformer: 0.5.1 + class-validator: 0.14.0 + js-yaml: 4.1.0 + lodash: 4.17.21 + path-to-regexp: 3.2.0 + reflect-metadata: 0.1.14 + swagger-ui-dist: 5.10.3 + dev: false + /@nestjs/testing@10.3.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(@nestjs/platform-express@10.3.0): - resolution: - { - integrity: sha512-8DM+bw1qASCvaEnoHUQhypCOf54+G5R21MeFBMvnSk5DtKaWVZuzDP2GjLeYCpTH19WeP6LrrjHv3rX2LKU02A== - } + resolution: {integrity: sha512-8DM+bw1qASCvaEnoHUQhypCOf54+G5R21MeFBMvnSk5DtKaWVZuzDP2GjLeYCpTH19WeP6LrrjHv3rX2LKU02A==} peerDependencies: '@nestjs/common': ^10.0.0 '@nestjs/core': ^10.0.0 @@ -2697,155 +2205,110 @@ packages: tslib: 2.6.2 dev: true - /@next/env@13.4.4: - resolution: - { - integrity: sha512-q/y7VZj/9YpgzDe64Zi6rY1xPizx80JjlU2BTevlajtaE3w1LqweH1gGgxou2N7hdFosXHjGrI4OUvtFXXhGLg== - } + /@next/env@14.0.4: + resolution: {integrity: sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==} - /@next/eslint-plugin-next@13.4.4: - resolution: - { - integrity: sha512-5jnh7q6I15efnjR/rR+/TGTc9hn53g3JTbEjAMjmeQiExKqEUgIXqrHI5zlTNlNyzCPkBB860/ctxXheZaF2Vw== - } + /@next/eslint-plugin-next@14.0.4: + resolution: {integrity: sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==} dependencies: glob: 7.1.7 dev: true - /@next/swc-darwin-arm64@13.4.4: - resolution: - { - integrity: sha512-xfjgXvp4KalNUKZMHmsFxr1Ug+aGmmO6NWP0uoh4G3WFqP/mJ1xxfww0gMOeMeSq/Jyr5k7DvoZ2Pv+XOITTtw== - } - engines: { node: '>= 10' } + /@next/swc-darwin-arm64@14.0.4: + resolution: {integrity: sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==} + engines: {node: '>= 10'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@next/swc-darwin-x64@13.4.4: - resolution: - { - integrity: sha512-ZY9Ti1hkIwJsxGus3nlubIkvYyB0gNOYxKrfsOrLEqD0I2iCX8D7w8v6QQZ2H+dDl6UT29oeEUdDUNGk4UEpfg== - } - engines: { node: '>= 10' } + /@next/swc-darwin-x64@14.0.4: + resolution: {integrity: sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==} + engines: {node: '>= 10'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@next/swc-linux-arm64-gnu@13.4.4: - resolution: - { - integrity: sha512-+KZnDeMShYkpkqAvGCEDeqYTRADJXc6SY1jWXz+Uo6qWQO/Jd9CoyhTJwRSxvQA16MoYzvILkGaDqirkRNctyA== - } - engines: { node: '>= 10' } + /@next/swc-linux-arm64-gnu@14.0.4: + resolution: {integrity: sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@next/swc-linux-arm64-musl@13.4.4: - resolution: - { - integrity: sha512-evC1twrny2XDT4uOftoubZvW3EG0zs0ZxMwEtu/dDGVRO5n5pT48S8qqEIBGBUZYu/Xx4zzpOkIxx1vpWdE+9A== - } - engines: { node: '>= 10' } + /@next/swc-linux-arm64-musl@14.0.4: + resolution: {integrity: sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@next/swc-linux-x64-gnu@13.4.4: - resolution: - { - integrity: sha512-PX706XcCHr2FfkyhP2lpf+pX/tUvq6/ke7JYnnr0ykNdEMo+sb7cC/o91gnURh4sPYSiZJhsF2gbIqg9rciOHQ== - } - engines: { node: '>= 10' } + /@next/swc-linux-x64-gnu@14.0.4: + resolution: {integrity: sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@next/swc-linux-x64-musl@13.4.4: - resolution: - { - integrity: sha512-TKUUx3Ftd95JlHV6XagEnqpT204Y+IsEa3awaYIjayn0MOGjgKZMZibqarK3B1FsMSPaieJf2FEAcu9z0yT5aA== - } - engines: { node: '>= 10' } + /@next/swc-linux-x64-musl@14.0.4: + resolution: {integrity: sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@next/swc-win32-arm64-msvc@13.4.4: - resolution: - { - integrity: sha512-FP8AadgSq4+HPtim7WBkCMGbhr5vh9FePXiWx9+YOdjwdQocwoCK5ZVC3OW8oh3TWth6iJ0AXJ/yQ1q1cwSZ3A== - } - engines: { node: '>= 10' } + /@next/swc-win32-arm64-msvc@14.0.4: + resolution: {integrity: sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==} + engines: {node: '>= 10'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@next/swc-win32-ia32-msvc@13.4.4: - resolution: - { - integrity: sha512-3WekVmtuA2MCdcAOrgrI+PuFiFURtSyyrN1I3UPtS0ckR2HtLqyqmS334Eulf15g1/bdwMteePdK363X/Y9JMg== - } - engines: { node: '>= 10' } + /@next/swc-win32-ia32-msvc@14.0.4: + resolution: {integrity: sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==} + engines: {node: '>= 10'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@next/swc-win32-x64-msvc@13.4.4: - resolution: - { - integrity: sha512-AHRITu/CrlQ+qzoqQtEMfaTu7GHaQ6bziQln/pVWpOYC1wU+Mq6VQQFlsDtMCnDztPZtppAXdvvbNS7pcfRzlw== - } - engines: { node: '>= 10' } + /@next/swc-win32-x64-msvc@14.0.4: + resolution: {integrity: sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==} + engines: {node: '>= 10'} cpu: [x64] os: [win32] requiresBuild: true optional: true /@nodelib/fs.scandir@2.1.5: - resolution: - { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 dev: true /@nodelib/fs.stat@2.0.5: - resolution: - { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} dev: true /@nodelib/fs.walk@1.2.8: - resolution: - { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.16.0 dev: true /@nrwl/devkit@17.1.2(nx@17.1.2): - resolution: - { - integrity: sha512-INPZk4qts3xNJt8E9fttuVTufXdigPUOvUiAiPJmR2oUGDF8SeOlIYNForbz+XMRvxyIVtf45O32azUsgeZe3Q== - } + resolution: {integrity: sha512-INPZk4qts3xNJt8E9fttuVTufXdigPUOvUiAiPJmR2oUGDF8SeOlIYNForbz+XMRvxyIVtf45O32azUsgeZe3Q==} dependencies: '@nx/devkit': 17.1.2(nx@17.1.2) transitivePeerDependencies: @@ -2853,10 +2316,7 @@ packages: dev: true /@nrwl/devkit@17.2.7(nx@17.2.7): - resolution: - { - integrity: sha512-TISLlIH3xSWre2NLg0aMUBmTvMus+xUicaMeg8DWvwSXJJIMC5QFlB1hjw0VkyLsSraHpd5PWtyDqldHWRfKUQ== - } + resolution: {integrity: sha512-TISLlIH3xSWre2NLg0aMUBmTvMus+xUicaMeg8DWvwSXJJIMC5QFlB1hjw0VkyLsSraHpd5PWtyDqldHWRfKUQ==} dependencies: '@nx/devkit': 17.2.7(nx@17.2.7) transitivePeerDependencies: @@ -2864,10 +2324,7 @@ packages: dev: true /@nrwl/eslint-plugin-nx@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(@typescript-eslint/parser@6.15.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2): - resolution: - { - integrity: sha512-YGH3FL4Dz+a9r2xmZx/SMUFOUl/An6IsZeTqkG5gC+ErejX9nT1KWOXMNh5bkl+jz0b4NvkiVvgQw+W4q2K9sg== - } + resolution: {integrity: sha512-YGH3FL4Dz+a9r2xmZx/SMUFOUl/An6IsZeTqkG5gC+ErejX9nT1KWOXMNh5bkl+jz0b4NvkiVvgQw+W4q2K9sg==} dependencies: '@nx/eslint-plugin': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(@typescript-eslint/parser@6.15.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2) transitivePeerDependencies: @@ -2887,10 +2344,7 @@ packages: dev: true /@nrwl/jest@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): - resolution: - { - integrity: sha512-jYeBQbS9iaybLxmxFv6N9qftRHyRpG3YlDxiHXXmWPX0OrgDjNSY3QCCReM8iqADk2TaxoIw1WDKp4tKzft2xA== - } + resolution: {integrity: sha512-jYeBQbS9iaybLxmxFv6N9qftRHyRpG3YlDxiHXXmWPX0OrgDjNSY3QCCReM8iqADk2TaxoIw1WDKp4tKzft2xA==} dependencies: '@nx/jest': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) transitivePeerDependencies: @@ -2910,10 +2364,7 @@ packages: dev: true /@nrwl/js@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.1.2)(typescript@5.2.2): - resolution: - { - integrity: sha512-70Fx//GJdRt2Uo6ft07Up+eeSK2+jqUnkBhvGLauro91g9SVSgbHlhj+D8l86wccyKz/OULod29WEBkA6Z/t3Q== - } + resolution: {integrity: sha512-70Fx//GJdRt2Uo6ft07Up+eeSK2+jqUnkBhvGLauro91g9SVSgbHlhj+D8l86wccyKz/OULod29WEBkA6Z/t3Q==} dependencies: '@nx/js': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.1.2)(typescript@5.2.2) transitivePeerDependencies: @@ -2930,10 +2381,7 @@ packages: dev: true /@nrwl/js@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): - resolution: - { - integrity: sha512-8AAUmqESQ89Cbark8DlkElINMmDpEJLivan6RPksUUEK6lrZQwVnHf4eWLQzN2/C4i5XkfdxavzluuDPCqHQSQ== - } + resolution: {integrity: sha512-8AAUmqESQ89Cbark8DlkElINMmDpEJLivan6RPksUUEK6lrZQwVnHf4eWLQzN2/C4i5XkfdxavzluuDPCqHQSQ==} dependencies: '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) transitivePeerDependencies: @@ -2950,10 +2398,7 @@ packages: dev: true /@nrwl/nest@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): - resolution: - { - integrity: sha512-BbJMdB5+PKPhrYW78jvNizipcUya2DlXNddwruW6GZ8QAYMRaVg9xFxbX7nMO4rRBBqCqmE00Two3aGiMm5L2Q== - } + resolution: {integrity: sha512-BbJMdB5+PKPhrYW78jvNizipcUya2DlXNddwruW6GZ8QAYMRaVg9xFxbX7nMO4rRBBqCqmE00Two3aGiMm5L2Q==} dependencies: '@nx/nest': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) transitivePeerDependencies: @@ -2975,13 +2420,10 @@ packages: - verdaccio dev: true - /@nrwl/next@17.2.7(@babel/core@7.23.6)(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(next@13.4.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0): - resolution: - { - integrity: sha512-KCaifr5dIoexOAqfyFsQa+A6quPQo9AlBi30e22z4pXIrGx/JjmRMui6aEOCO03AME4aNfw2cRzbMtDBLEEeeg== - } + /@nrwl/next@17.2.7(@babel/core@7.23.6)(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(next@14.0.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0): + resolution: {integrity: sha512-KCaifr5dIoexOAqfyFsQa+A6quPQo9AlBi30e22z4pXIrGx/JjmRMui6aEOCO03AME4aNfw2cRzbMtDBLEEeeg==} dependencies: - '@nx/next': 17.2.7(@babel/core@7.23.6)(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(next@13.4.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) + '@nx/next': 17.2.7(@babel/core@7.23.6)(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(next@14.0.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) transitivePeerDependencies: - '@babel/core' - '@babel/traverse' @@ -3002,10 +2444,7 @@ packages: dev: true /@nrwl/node@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): - resolution: - { - integrity: sha512-tWc9tFnQ2ue0Wv2NcMV3fJD1Kqh/vHeV/81ppeLtoYa5GBXViRJPdUinGlez0qiYegEdUbieWjDp255GIEifTw== - } + resolution: {integrity: sha512-tWc9tFnQ2ue0Wv2NcMV3fJD1Kqh/vHeV/81ppeLtoYa5GBXViRJPdUinGlez0qiYegEdUbieWjDp255GIEifTw==} dependencies: '@nx/node': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) transitivePeerDependencies: @@ -3027,10 +2466,7 @@ packages: dev: true /@nrwl/react@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0): - resolution: - { - integrity: sha512-vRlJWdiPeAgkKe7XUWPceh+vocGfL8CJFmsK2mRy5BWr5rVEJ9l30c9mP7LMxukgi2NPgh1hURvCaZrlErEJ9A== - } + resolution: {integrity: sha512-vRlJWdiPeAgkKe7XUWPceh+vocGfL8CJFmsK2mRy5BWr5rVEJ9l30c9mP7LMxukgi2NPgh1hURvCaZrlErEJ9A==} dependencies: '@nx/react': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) transitivePeerDependencies: @@ -3050,10 +2486,7 @@ packages: dev: true /@nrwl/tao@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101): - resolution: - { - integrity: sha512-tL+dlygeor/kLG5fuK5qaiVFJ4hEtvJ/E+xY9epp20UKCNQSEkrSFiesiXtX6E/PPf4YbOQ4B4itWR2EYCm03Q== - } + resolution: {integrity: sha512-tL+dlygeor/kLG5fuK5qaiVFJ4hEtvJ/E+xY9epp20UKCNQSEkrSFiesiXtX6E/PPf4YbOQ4B4itWR2EYCm03Q==} hasBin: true dependencies: nx: 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101) @@ -3065,10 +2498,7 @@ packages: dev: true /@nrwl/tao@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101): - resolution: - { - integrity: sha512-06YYR1Ndb+nAJaQuvi2J3bX7i2dStQvDHkT+qprUXKxOrggFcPcs+7e2LwNWKDGdCu4r0qFHPlamj7y5d6qM2Q== - } + resolution: {integrity: sha512-06YYR1Ndb+nAJaQuvi2J3bX7i2dStQvDHkT+qprUXKxOrggFcPcs+7e2LwNWKDGdCu4r0qFHPlamj7y5d6qM2Q==} hasBin: true dependencies: nx: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101) @@ -3080,10 +2510,7 @@ packages: dev: true /@nrwl/web@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): - resolution: - { - integrity: sha512-ZlGkmth0qqqQ0WyV6JhdNswSbgOEiDR0G8XJXeoHkDFeThlaU20JyMrqTGNDpQ04d9EpvItvv+bAueg/BLASOw== - } + resolution: {integrity: sha512-ZlGkmth0qqqQ0WyV6JhdNswSbgOEiDR0G8XJXeoHkDFeThlaU20JyMrqTGNDpQ04d9EpvItvv+bAueg/BLASOw==} dependencies: '@nx/web': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) transitivePeerDependencies: @@ -3100,10 +2527,7 @@ packages: dev: true /@nrwl/webpack@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): - resolution: - { - integrity: sha512-Ornp2N/cdUNnht0ojjQrtE3ko+JpvAvWvStdZCVfXULMzy96CpGjPzRBkrX+iNee1GYEJXiHFUZhA+n6NlKB3A== - } + resolution: {integrity: sha512-Ornp2N/cdUNnht0ojjQrtE3ko+JpvAvWvStdZCVfXULMzy96CpGjPzRBkrX+iNee1GYEJXiHFUZhA+n6NlKB3A==} dependencies: '@nx/webpack': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) transitivePeerDependencies: @@ -3135,10 +2559,7 @@ packages: dev: true /@nrwl/workspace@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101): - resolution: - { - integrity: sha512-1MymxYcX5YPrTSuZhQ6V0MhqAFB+8Bm2O9EJHpj4VS9LKIWwDche4DkqypmhbTeAzagr5YIWqaKtPCrkP0tn8w== - } + resolution: {integrity: sha512-1MymxYcX5YPrTSuZhQ6V0MhqAFB+8Bm2O9EJHpj4VS9LKIWwDche4DkqypmhbTeAzagr5YIWqaKtPCrkP0tn8w==} dependencies: '@nx/workspace': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101) transitivePeerDependencies: @@ -3148,10 +2569,7 @@ packages: dev: true /@nrwl/workspace@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101): - resolution: - { - integrity: sha512-qYb2iLliBfS4IwS1aGqeXgyFzdEcXvu+4jxZpROTcg4THJLYni3XhI/Y8gfi4OVzzCadKILMxiOukZKjjIDPlA== - } + resolution: {integrity: sha512-qYb2iLliBfS4IwS1aGqeXgyFzdEcXvu+4jxZpROTcg4THJLYni3XhI/Y8gfi4OVzzCadKILMxiOukZKjjIDPlA==} dependencies: '@nx/workspace': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101) transitivePeerDependencies: @@ -3161,11 +2579,8 @@ packages: dev: true /@nuxtjs/opencollective@0.3.2: - resolution: - { - integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA== - } - engines: { node: '>=8.0.0', npm: '>=5.0.0' } + resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} hasBin: true dependencies: chalk: 4.1.2 @@ -3175,10 +2590,7 @@ packages: - encoding /@nx/devkit@17.1.2(nx@17.1.2): - resolution: - { - integrity: sha512-9Izd9jsa++AaZSSlhi0zkv58k4clzE0kICurx9DjfWN6zXnD08HqJoUYCVVaeYS/SrWlQUbMig8e49BO8ZV5mw== - } + resolution: {integrity: sha512-9Izd9jsa++AaZSSlhi0zkv58k4clzE0kICurx9DjfWN6zXnD08HqJoUYCVVaeYS/SrWlQUbMig8e49BO8ZV5mw==} peerDependencies: nx: '>= 16 <= 18' dependencies: @@ -3193,10 +2605,7 @@ packages: dev: true /@nx/devkit@17.2.7(nx@17.2.7): - resolution: - { - integrity: sha512-RyJyFO5PkNhMrebpv93Bci6pRkrw6guyfX7Esl/5+O6UfN0ytnmaRIrbiVwftTQ6m/T08OWrJQHZMuByP0WWHQ== - } + resolution: {integrity: sha512-RyJyFO5PkNhMrebpv93Bci6pRkrw6guyfX7Esl/5+O6UfN0ytnmaRIrbiVwftTQ6m/T08OWrJQHZMuByP0WWHQ==} peerDependencies: nx: '>= 16 <= 18' dependencies: @@ -3211,10 +2620,7 @@ packages: dev: true /@nx/eslint-plugin@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(@typescript-eslint/parser@6.15.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2): - resolution: - { - integrity: sha512-emKsCaWDOPekCJvuE6QE6CHwSR4RKULdOHotnSaE3J65cgair9djsR8SNUELsqpTSfEmtfB53Z0oZYw4zdeiFQ== - } + resolution: {integrity: sha512-emKsCaWDOPekCJvuE6QE6CHwSR4RKULdOHotnSaE3J65cgair9djsR8SNUELsqpTSfEmtfB53Z0oZYw4zdeiFQ==} peerDependencies: '@typescript-eslint/parser': ^6.9.1 eslint-config-prettier: ^9.0.0 @@ -3249,10 +2655,7 @@ packages: dev: true /@nx/eslint@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7): - resolution: - { - integrity: sha512-A/+J9rcb9FUwGpEc5yFjFWcoF36PfXc6twOGLceFwj+oOG65h7kUnpuJgWK8gTIh911lij3TdmE6MiqSXPu3tQ== - } + resolution: {integrity: sha512-A/+J9rcb9FUwGpEc5yFjFWcoF36PfXc6twOGLceFwj+oOG65h7kUnpuJgWK8gTIh911lij3TdmE6MiqSXPu3tQ==} peerDependencies: eslint: ^8.0.0 js-yaml: 4.1.0 @@ -3281,10 +2684,7 @@ packages: dev: true /@nx/jest@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): - resolution: - { - integrity: sha512-lfUBZ1eCdO2ML2AdPiuXkMcQvuHaevYHB4wrRoUEQp/jui8m8ZQtIaihEy+8nmnSQTSGpCxlILRLpaNQ8gqCoQ== - } + resolution: {integrity: sha512-lfUBZ1eCdO2ML2AdPiuXkMcQvuHaevYHB4wrRoUEQp/jui8m8ZQtIaihEy+8nmnSQTSGpCxlILRLpaNQ8gqCoQ==} dependencies: '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 @@ -3316,10 +2716,7 @@ packages: dev: true /@nx/js@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.1.2)(typescript@5.2.2): - resolution: - { - integrity: sha512-3fPiOEw+iD1Bc+AvfdGgMSCYDYxAGmZ01lHp/RERTyCHroEoMiq8yiTBbET6TPOvKOBMXA+pR2Ux04QA3S4N6Q== - } + resolution: {integrity: sha512-3fPiOEw+iD1Bc+AvfdGgMSCYDYxAGmZ01lHp/RERTyCHroEoMiq8yiTBbET6TPOvKOBMXA+pR2Ux04QA3S4N6Q==} peerDependencies: verdaccio: ^5.0.4 peerDependenciesMeta: @@ -3369,10 +2766,7 @@ packages: dev: true /@nx/js@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): - resolution: - { - integrity: sha512-IghIrp26b9TprxDzJlqH1ZLer+dNmnSDjoT1jviQWcjNY/8wUxe3avd7niMCpfYD6+r7sSGPZ+KVQSRwT3L09g== - } + resolution: {integrity: sha512-IghIrp26b9TprxDzJlqH1ZLer+dNmnSDjoT1jviQWcjNY/8wUxe3avd7niMCpfYD6+r7sSGPZ+KVQSRwT3L09g==} peerDependencies: verdaccio: ^5.0.4 peerDependenciesMeta: @@ -3422,10 +2816,7 @@ packages: dev: true /@nx/linter@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7): - resolution: - { - integrity: sha512-t85R1r+fiEV8wwU6mAD9kKq+YqAxwzBDp3Dx42cX5uokp2jsUKcTHYsibTJ7SVgViJicDLoVDonlJc8SxA0cfQ== - } + resolution: {integrity: sha512-t85R1r+fiEV8wwU6mAD9kKq+YqAxwzBDp3Dx42cX5uokp2jsUKcTHYsibTJ7SVgViJicDLoVDonlJc8SxA0cfQ==} dependencies: '@nx/eslint': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) transitivePeerDependencies: @@ -3443,10 +2834,7 @@ packages: dev: true /@nx/nest@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): - resolution: - { - integrity: sha512-Gjam5Bciq1AUv8VGtL56SeKv2NgZBgojSU85xJAfGbAUoOxgmiS2hbtORlScE0G22BU+mUFy0J7l9tlslq2amQ== - } + resolution: {integrity: sha512-Gjam5Bciq1AUv8VGtL56SeKv2NgZBgojSU85xJAfGbAUoOxgmiS2hbtORlScE0G22BU+mUFy0J7l9tlslq2amQ==} dependencies: '@nestjs/schematics': 9.2.0(typescript@5.2.2) '@nrwl/nest': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) @@ -3475,16 +2863,13 @@ packages: - verdaccio dev: true - /@nx/next@17.2.7(@babel/core@7.23.6)(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(next@13.4.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0): - resolution: - { - integrity: sha512-nQV4EK1kla0gU/UdQMK7GmbSOXFZ/MzaGrTsUadpTjqR5k+Zavy1mD++BukyI7TBIJBPaN0vfu2rTO1WxMhXOw== - } + /@nx/next@17.2.7(@babel/core@7.23.6)(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(next@14.0.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0): + resolution: {integrity: sha512-nQV4EK1kla0gU/UdQMK7GmbSOXFZ/MzaGrTsUadpTjqR5k+Zavy1mD++BukyI7TBIJBPaN0vfu2rTO1WxMhXOw==} peerDependencies: next: '>=13.0.0' dependencies: '@babel/plugin-proposal-decorators': 7.23.6(@babel/core@7.23.6) - '@nrwl/next': 17.2.7(@babel/core@7.23.6)(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(next@13.4.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) + '@nrwl/next': 17.2.7(@babel/core@7.23.6)(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(next@14.0.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) '@nx/devkit': 17.2.7(nx@17.2.7) '@nx/eslint': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) @@ -3496,7 +2881,7 @@ packages: copy-webpack-plugin: 10.2.4(webpack@5.89.0) fs-extra: 11.2.0 ignore: 5.3.0 - next: 13.4.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) + next: 14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) semver: 7.5.3 tslib: 2.6.2 url-loader: 4.1.1(webpack@5.89.0) @@ -3520,10 +2905,7 @@ packages: dev: true /@nx/node@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): - resolution: - { - integrity: sha512-u3mChRmUliQENH4wBYNfqx/0Cfzj6PB9Eaj7lvOwwdquLgUgGgkFXFfYTLjHuIClYhyn2ATR84LZ+NLMaLCvdA== - } + resolution: {integrity: sha512-u3mChRmUliQENH4wBYNfqx/0Cfzj6PB9Eaj7lvOwwdquLgUgGgkFXFfYTLjHuIClYhyn2ATR84LZ+NLMaLCvdA==} dependencies: '@nrwl/node': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) '@nx/devkit': 17.2.7(nx@17.2.7) @@ -3550,11 +2932,8 @@ packages: dev: true /@nx/nx-darwin-arm64@17.1.2: - resolution: - { - integrity: sha512-U8fwkuw0vmDfeRQX9LSMt1XiAXM57fxOiuHlrIBn8hUBvMAugAgSAYd7K9YQjrFf9UFUtQeSHDU9N/c/n63hdg== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-U8fwkuw0vmDfeRQX9LSMt1XiAXM57fxOiuHlrIBn8hUBvMAugAgSAYd7K9YQjrFf9UFUtQeSHDU9N/c/n63hdg==} + engines: {node: '>= 10'} cpu: [arm64] os: [darwin] requiresBuild: true @@ -3562,11 +2941,8 @@ packages: optional: true /@nx/nx-darwin-arm64@17.2.7: - resolution: - { - integrity: sha512-d534L13VUlnSW61rabBl3TTuSpzHxtqy8eF5vsYkFSMonBDjqqNR6+vFfQEa7PW/3Qfeuw4MpmojtamCYLd/TA== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-d534L13VUlnSW61rabBl3TTuSpzHxtqy8eF5vsYkFSMonBDjqqNR6+vFfQEa7PW/3Qfeuw4MpmojtamCYLd/TA==} + engines: {node: '>= 10'} cpu: [arm64] os: [darwin] requiresBuild: true @@ -3574,11 +2950,8 @@ packages: optional: true /@nx/nx-darwin-x64@17.1.2: - resolution: - { - integrity: sha512-QR9Jrm32UK2nLdDRtjFabfCvF5SOQJ2IuYkw6Sxe16xGZU2DS9nQku0TQO3Uy2HV1xSR7vzj7ys5z4eI2k+/mA== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-QR9Jrm32UK2nLdDRtjFabfCvF5SOQJ2IuYkw6Sxe16xGZU2DS9nQku0TQO3Uy2HV1xSR7vzj7ys5z4eI2k+/mA==} + engines: {node: '>= 10'} cpu: [x64] os: [darwin] requiresBuild: true @@ -3586,11 +2959,8 @@ packages: optional: true /@nx/nx-darwin-x64@17.2.7: - resolution: - { - integrity: sha512-K1pHWiSiYTJqk//ZJylvuQcNZR9HUKvOxuh2540+6X9ThQ7kzkC1abXJ4c9wwH3fYDwL29m7glh3AueJvyaXJA== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-K1pHWiSiYTJqk//ZJylvuQcNZR9HUKvOxuh2540+6X9ThQ7kzkC1abXJ4c9wwH3fYDwL29m7glh3AueJvyaXJA==} + engines: {node: '>= 10'} cpu: [x64] os: [darwin] requiresBuild: true @@ -3598,11 +2968,8 @@ packages: optional: true /@nx/nx-freebsd-x64@17.1.2: - resolution: - { - integrity: sha512-6rDuFHJREVg5XpcM5RlE8pHP4bgcbns8sSemF/g75SV4iEkBqxRvSe88oBtF44b7IpX2zdONRDV4qQcRf3DxRg== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-6rDuFHJREVg5XpcM5RlE8pHP4bgcbns8sSemF/g75SV4iEkBqxRvSe88oBtF44b7IpX2zdONRDV4qQcRf3DxRg==} + engines: {node: '>= 10'} cpu: [x64] os: [freebsd] requiresBuild: true @@ -3610,11 +2977,8 @@ packages: optional: true /@nx/nx-freebsd-x64@17.2.7: - resolution: - { - integrity: sha512-VyouszZjV7Ew4qNrNfG8JApm7/UcreRuC+W/YZ2ORGzM0KUnB/D4rXGmeTp1Ff+L5WUhoomwEnaBkbgqu+2wjA== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-VyouszZjV7Ew4qNrNfG8JApm7/UcreRuC+W/YZ2ORGzM0KUnB/D4rXGmeTp1Ff+L5WUhoomwEnaBkbgqu+2wjA==} + engines: {node: '>= 10'} cpu: [x64] os: [freebsd] requiresBuild: true @@ -3622,11 +2986,8 @@ packages: optional: true /@nx/nx-linux-arm-gnueabihf@17.1.2: - resolution: - { - integrity: sha512-4FwqUX7NxVfJ0v7frBKNbjENz6pvp3slDfoG2/WmnAj5a6TCu7magwlg1qLQaHYJ1m/i8u7RrG0Uz4SYHWzkVw== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-4FwqUX7NxVfJ0v7frBKNbjENz6pvp3slDfoG2/WmnAj5a6TCu7magwlg1qLQaHYJ1m/i8u7RrG0Uz4SYHWzkVw==} + engines: {node: '>= 10'} cpu: [arm] os: [linux] requiresBuild: true @@ -3634,11 +2995,8 @@ packages: optional: true /@nx/nx-linux-arm-gnueabihf@17.2.7: - resolution: - { - integrity: sha512-YfwW8NYi33Li1Q7BDUusNlfpJNWfXOnHt6JKvQGc8fy8StmWq13zNnU0IxPQyqCDK5Ymx95IoctFrMLpeXPAwQ== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-YfwW8NYi33Li1Q7BDUusNlfpJNWfXOnHt6JKvQGc8fy8StmWq13zNnU0IxPQyqCDK5Ymx95IoctFrMLpeXPAwQ==} + engines: {node: '>= 10'} cpu: [arm] os: [linux] requiresBuild: true @@ -3646,11 +3004,8 @@ packages: optional: true /@nx/nx-linux-arm64-gnu@17.1.2: - resolution: - { - integrity: sha512-r6UATY0dVdxwpVJPf/f/KfRkFpMP06wC6HcfNMGbTBTKiKtsdYF42bWoSkDgtgP2bOx9FDH+Hwu3U/Rtj44FIA== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-r6UATY0dVdxwpVJPf/f/KfRkFpMP06wC6HcfNMGbTBTKiKtsdYF42bWoSkDgtgP2bOx9FDH+Hwu3U/Rtj44FIA==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true @@ -3658,11 +3013,8 @@ packages: optional: true /@nx/nx-linux-arm64-gnu@17.2.7: - resolution: - { - integrity: sha512-oJyEf2q+5jj6ci6WEXvRUoU2Sj0Mo+J/0NwtPY6sRIhqgPwpmxc6Pja4zmB16iQ5ap48zstB9glfJ6qtr3iU0Q== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-oJyEf2q+5jj6ci6WEXvRUoU2Sj0Mo+J/0NwtPY6sRIhqgPwpmxc6Pja4zmB16iQ5ap48zstB9glfJ6qtr3iU0Q==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true @@ -3670,11 +3022,8 @@ packages: optional: true /@nx/nx-linux-arm64-musl@17.1.2: - resolution: - { - integrity: sha512-MXGYY/KCzQhbj5UKwnRO2/GhByOkRlI+EeH1Mazam8wZ1BiBfcVWZoOUybIlxxes1o4cAnkZwB527tCmwrHvGw== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-MXGYY/KCzQhbj5UKwnRO2/GhByOkRlI+EeH1Mazam8wZ1BiBfcVWZoOUybIlxxes1o4cAnkZwB527tCmwrHvGw==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true @@ -3682,11 +3031,8 @@ packages: optional: true /@nx/nx-linux-arm64-musl@17.2.7: - resolution: - { - integrity: sha512-IzsCJgJCM61THBMDghz+EY5aCeO7wBWOWq2sTDek1ve67qZtu/E/Z5qBp93JRAvNYgQT7KbC40WhaXuE/NpWEA== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-IzsCJgJCM61THBMDghz+EY5aCeO7wBWOWq2sTDek1ve67qZtu/E/Z5qBp93JRAvNYgQT7KbC40WhaXuE/NpWEA==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true @@ -3694,11 +3040,8 @@ packages: optional: true /@nx/nx-linux-x64-gnu@17.1.2: - resolution: - { - integrity: sha512-3cC131hJ3VhuxjzzBlwIdVp46onykOo78EmnURNdLxcWOpmcKgYXn7OnVwjrglYi+JL7D0vABGKKUpt1cs6/rA== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-3cC131hJ3VhuxjzzBlwIdVp46onykOo78EmnURNdLxcWOpmcKgYXn7OnVwjrglYi+JL7D0vABGKKUpt1cs6/rA==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true @@ -3706,11 +3049,8 @@ packages: optional: true /@nx/nx-linux-x64-gnu@17.2.7: - resolution: - { - integrity: sha512-CCY3o9zs9ypsT40GyRGQMfl63Wy3Spu21ULcteoLTI2/py601XIdhv6zclzBqeYIWPVxMoGGlIq10m2rdEeAOA== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-CCY3o9zs9ypsT40GyRGQMfl63Wy3Spu21ULcteoLTI2/py601XIdhv6zclzBqeYIWPVxMoGGlIq10m2rdEeAOA==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true @@ -3718,11 +3058,8 @@ packages: optional: true /@nx/nx-linux-x64-musl@17.1.2: - resolution: - { - integrity: sha512-1UrR87ByhE0zSXt0C+RNT5ZiAsctOSWZwPYQAGolz8K70BxomDeRVtIaRog5KK5SHlEd1ILvgsmrhovjLjrJNw== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-1UrR87ByhE0zSXt0C+RNT5ZiAsctOSWZwPYQAGolz8K70BxomDeRVtIaRog5KK5SHlEd1ILvgsmrhovjLjrJNw==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true @@ -3730,11 +3067,8 @@ packages: optional: true /@nx/nx-linux-x64-musl@17.2.7: - resolution: - { - integrity: sha512-hBzrXpoDg1OJBl/Ja5nU3oYTBk/FW6J+jTJM1zmXJOJ8Z7NR26I783qlVLQFDYkMynwGBE3kI4a7L87p633BRw== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-hBzrXpoDg1OJBl/Ja5nU3oYTBk/FW6J+jTJM1zmXJOJ8Z7NR26I783qlVLQFDYkMynwGBE3kI4a7L87p633BRw==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true @@ -3742,11 +3076,8 @@ packages: optional: true /@nx/nx-win32-arm64-msvc@17.1.2: - resolution: - { - integrity: sha512-2M7FfzfPGAN7tCUWZilPGNk/RbbGcA00MKOA4MDqMwJtLobW8KqfMedilRNTEuyNibejOHwvGzA9T/Ac/ahHgA== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-2M7FfzfPGAN7tCUWZilPGNk/RbbGcA00MKOA4MDqMwJtLobW8KqfMedilRNTEuyNibejOHwvGzA9T/Ac/ahHgA==} + engines: {node: '>= 10'} cpu: [arm64] os: [win32] requiresBuild: true @@ -3754,11 +3085,8 @@ packages: optional: true /@nx/nx-win32-arm64-msvc@17.2.7: - resolution: - { - integrity: sha512-imLrVpeBXQwcYDUujBZRE9YG9lqM7F8Qw51JxmCxG2twijlVeofGWw0uVHM16t95cuizt/Ho+bTfNukV7Oza3g== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-imLrVpeBXQwcYDUujBZRE9YG9lqM7F8Qw51JxmCxG2twijlVeofGWw0uVHM16t95cuizt/Ho+bTfNukV7Oza3g==} + engines: {node: '>= 10'} cpu: [arm64] os: [win32] requiresBuild: true @@ -3766,11 +3094,8 @@ packages: optional: true /@nx/nx-win32-x64-msvc@17.1.2: - resolution: - { - integrity: sha512-oxKCKunuo4wRusMlNu7PlhBijhtNy7eBZPAWyqUsdfnb+CjY2QncjCguW3fnsG9gHQFCa+y0b1WkSkvJ5G1DiQ== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-oxKCKunuo4wRusMlNu7PlhBijhtNy7eBZPAWyqUsdfnb+CjY2QncjCguW3fnsG9gHQFCa+y0b1WkSkvJ5G1DiQ==} + engines: {node: '>= 10'} cpu: [x64] os: [win32] requiresBuild: true @@ -3778,11 +3103,8 @@ packages: optional: true /@nx/nx-win32-x64-msvc@17.2.7: - resolution: - { - integrity: sha512-MBQxvEE1sz47prRCid+axKwb6zqcbR4XBKj+l9V5NA7/0Rw5PHjrEfWv5Lr5TckYAdIZ1PVgPHlril6hX89evw== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-MBQxvEE1sz47prRCid+axKwb6zqcbR4XBKj+l9V5NA7/0Rw5PHjrEfWv5Lr5TckYAdIZ1PVgPHlril6hX89evw==} + engines: {node: '>= 10'} cpu: [x64] os: [win32] requiresBuild: true @@ -3790,10 +3112,7 @@ packages: optional: true /@nx/react@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0): - resolution: - { - integrity: sha512-c+63PC0bxUmSmRgix90gpdwIwHaeQ6gyS9L1lpVouzLrqxUK4pnJkC9LzQNRc3thXSheFDYmAvXuSe2Y1WN0HA== - } + resolution: {integrity: sha512-c+63PC0bxUmSmRgix90gpdwIwHaeQ6gyS9L1lpVouzLrqxUK4pnJkC9LzQNRc3thXSheFDYmAvXuSe2Y1WN0HA==} dependencies: '@nrwl/react': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) '@nx/devkit': 17.2.7(nx@17.2.7) @@ -3823,10 +3142,7 @@ packages: dev: true /@nx/web@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): - resolution: - { - integrity: sha512-UhLD84jCLNwY/dC32v3Q5gAkBuj1p6a0h1ihcXqZdMUYbV6sjJhDAnjnfHyPJWgjaoI5t6VNSTJOaMZM9EMfzg== - } + resolution: {integrity: sha512-UhLD84jCLNwY/dC32v3Q5gAkBuj1p6a0h1ihcXqZdMUYbV6sjJhDAnjnfHyPJWgjaoI5t6VNSTJOaMZM9EMfzg==} dependencies: '@nrwl/web': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) '@nx/devkit': 17.2.7(nx@17.2.7) @@ -3849,10 +3165,7 @@ packages: dev: true /@nx/webpack@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): - resolution: - { - integrity: sha512-OUxUNxgzEyrn36V4+1T3oQNKyukJphgb+DBNc6NWA9dEWf3U48KdfJuALeKoRZ5J+/lS95L8b/2ygSyu0EdpLw== - } + resolution: {integrity: sha512-OUxUNxgzEyrn36V4+1T3oQNKyukJphgb+DBNc6NWA9dEWf3U48KdfJuALeKoRZ5J+/lS95L8b/2ygSyu0EdpLw==} dependencies: '@babel/core': 7.23.6 '@nrwl/webpack': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) @@ -3919,10 +3232,7 @@ packages: dev: true /@nx/workspace@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101): - resolution: - { - integrity: sha512-lmdfWyspRgk7XewKU/5bjr6PieShJemDJpaSI+/H5utOeT8QeXVmNj+DDizig4eobwK0b6OXb0Vgnc7osbgjlw== - } + resolution: {integrity: sha512-lmdfWyspRgk7XewKU/5bjr6PieShJemDJpaSI+/H5utOeT8QeXVmNj+DDizig4eobwK0b6OXb0Vgnc7osbgjlw==} dependencies: '@nrwl/workspace': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101) '@nx/devkit': 17.1.2(nx@17.1.2) @@ -3938,10 +3248,7 @@ packages: dev: true /@nx/workspace@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101): - resolution: - { - integrity: sha512-/4xrFEc6Hjl9KaB+e/RSaQ/6vHWGP1MmhdX+TRvdjNIMbZ6kdDixBjusJ6WoHXm3KhP95cSt2xmwCQNUzVn+vw== - } + resolution: {integrity: sha512-/4xrFEc6Hjl9KaB+e/RSaQ/6vHWGP1MmhdX+TRvdjNIMbZ6kdDixBjusJ6WoHXm3KhP95cSt2xmwCQNUzVn+vw==} dependencies: '@nrwl/workspace': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101) '@nx/devkit': 17.2.7(nx@17.2.7) @@ -3957,17 +3264,11 @@ packages: dev: true /@one-ini/wasm@0.1.1: - resolution: - { - integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw== - } + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} dev: false /@phenomnomnominal/tsquery@5.0.1(typescript@5.2.2): - resolution: - { - integrity: sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA== - } + resolution: {integrity: sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==} peerDependencies: typescript: ^3 || ^4 || ^5 dependencies: @@ -3976,20 +3277,14 @@ packages: dev: true /@pkgjs/parseargs@0.11.0: - resolution: - { - integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} requiresBuild: true optional: true /@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.10.0)(webpack@5.89.0): - resolution: - { - integrity: sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ== - } - engines: { node: '>= 10.13' } + resolution: {integrity: sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==} + engines: {node: '>= 10.13'} peerDependencies: '@types/webpack': 4.x || 5.x react-refresh: '>=0.10.0 <1.0.0' @@ -4027,11 +3322,8 @@ packages: dev: true /@prisma/client@5.7.1(prisma@5.7.1): - resolution: - { - integrity: sha512-TUSa4nUcC4nf/e7X3jyO1pEd6XcI/TLRCA0KjkA46RDIpxUaRsBYEOqITwXRW2c0bMFyKcCRXrH4f7h4q9oOlg== - } - engines: { node: '>=16.13' } + resolution: {integrity: sha512-TUSa4nUcC4nf/e7X3jyO1pEd6XcI/TLRCA0KjkA46RDIpxUaRsBYEOqITwXRW2c0bMFyKcCRXrH4f7h4q9oOlg==} + engines: {node: '>=16.13'} requiresBuild: true peerDependencies: prisma: '*' @@ -4043,22 +3335,13 @@ packages: dev: false /@prisma/debug@5.7.1: - resolution: - { - integrity: sha512-yrVSO/YZOxdeIxcBtZ5BaNqUfPrZkNsAKQIQg36cJKMxj/VYK3Vk5jMKkI+gQLl0KReo1YvX8GWKfV788SELjw== - } + resolution: {integrity: sha512-yrVSO/YZOxdeIxcBtZ5BaNqUfPrZkNsAKQIQg36cJKMxj/VYK3Vk5jMKkI+gQLl0KReo1YvX8GWKfV788SELjw==} /@prisma/engines-version@5.7.1-1.0ca5ccbcfa6bdc81c003cf549abe4269f59c41e5: - resolution: - { - integrity: sha512-dIR5IQK/ZxEoWRBDOHF87r1Jy+m2ih3Joi4vzJRP+FOj5yxCwS2pS5SBR3TWoVnEK1zxtLI/3N7BjHyGF84fgw== - } + resolution: {integrity: sha512-dIR5IQK/ZxEoWRBDOHF87r1Jy+m2ih3Joi4vzJRP+FOj5yxCwS2pS5SBR3TWoVnEK1zxtLI/3N7BjHyGF84fgw==} /@prisma/engines@5.7.1: - resolution: - { - integrity: sha512-R+Pqbra8tpLP2cvyiUpx+SIKglav3nTCpA+rn6826CThviQ8yvbNG0s8jNpo51vS9FuZO3pOkARqG062vKX7uA== - } + resolution: {integrity: sha512-R+Pqbra8tpLP2cvyiUpx+SIKglav3nTCpA+rn6826CThviQ8yvbNG0s8jNpo51vS9FuZO3pOkARqG062vKX7uA==} requiresBuild: true dependencies: '@prisma/debug': 5.7.1 @@ -4067,29 +3350,20 @@ packages: '@prisma/get-platform': 5.7.1 /@prisma/fetch-engine@5.7.1: - resolution: - { - integrity: sha512-9ELauIEBkIaEUpMIYPRlh5QELfoC6pyHolHVQgbNxglaINikZ9w9X7r1TIePAcm05pCNp2XPY1ObQIJW5nYfBQ== - } + resolution: {integrity: sha512-9ELauIEBkIaEUpMIYPRlh5QELfoC6pyHolHVQgbNxglaINikZ9w9X7r1TIePAcm05pCNp2XPY1ObQIJW5nYfBQ==} dependencies: '@prisma/debug': 5.7.1 '@prisma/engines-version': 5.7.1-1.0ca5ccbcfa6bdc81c003cf549abe4269f59c41e5 '@prisma/get-platform': 5.7.1 /@prisma/get-platform@5.7.1: - resolution: - { - integrity: sha512-eDlswr3a1m5z9D/55Iyt/nZqS5UpD+DZ9MooBB3hvrcPhDQrcf9m4Tl7buy4mvAtrubQ626ECtb8c6L/f7rGSQ== - } + resolution: {integrity: sha512-eDlswr3a1m5z9D/55Iyt/nZqS5UpD+DZ9MooBB3hvrcPhDQrcf9m4Tl7buy4mvAtrubQ626ECtb8c6L/f7rGSQ==} dependencies: '@prisma/debug': 5.7.1 /@react-email/render@0.0.9: - resolution: - { - integrity: sha512-nrim7wiACnaXsGtL7GF6jp3Qmml8J6vAjAH88jkC8lIbfNZaCyuPQHANjyYIXlvQeAbsWADQJFZgOHUqFqjh/A== - } - engines: { node: '>=18.0.0' } + resolution: {integrity: sha512-nrim7wiACnaXsGtL7GF6jp3Qmml8J6vAjAH88jkC8lIbfNZaCyuPQHANjyYIXlvQeAbsWADQJFZgOHUqFqjh/A==} + engines: {node: '>=18.0.0'} dependencies: html-to-text: 9.0.5 pretty: 2.0.0 @@ -4098,89 +3372,59 @@ packages: dev: false /@rushstack/eslint-patch@1.6.1: - resolution: - { - integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw== - } + resolution: {integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==} dev: true /@selderee/plugin-htmlparser2@0.11.0: - resolution: - { - integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ== - } + resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} dependencies: domhandler: 5.0.3 selderee: 0.11.0 dev: false /@sinclair/typebox@0.27.8: - resolution: - { - integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - } + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true /@sinonjs/commons@3.0.0: - resolution: - { - integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== - } + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} dependencies: type-detect: 4.0.8 dev: true /@sinonjs/fake-timers@10.3.0: - resolution: - { - integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - } + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} dependencies: '@sinonjs/commons': 3.0.0 dev: true /@supabase/functions-js@2.1.5: - resolution: - { - integrity: sha512-BNzC5XhCzzCaggJ8s53DP+WeHHGT/NfTsx2wUSSGKR2/ikLFQTBCDzMvGz/PxYMqRko/LwncQtKXGOYp1PkPaw== - } + resolution: {integrity: sha512-BNzC5XhCzzCaggJ8s53DP+WeHHGT/NfTsx2wUSSGKR2/ikLFQTBCDzMvGz/PxYMqRko/LwncQtKXGOYp1PkPaw==} dependencies: '@supabase/node-fetch': 2.6.15 dev: false /@supabase/gotrue-js@2.62.0: - resolution: - { - integrity: sha512-4eBuZNXGOk7ewqJuHPYMnk8clCtEx6Hfnu6yHLjZlx7w18TqcojcTRUBZagErtpgwwdfzUwKbquexhbrpH/ysw== - } + resolution: {integrity: sha512-4eBuZNXGOk7ewqJuHPYMnk8clCtEx6Hfnu6yHLjZlx7w18TqcojcTRUBZagErtpgwwdfzUwKbquexhbrpH/ysw==} dependencies: '@supabase/node-fetch': 2.6.15 dev: false /@supabase/node-fetch@2.6.15: - resolution: - { - integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ== - } - engines: { node: 4.x || >=6.0.0 } + resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==} + engines: {node: 4.x || >=6.0.0} dependencies: whatwg-url: 5.0.0 dev: false /@supabase/postgrest-js@1.9.0: - resolution: - { - integrity: sha512-axP6cU69jDrLbfihJKQ6vU27tklD0gzb9idkMN363MtTXeJVt5DQNT3JnJ58JVNBdL74hgm26rAsFNvHk+tnSw== - } + resolution: {integrity: sha512-axP6cU69jDrLbfihJKQ6vU27tklD0gzb9idkMN363MtTXeJVt5DQNT3JnJ58JVNBdL74hgm26rAsFNvHk+tnSw==} dependencies: '@supabase/node-fetch': 2.6.15 dev: false /@supabase/realtime-js@2.9.1: - resolution: - { - integrity: sha512-OxmY2qj+y6+KI4ifTL92j5+WYP+u5/PdThlYxVb0GMcMiMHfA7yIku9yaQNC5/oRdIvhuRpTMG/8/R40eB+8pA== - } + resolution: {integrity: sha512-OxmY2qj+y6+KI4ifTL92j5+WYP+u5/PdThlYxVb0GMcMiMHfA7yIku9yaQNC5/oRdIvhuRpTMG/8/R40eB+8pA==} dependencies: '@supabase/node-fetch': 2.6.15 '@types/phoenix': 1.6.4 @@ -4191,19 +3435,13 @@ packages: dev: false /@supabase/storage-js@2.5.5: - resolution: - { - integrity: sha512-OpLoDRjFwClwc2cjTJZG8XviTiQH4Ik8sCiMK5v7et0MDu2QlXjCAW3ljxJB5+z/KazdMOTnySi+hysxWUPu3w== - } + resolution: {integrity: sha512-OpLoDRjFwClwc2cjTJZG8XviTiQH4Ik8sCiMK5v7et0MDu2QlXjCAW3ljxJB5+z/KazdMOTnySi+hysxWUPu3w==} dependencies: '@supabase/node-fetch': 2.6.15 dev: false /@supabase/supabase-js@2.39.1: - resolution: - { - integrity: sha512-nz0aQPButJWjChX+bLXqvhHutfiOuiJwzibyJs0uhFrQ6JRDZZsl9+nX2jgyox2v2V+e4PEwbn/eaEOFVUr8iA== - } + resolution: {integrity: sha512-nz0aQPButJWjChX+bLXqvhHutfiOuiJwzibyJs0uhFrQ6JRDZZsl9+nX2jgyox2v2V+e4PEwbn/eaEOFVUr8iA==} dependencies: '@supabase/functions-js': 2.1.5 '@supabase/gotrue-js': 2.62.0 @@ -4217,11 +3455,8 @@ packages: dev: false /@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.23.6): - resolution: - { - integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} + engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -4229,11 +3464,8 @@ packages: dev: true /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.6): - resolution: - { - integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} + engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -4241,11 +3473,8 @@ packages: dev: true /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.6): - resolution: - { - integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} + engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -4253,11 +3482,8 @@ packages: dev: true /@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.23.6): - resolution: - { - integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} + engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -4265,11 +3491,8 @@ packages: dev: true /@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.23.6): - resolution: - { - integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} + engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -4277,11 +3500,8 @@ packages: dev: true /@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.23.6): - resolution: - { - integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} + engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -4289,11 +3509,8 @@ packages: dev: true /@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.23.6): - resolution: - { - integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} + engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -4301,11 +3518,8 @@ packages: dev: true /@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.23.6): - resolution: - { - integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} + engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -4313,11 +3527,8 @@ packages: dev: true /@svgr/babel-preset@8.1.0(@babel/core@7.23.6): - resolution: - { - integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} + engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -4333,11 +3544,8 @@ packages: dev: true /@svgr/core@8.1.0(typescript@5.2.2): - resolution: - { - integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} + engines: {node: '>=14'} dependencies: '@babel/core': 7.23.6 '@svgr/babel-preset': 8.1.0(@babel/core@7.23.6) @@ -4350,22 +3558,16 @@ packages: dev: true /@svgr/hast-util-to-babel-ast@8.0.0: - resolution: - { - integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} + engines: {node: '>=14'} dependencies: '@babel/types': 7.23.6 entities: 4.5.0 dev: true /@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0): - resolution: - { - integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} + engines: {node: '>=14'} peerDependencies: '@svgr/core': '*' dependencies: @@ -4379,11 +3581,8 @@ packages: dev: true /@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0)(typescript@5.2.2): - resolution: - { - integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} + engines: {node: '>=14'} peerDependencies: '@svgr/core': '*' dependencies: @@ -4396,11 +3595,8 @@ packages: dev: true /@svgr/webpack@8.1.0(typescript@5.2.2): - resolution: - { - integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} + engines: {node: '>=14'} dependencies: '@babel/core': 7.23.6 '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.23.6) @@ -4416,11 +3612,8 @@ packages: dev: true /@swc-node/core@1.10.6(@swc/core@1.3.101): - resolution: - { - integrity: sha512-lDIi/rPosmKIknWzvs2/Fi9zWRtbkx8OJ9pQaevhsoGzJSal8Pd315k1W5AIrnknfdAB4HqRN12fk6AhqnrEEw== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-lDIi/rPosmKIknWzvs2/Fi9zWRtbkx8OJ9pQaevhsoGzJSal8Pd315k1W5AIrnknfdAB4HqRN12fk6AhqnrEEw==} + engines: {node: '>= 10'} peerDependencies: '@swc/core': '>= 1.3' dependencies: @@ -4428,10 +3621,7 @@ packages: dev: true /@swc-node/register@1.6.8(@swc/core@1.3.101)(typescript@5.2.2): - resolution: - { - integrity: sha512-74ijy7J9CWr1Z88yO+ykXphV29giCrSpANQPQRooE0bObpkTO1g4RzQovIfbIaniBiGDDVsYwDoQ3FIrCE8HcQ== - } + resolution: {integrity: sha512-74ijy7J9CWr1Z88yO+ykXphV29giCrSpANQPQRooE0bObpkTO1g4RzQovIfbIaniBiGDDVsYwDoQ3FIrCE8HcQ==} peerDependencies: '@swc/core': '>= 1.3' typescript: '>= 4.3' @@ -4449,21 +3639,15 @@ packages: dev: true /@swc-node/sourcemap-support@0.3.0: - resolution: - { - integrity: sha512-gqBJSmJMWomZFxlppaKea7NeAqFrDrrS0RMt24No92M3nJWcyI9YKGEQKl+EyJqZ5gh6w1s0cTklMHMzRwA1NA== - } + resolution: {integrity: sha512-gqBJSmJMWomZFxlppaKea7NeAqFrDrrS0RMt24No92M3nJWcyI9YKGEQKl+EyJqZ5gh6w1s0cTklMHMzRwA1NA==} dependencies: source-map-support: 0.5.21 tslib: 2.6.2 dev: true /@swc/core-darwin-arm64@1.3.101: - resolution: - { - integrity: sha512-mNFK+uHNPRXSnfTOG34zJOeMl2waM4hF4a2NY7dkMXrPqw9CoJn4MwTXJcyMiSz1/BnNjjTCHF3Yhj0jPxmkzQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-mNFK+uHNPRXSnfTOG34zJOeMl2waM4hF4a2NY7dkMXrPqw9CoJn4MwTXJcyMiSz1/BnNjjTCHF3Yhj0jPxmkzQ==} + engines: {node: '>=10'} cpu: [arm64] os: [darwin] requiresBuild: true @@ -4471,11 +3655,8 @@ packages: optional: true /@swc/core-darwin-x64@1.3.101: - resolution: - { - integrity: sha512-B085j8XOx73Fg15KsHvzYWG262bRweGr3JooO1aW5ec5pYbz5Ew9VS5JKYS03w2UBSxf2maWdbPz2UFAxg0whw== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-B085j8XOx73Fg15KsHvzYWG262bRweGr3JooO1aW5ec5pYbz5Ew9VS5JKYS03w2UBSxf2maWdbPz2UFAxg0whw==} + engines: {node: '>=10'} cpu: [x64] os: [darwin] requiresBuild: true @@ -4483,11 +3664,8 @@ packages: optional: true /@swc/core-linux-arm-gnueabihf@1.3.101: - resolution: - { - integrity: sha512-9xLKRb6zSzRGPqdz52Hy5GuB1lSjmLqa0lST6MTFads3apmx4Vgs8Y5NuGhx/h2I8QM4jXdLbpqQlifpzTlSSw== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-9xLKRb6zSzRGPqdz52Hy5GuB1lSjmLqa0lST6MTFads3apmx4Vgs8Y5NuGhx/h2I8QM4jXdLbpqQlifpzTlSSw==} + engines: {node: '>=10'} cpu: [arm] os: [linux] requiresBuild: true @@ -4495,11 +3673,8 @@ packages: optional: true /@swc/core-linux-arm64-gnu@1.3.101: - resolution: - { - integrity: sha512-oE+r1lo7g/vs96Weh2R5l971dt+ZLuhaUX+n3BfDdPxNHfObXgKMjO7E+QS5RbGjv/AwiPCxQmbdCp/xN5ICJA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-oE+r1lo7g/vs96Weh2R5l971dt+ZLuhaUX+n3BfDdPxNHfObXgKMjO7E+QS5RbGjv/AwiPCxQmbdCp/xN5ICJA==} + engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true @@ -4507,11 +3682,8 @@ packages: optional: true /@swc/core-linux-arm64-musl@1.3.101: - resolution: - { - integrity: sha512-OGjYG3H4BMOTnJWJyBIovCez6KiHF30zMIu4+lGJTCrxRI2fAjGLml3PEXj8tC3FMcud7U2WUn6TdG0/te2k6g== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-OGjYG3H4BMOTnJWJyBIovCez6KiHF30zMIu4+lGJTCrxRI2fAjGLml3PEXj8tC3FMcud7U2WUn6TdG0/te2k6g==} + engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true @@ -4519,11 +3691,8 @@ packages: optional: true /@swc/core-linux-x64-gnu@1.3.101: - resolution: - { - integrity: sha512-/kBMcoF12PRO/lwa8Z7w4YyiKDcXQEiLvM+S3G9EvkoKYGgkkz4Q6PSNhF5rwg/E3+Hq5/9D2R+6nrkF287ihg== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-/kBMcoF12PRO/lwa8Z7w4YyiKDcXQEiLvM+S3G9EvkoKYGgkkz4Q6PSNhF5rwg/E3+Hq5/9D2R+6nrkF287ihg==} + engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true @@ -4531,11 +3700,8 @@ packages: optional: true /@swc/core-linux-x64-musl@1.3.101: - resolution: - { - integrity: sha512-kDN8lm4Eew0u1p+h1l3JzoeGgZPQ05qDE0czngnjmfpsH2sOZxVj1hdiCwS5lArpy7ktaLu5JdRnx70MkUzhXw== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-kDN8lm4Eew0u1p+h1l3JzoeGgZPQ05qDE0czngnjmfpsH2sOZxVj1hdiCwS5lArpy7ktaLu5JdRnx70MkUzhXw==} + engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true @@ -4543,11 +3709,8 @@ packages: optional: true /@swc/core-win32-arm64-msvc@1.3.101: - resolution: - { - integrity: sha512-9Wn8TTLWwJKw63K/S+jjrZb9yoJfJwCE2RV5vPCCWmlMf3U1AXj5XuWOLUX+Rp2sGKau7wZKsvywhheWm+qndQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-9Wn8TTLWwJKw63K/S+jjrZb9yoJfJwCE2RV5vPCCWmlMf3U1AXj5XuWOLUX+Rp2sGKau7wZKsvywhheWm+qndQ==} + engines: {node: '>=10'} cpu: [arm64] os: [win32] requiresBuild: true @@ -4555,11 +3718,8 @@ packages: optional: true /@swc/core-win32-ia32-msvc@1.3.101: - resolution: - { - integrity: sha512-onO5KvICRVlu2xmr4//V2je9O2XgS1SGKpbX206KmmjcJhXN5EYLSxW9qgg+kgV5mip+sKTHTAu7IkzkAtElYA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-onO5KvICRVlu2xmr4//V2je9O2XgS1SGKpbX206KmmjcJhXN5EYLSxW9qgg+kgV5mip+sKTHTAu7IkzkAtElYA==} + engines: {node: '>=10'} cpu: [ia32] os: [win32] requiresBuild: true @@ -4567,11 +3727,8 @@ packages: optional: true /@swc/core-win32-x64-msvc@1.3.101: - resolution: - { - integrity: sha512-T3GeJtNQV00YmiVw/88/nxJ/H43CJvFnpvBHCVn17xbahiVUOPOduh3rc9LgAkKiNt/aV8vU3OJR+6PhfMR7UQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-T3GeJtNQV00YmiVw/88/nxJ/H43CJvFnpvBHCVn17xbahiVUOPOduh3rc9LgAkKiNt/aV8vU3OJR+6PhfMR7UQ==} + engines: {node: '>=10'} cpu: [x64] os: [win32] requiresBuild: true @@ -4579,11 +3736,8 @@ packages: optional: true /@swc/core@1.3.101: - resolution: - { - integrity: sha512-w5aQ9qYsd/IYmXADAnkXPGDMTqkQalIi+kfFf/MHRKTpaOL7DHjMXwPp/n8hJ0qNjRvchzmPtOqtPBiER50d8A== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-w5aQ9qYsd/IYmXADAnkXPGDMTqkQalIi+kfFf/MHRKTpaOL7DHjMXwPp/n8hJ0qNjRvchzmPtOqtPBiER50d8A==} + engines: {node: '>=10'} requiresBuild: true peerDependencies: '@swc/helpers': ^0.5.0 @@ -4607,33 +3761,21 @@ packages: dev: true /@swc/counter@0.1.2: - resolution: - { - integrity: sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw== - } + resolution: {integrity: sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==} dev: true - /@swc/helpers@0.5.1: - resolution: - { - integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg== - } + /@swc/helpers@0.5.2: + resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} dependencies: tslib: 2.6.2 /@swc/types@0.1.5: - resolution: - { - integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw== - } + resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} dev: true /@testing-library/dom@9.3.3: - resolution: - { - integrity: sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==} + engines: {node: '>=14'} dependencies: '@babel/code-frame': 7.23.5 '@babel/runtime': 7.23.6 @@ -4646,11 +3788,8 @@ packages: dev: true /@testing-library/react@14.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: - { - integrity: sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==} + engines: {node: '>=14'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 @@ -4663,61 +3802,37 @@ packages: dev: true /@tootallnate/once@2.0.0: - resolution: - { - integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} dev: true /@trysound/sax@0.2.0: - resolution: - { - integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - } - engines: { node: '>=10.13.0' } + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} dev: true /@tsconfig/node10@1.0.9: - resolution: - { - integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== - } + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} dev: true /@tsconfig/node12@1.0.11: - resolution: - { - integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - } + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} dev: true /@tsconfig/node14@1.0.3: - resolution: - { - integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - } + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} dev: true /@tsconfig/node16@1.0.4: - resolution: - { - integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - } + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} dev: true /@types/aria-query@5.0.4: - resolution: - { - integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== - } + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} dev: true /@types/babel__core@7.20.5: - resolution: - { - integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - } + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: '@babel/parser': 7.23.6 '@babel/types': 7.23.6 @@ -4727,103 +3842,70 @@ packages: dev: true /@types/babel__generator@7.6.8: - resolution: - { - integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== - } + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: '@babel/types': 7.23.6 dev: true /@types/babel__template@7.4.4: - resolution: - { - integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - } + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: '@babel/parser': 7.23.6 '@babel/types': 7.23.6 dev: true /@types/babel__traverse@7.20.4: - resolution: - { - integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA== - } + resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} dependencies: '@babel/types': 7.23.6 dev: true /@types/body-parser@1.19.5: - resolution: - { - integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== - } + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 '@types/node': 18.16.9 dev: true /@types/bonjour@3.5.13: - resolution: - { - integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== - } + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} dependencies: '@types/node': 18.16.9 dev: true /@types/connect-history-api-fallback@1.5.4: - resolution: - { - integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== - } + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} dependencies: '@types/express-serve-static-core': 4.17.41 '@types/node': 18.16.9 dev: true /@types/connect@3.4.38: - resolution: - { - integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== - } + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: '@types/node': 18.16.9 dev: true /@types/eslint-scope@3.7.7: - resolution: - { - integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - } + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} dependencies: '@types/eslint': 8.56.0 '@types/estree': 1.0.5 dev: true /@types/eslint@8.56.0: - resolution: - { - integrity: sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg== - } + resolution: {integrity: sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==} dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 dev: true /@types/estree@1.0.5: - resolution: - { - integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - } + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true /@types/express-serve-static-core@4.17.41: - resolution: - { - integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA== - } + resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} dependencies: '@types/node': 18.16.9 '@types/qs': 6.9.11 @@ -4832,10 +3914,7 @@ packages: dev: true /@types/express@4.17.21: - resolution: - { - integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== - } + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 4.17.41 @@ -4844,70 +3923,46 @@ packages: dev: true /@types/graceful-fs@4.1.9: - resolution: - { - integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== - } + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: '@types/node': 18.16.9 dev: true /@types/http-errors@2.0.4: - resolution: - { - integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== - } + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} dev: true /@types/http-proxy@1.17.14: - resolution: - { - integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== - } + resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} dependencies: '@types/node': 18.16.9 dev: true /@types/istanbul-lib-coverage@2.0.6: - resolution: - { - integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - } + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} dev: true /@types/istanbul-lib-report@3.0.3: - resolution: - { - integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - } + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} dependencies: '@types/istanbul-lib-coverage': 2.0.6 dev: true /@types/istanbul-reports@3.0.4: - resolution: - { - integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - } + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} dependencies: '@types/istanbul-lib-report': 3.0.3 dev: true /@types/jest@29.5.11: - resolution: - { - integrity: sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ== - } + resolution: {integrity: sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==} dependencies: expect: 29.7.0 pretty-format: 29.7.0 dev: true /@types/jsdom@20.0.1: - resolution: - { - integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ== - } + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: '@types/node': 18.16.9 '@types/tough-cookie': 4.0.5 @@ -4915,68 +3970,41 @@ packages: dev: true /@types/json-schema@7.0.15: - resolution: - { - integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - } + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} dev: true /@types/json5@0.0.29: - resolution: - { - integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - } + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true /@types/jsonwebtoken@9.0.5: - resolution: - { - integrity: sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA== - } + resolution: {integrity: sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==} dependencies: '@types/node': 18.16.9 /@types/mime@1.3.5: - resolution: - { - integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== - } + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} dev: true /@types/mime@3.0.4: - resolution: - { - integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== - } + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} dev: true /@types/node-forge@1.3.10: - resolution: - { - integrity: sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw== - } + resolution: {integrity: sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==} dependencies: '@types/node': 18.16.9 dev: true /@types/node@18.16.9: - resolution: - { - integrity: sha512-IeB32oIV4oGArLrd7znD2rkHQ6EDCM+2Sr76dJnrHwv9OHBTTM6nuDLK9bmikXzPa0ZlWMWtRGo/Uw4mrzQedA== - } + resolution: {integrity: sha512-IeB32oIV4oGArLrd7znD2rkHQ6EDCM+2Sr76dJnrHwv9OHBTTM6nuDLK9bmikXzPa0ZlWMWtRGo/Uw4mrzQedA==} /@types/parse-json@4.0.2: - resolution: - { - integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== - } + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} dev: true /@types/passport-jwt@3.0.13: - resolution: - { - integrity: sha512-fjHaC6Bv8EpMMqzTnHP32SXlZGaNfBPC/Po5dmRGYi2Ky7ljXPbGnOy+SxZqa6iZvFgVhoJ1915Re3m93zmcfA== - } + resolution: {integrity: sha512-fjHaC6Bv8EpMMqzTnHP32SXlZGaNfBPC/Po5dmRGYi2Ky7ljXPbGnOy+SxZqa6iZvFgVhoJ1915Re3m93zmcfA==} dependencies: '@types/express': 4.17.21 '@types/jsonwebtoken': 9.0.5 @@ -4984,66 +4012,42 @@ packages: dev: true /@types/passport-strategy@0.2.38: - resolution: - { - integrity: sha512-GC6eMqqojOooq993Tmnmp7AUTbbQSgilyvpCYQjT+H6JfG/g6RGc7nXEniZlp0zyKJ0WUdOiZWLBZft9Yug1uA== - } + resolution: {integrity: sha512-GC6eMqqojOooq993Tmnmp7AUTbbQSgilyvpCYQjT+H6JfG/g6RGc7nXEniZlp0zyKJ0WUdOiZWLBZft9Yug1uA==} dependencies: '@types/express': 4.17.21 '@types/passport': 1.0.16 dev: true /@types/passport@1.0.16: - resolution: - { - integrity: sha512-FD0qD5hbPWQzaM0wHUnJ/T0BBCJBxCeemtnCwc/ThhTg3x9jfrAcRUmj5Dopza+MfFS9acTe3wk7rcVnRIp/0A== - } + resolution: {integrity: sha512-FD0qD5hbPWQzaM0wHUnJ/T0BBCJBxCeemtnCwc/ThhTg3x9jfrAcRUmj5Dopza+MfFS9acTe3wk7rcVnRIp/0A==} dependencies: '@types/express': 4.17.21 dev: true /@types/phoenix@1.6.4: - resolution: - { - integrity: sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA== - } + resolution: {integrity: sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA==} dev: false /@types/prop-types@15.7.11: - resolution: - { - integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== - } + resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} dev: true /@types/qs@6.9.11: - resolution: - { - integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ== - } + resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} dev: true /@types/range-parser@1.2.7: - resolution: - { - integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== - } + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} dev: true /@types/react-dom@18.2.14: - resolution: - { - integrity: sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ== - } + resolution: {integrity: sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==} dependencies: '@types/react': 18.2.33 dev: true /@types/react@18.2.33: - resolution: - { - integrity: sha512-v+I7S+hu3PIBoVkKGpSYYpiBT1ijqEzWpzQD62/jm4K74hPpSP7FF9BnKG6+fg2+62weJYkkBWDJlZt5JO/9hg== - } + resolution: {integrity: sha512-v+I7S+hu3PIBoVkKGpSYYpiBT1ijqEzWpzQD62/jm4K74hPpSP7FF9BnKG6+fg2+62weJYkkBWDJlZt5JO/9hg==} dependencies: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 @@ -5051,50 +4055,32 @@ packages: dev: true /@types/retry@0.12.0: - resolution: - { - integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - } + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} dev: true /@types/scheduler@0.16.8: - resolution: - { - integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== - } + resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} dev: true /@types/semver@7.5.6: - resolution: - { - integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== - } + resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} dev: true /@types/send@0.17.4: - resolution: - { - integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== - } + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 '@types/node': 18.16.9 dev: true /@types/serve-index@1.9.4: - resolution: - { - integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== - } + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} dependencies: '@types/express': 4.17.21 dev: true /@types/serve-static@1.15.5: - resolution: - { - integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== - } + resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 @@ -5102,65 +4088,41 @@ packages: dev: true /@types/sockjs@0.3.36: - resolution: - { - integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== - } + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: '@types/node': 18.16.9 dev: true /@types/stack-utils@2.0.3: - resolution: - { - integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - } + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} dev: true /@types/tough-cookie@4.0.5: - resolution: - { - integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== - } + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} dev: true /@types/validator@13.11.7: - resolution: - { - integrity: sha512-q0JomTsJ2I5Mv7dhHhQLGjMvX0JJm5dyZ1DXQySIUzU1UlwzB8bt+R6+LODUbz0UDIOvEzGc28tk27gBJw2N8Q== - } + resolution: {integrity: sha512-q0JomTsJ2I5Mv7dhHhQLGjMvX0JJm5dyZ1DXQySIUzU1UlwzB8bt+R6+LODUbz0UDIOvEzGc28tk27gBJw2N8Q==} /@types/ws@8.5.10: - resolution: - { - integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== - } + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: '@types/node': 18.16.9 dev: true /@types/yargs-parser@21.0.3: - resolution: - { - integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - } + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} dev: true /@types/yargs@17.0.32: - resolution: - { - integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== - } + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} dependencies: '@types/yargs-parser': 21.0.3 dev: true /@typescript-eslint/eslint-plugin@6.15.0(@typescript-eslint/parser@6.15.0)(eslint@8.48.0)(typescript@5.2.2): - resolution: - { - integrity: sha512-j5qoikQqPccq9QoBAupOP+CBu8BaJ8BLjaXSioDISeTZkVO3ig7oSIKh3H+rEpee7xCXtWwSB4KIL5l6hWZzpg== - } - engines: { node: ^16.0.0 || >=18.0.0 } + resolution: {integrity: sha512-j5qoikQqPccq9QoBAupOP+CBu8BaJ8BLjaXSioDISeTZkVO3ig7oSIKh3H+rEpee7xCXtWwSB4KIL5l6hWZzpg==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha eslint: ^7.0.0 || ^8.0.0 @@ -5187,35 +4149,9 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@5.62.0(eslint@8.48.0)(typescript@5.2.2): - resolution: - { - integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - debug: 4.3.4 - eslint: 8.48.0 - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/parser@6.15.0(eslint@8.48.0)(typescript@5.2.2): - resolution: - { - integrity: sha512-MkgKNnsjC6QwcMdlNAel24jjkEO/0hQaMDLqP4S9zq5HBAUJNQB6y+3DwLjX7b3l2b37eNAxMPLwb3/kh8VKdA== - } - engines: { node: ^16.0.0 || >=18.0.0 } + resolution: {integrity: sha512-MkgKNnsjC6QwcMdlNAel24jjkEO/0hQaMDLqP4S9zq5HBAUJNQB6y+3DwLjX7b3l2b37eNAxMPLwb3/kh8VKdA==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 typescript: '*' @@ -5234,34 +4170,17 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@5.62.0: - resolution: - { - integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - dev: true - /@typescript-eslint/scope-manager@6.15.0: - resolution: - { - integrity: sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg== - } - engines: { node: ^16.0.0 || >=18.0.0 } + resolution: {integrity: sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: '@typescript-eslint/types': 6.15.0 '@typescript-eslint/visitor-keys': 6.15.0 dev: true /@typescript-eslint/type-utils@6.15.0(eslint@8.48.0)(typescript@5.2.2): - resolution: - { - integrity: sha512-CnmHKTfX6450Bo49hPg2OkIm/D/TVYV7jO1MCfPYGwf6x3GO0VU8YMO5AYMn+u3X05lRRxA4fWCz87GFQV6yVQ== - } - engines: { node: ^16.0.0 || >=18.0.0 } + resolution: {integrity: sha512-CnmHKTfX6450Bo49hPg2OkIm/D/TVYV7jO1MCfPYGwf6x3GO0VU8YMO5AYMn+u3X05lRRxA4fWCz87GFQV6yVQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 typescript: '*' @@ -5279,52 +4198,14 @@ packages: - supports-color dev: true - /@typescript-eslint/types@5.62.0: - resolution: - { - integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dev: true - /@typescript-eslint/types@6.15.0: - resolution: - { - integrity: sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ== - } - engines: { node: ^16.0.0 || >=18.0.0 } - dev: true - - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2): - resolution: - { - integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - tsutils: 3.21.0(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color + resolution: {integrity: sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ==} + engines: {node: ^16.0.0 || >=18.0.0} dev: true /@typescript-eslint/typescript-estree@6.15.0(typescript@5.2.2): - resolution: - { - integrity: sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew== - } - engines: { node: ^16.0.0 || >=18.0.0 } + resolution: {integrity: sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -5344,11 +4225,8 @@ packages: dev: true /@typescript-eslint/utils@6.15.0(eslint@8.48.0)(typescript@5.2.2): - resolution: - { - integrity: sha512-eF82p0Wrrlt8fQSRL0bGXzK5nWPRV2dYQZdajcfzOD9+cQz9O7ugifrJxclB+xVOvWvagXfqS4Es7vpLP4augw== - } - engines: { node: ^16.0.0 || >=18.0.0 } + resolution: {integrity: sha512-eF82p0Wrrlt8fQSRL0bGXzK5nWPRV2dYQZdajcfzOD9+cQz9O7ugifrJxclB+xVOvWvagXfqS4Es7vpLP4augw==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: @@ -5365,64 +4243,35 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@5.62.0: - resolution: - { - integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dependencies: - '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.3 - dev: true - /@typescript-eslint/visitor-keys@6.15.0: - resolution: - { - integrity: sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w== - } - engines: { node: ^16.0.0 || >=18.0.0 } + resolution: {integrity: sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: '@typescript-eslint/types': 6.15.0 eslint-visitor-keys: 3.4.3 dev: true /@webassemblyjs/ast@1.11.6: - resolution: - { - integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== - } + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 dev: true /@webassemblyjs/floating-point-hex-parser@1.11.6: - resolution: - { - integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== - } + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} dev: true /@webassemblyjs/helper-api-error@1.11.6: - resolution: - { - integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== - } + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} dev: true /@webassemblyjs/helper-buffer@1.11.6: - resolution: - { - integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== - } + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} dev: true /@webassemblyjs/helper-numbers@1.11.6: - resolution: - { - integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== - } + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} dependencies: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 @@ -5430,17 +4279,11 @@ packages: dev: true /@webassemblyjs/helper-wasm-bytecode@1.11.6: - resolution: - { - integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== - } + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} dev: true /@webassemblyjs/helper-wasm-section@1.11.6: - resolution: - { - integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== - } + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 @@ -5449,35 +4292,23 @@ packages: dev: true /@webassemblyjs/ieee754@1.11.6: - resolution: - { - integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== - } + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} dependencies: '@xtuc/ieee754': 1.2.0 dev: true /@webassemblyjs/leb128@1.11.6: - resolution: - { - integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== - } + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} dependencies: '@xtuc/long': 4.2.2 dev: true /@webassemblyjs/utf8@1.11.6: - resolution: - { - integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - } + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} dev: true /@webassemblyjs/wasm-edit@1.11.6: - resolution: - { - integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== - } + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 @@ -5490,10 +4321,7 @@ packages: dev: true /@webassemblyjs/wasm-gen@1.11.6: - resolution: - { - integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== - } + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 @@ -5503,10 +4331,7 @@ packages: dev: true /@webassemblyjs/wasm-opt@1.11.6: - resolution: - { - integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== - } + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-buffer': 1.11.6 @@ -5515,10 +4340,7 @@ packages: dev: true /@webassemblyjs/wasm-parser@1.11.6: - resolution: - { - integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== - } + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} dependencies: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 @@ -5529,98 +4351,65 @@ packages: dev: true /@webassemblyjs/wast-printer@1.11.6: - resolution: - { - integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== - } + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} dependencies: '@webassemblyjs/ast': 1.11.6 '@xtuc/long': 4.2.2 dev: true /@xtuc/ieee754@1.2.0: - resolution: - { - integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - } + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} dev: true /@xtuc/long@4.2.2: - resolution: - { - integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - } + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} dev: true /@yarnpkg/lockfile@1.1.0: - resolution: - { - integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== - } + resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} dev: true /@yarnpkg/parsers@3.0.0-rc.46: - resolution: - { - integrity: sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q== - } - engines: { node: '>=14.15.0' } + resolution: {integrity: sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==} + engines: {node: '>=14.15.0'} dependencies: js-yaml: 3.14.1 tslib: 2.6.2 dev: true /@zkochan/js-yaml@0.0.6: - resolution: - { - integrity: sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== - } + resolution: {integrity: sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==} hasBin: true dependencies: argparse: 2.0.1 dev: true /abab@2.0.6: - resolution: - { - integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - } + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} deprecated: Use your platform's native atob() and btoa() methods instead dev: true /abbrev@2.0.0: - resolution: - { - integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: false /accepts@1.3.8: - resolution: - { - integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} dependencies: mime-types: 2.1.35 negotiator: 0.6.3 /acorn-globals@7.0.1: - resolution: - { - integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== - } + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: acorn: 8.11.2 acorn-walk: 8.3.1 dev: true /acorn-import-assertions@1.9.0(acorn@8.11.2): - resolution: - { - integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - } + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} peerDependencies: acorn: ^8 dependencies: @@ -5628,10 +4417,7 @@ packages: dev: true /acorn-jsx@5.3.2(acorn@8.11.2): - resolution: - { - integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - } + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: @@ -5639,36 +4425,24 @@ packages: dev: true /acorn-walk@8.3.1: - resolution: - { - integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw== - } - engines: { node: '>=0.4.0' } + resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==} + engines: {node: '>=0.4.0'} dev: true /acorn@8.11.2: - resolution: - { - integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== - } - engines: { node: '>=0.4.0' } + resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + engines: {node: '>=0.4.0'} hasBin: true dev: true /address@1.2.2: - resolution: - { - integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== - } - engines: { node: '>= 10.0.0' } + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} dev: true /agent-base@6.0.2: - resolution: - { - integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - } - engines: { node: '>= 6.0.0' } + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} dependencies: debug: 4.3.4 transitivePeerDependencies: @@ -5676,10 +4450,7 @@ packages: dev: true /ajv-formats@2.1.1(ajv@8.12.0): - resolution: - { - integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - } + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: ajv: ^8.0.0 peerDependenciesMeta: @@ -5690,10 +4461,7 @@ packages: dev: true /ajv-keywords@3.5.2(ajv@6.12.6): - resolution: - { - integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - } + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: ajv: ^6.9.1 dependencies: @@ -5701,10 +4469,7 @@ packages: dev: true /ajv-keywords@5.1.0(ajv@8.12.0): - resolution: - { - integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - } + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} peerDependencies: ajv: ^8.8.2 dependencies: @@ -5713,10 +4478,7 @@ packages: dev: true /ajv@6.12.6: - resolution: - { - integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - } + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 @@ -5725,10 +4487,7 @@ packages: dev: true /ajv@8.12.0: - resolution: - { - integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - } + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -5737,180 +4496,113 @@ packages: dev: true /ansi-colors@4.1.3: - resolution: - { - integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} dev: true /ansi-escapes@4.3.2: - resolution: - { - integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.21.3 dev: true /ansi-html-community@0.0.8: - resolution: - { - integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - } - engines: { '0': node >= 0.8.0 } + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} hasBin: true dev: true /ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} /ansi-regex@6.0.1: - resolution: - { - integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} /ansi-styles@3.2.1: - resolution: - { - integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} dependencies: color-convert: 1.9.3 /ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} dependencies: color-convert: 2.0.1 /ansi-styles@5.2.0: - resolution: - { - integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} dev: true /ansi-styles@6.2.1: - resolution: - { - integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} /any-promise@1.3.0: - resolution: - { - integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - } + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: true /anymatch@3.1.3: - resolution: - { - integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 dev: true /append-field@1.0.0: - resolution: - { - integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw== - } + resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} /arg@4.1.3: - resolution: - { - integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - } + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true /arg@5.0.2: - resolution: - { - integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== - } + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: true /argparse@1.0.10: - resolution: - { - integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - } + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 dev: true /argparse@2.0.1: - resolution: - { - integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - } - dev: true + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} /aria-query@5.1.3: - resolution: - { - integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== - } + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.2.3 dev: true /aria-query@5.3.0: - resolution: - { - integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - } + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: dequal: 2.0.3 dev: true /array-buffer-byte-length@1.0.0: - resolution: - { - integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== - } + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: call-bind: 1.0.5 is-array-buffer: 3.0.2 dev: true /array-flatten@1.1.1: - resolution: - { - integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - } + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} /array-flatten@2.1.2: - resolution: - { - integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - } + resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} dev: true /array-includes@3.1.7: - resolution: - { - integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -5920,34 +4612,33 @@ packages: dev: true /array-timsort@1.0.3: - resolution: - { - integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ== - } + resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} dev: true /array-union@2.1.0: - resolution: - { - integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} dev: true /array-union@3.0.1: - resolution: - { - integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==} + engines: {node: '>=12'} + dev: true + + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 dev: true /array.prototype.flat@1.3.2: - resolution: - { - integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -5956,11 +4647,8 @@ packages: dev: true /array.prototype.flatmap@1.3.2: - resolution: - { - integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -5969,10 +4657,7 @@ packages: dev: true /array.prototype.tosorted@1.1.2: - resolution: - { - integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== - } + resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -5982,11 +4667,8 @@ packages: dev: true /arraybuffer.prototype.slice@1.0.2: - resolution: - { - integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 call-bind: 1.0.5 @@ -5998,40 +4680,31 @@ packages: dev: true /ast-types-flow@0.0.7: - resolution: - { - integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== - } + resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: true /async@2.6.4: - resolution: - { - integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== - } + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} dependencies: lodash: 4.17.21 dev: true /async@3.2.5: - resolution: - { - integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== - } + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + dev: true + + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + dependencies: + has-symbols: 1.0.3 dev: true /asynckit@0.4.0: - resolution: - { - integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - } + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} /autoprefixer@10.4.16(postcss@8.4.32): - resolution: - { - integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ== - } - engines: { node: ^10 || ^12 || >=14 } + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} + engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 @@ -6046,26 +4719,17 @@ packages: dev: true /available-typed-arrays@1.0.5: - resolution: - { - integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} dev: true /axe-core@4.8.3: - resolution: - { - integrity: sha512-d5ZQHPSPkF9Tw+yfyDcRoUOc4g/8UloJJe5J8m4L5+c7AtDdjDLRxew/knnI4CxvtdxEUVgWz4x3OIQUIFiMfw== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-d5ZQHPSPkF9Tw+yfyDcRoUOc4g/8UloJJe5J8m4L5+c7AtDdjDLRxew/knnI4CxvtdxEUVgWz4x3OIQUIFiMfw==} + engines: {node: '>=4'} dev: true /axios@1.6.2: - resolution: - { - integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A== - } + resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} dependencies: follow-redirects: 1.15.3 form-data: 4.0.0 @@ -6074,20 +4738,14 @@ packages: - debug /axobject-query@3.2.1: - resolution: - { - integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== - } + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: dequal: 2.0.3 dev: true /babel-jest@29.7.0(@babel/core@7.23.6): - resolution: - { - integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: @@ -6104,11 +4762,8 @@ packages: dev: true /babel-loader@9.1.3(@babel/core@7.23.6)(webpack@5.89.0): - resolution: - { - integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== - } - engines: { node: '>= 14.15.0' } + resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} + engines: {node: '>= 14.15.0'} peerDependencies: '@babel/core': ^7.12.0 webpack: '>=5' @@ -6120,10 +4775,7 @@ packages: dev: true /babel-plugin-const-enum@1.2.0(@babel/core@7.23.6): - resolution: - { - integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg== - } + resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -6136,11 +4788,8 @@ packages: dev: true /babel-plugin-istanbul@6.1.1: - resolution: - { - integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} dependencies: '@babel/helper-plugin-utils': 7.22.5 '@istanbuljs/load-nyc-config': 1.1.0 @@ -6152,11 +4801,8 @@ packages: dev: true /babel-plugin-jest-hoist@29.6.3: - resolution: - { - integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.22.15 '@babel/types': 7.23.6 @@ -6165,10 +4811,7 @@ packages: dev: true /babel-plugin-macros@2.8.0: - resolution: - { - integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== - } + resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} dependencies: '@babel/runtime': 7.23.6 cosmiconfig: 6.0.0 @@ -6176,10 +4819,7 @@ packages: dev: true /babel-plugin-polyfill-corejs2@0.4.7(@babel/core@7.23.6): - resolution: - { - integrity: sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ== - } + resolution: {integrity: sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: @@ -6192,10 +4832,7 @@ packages: dev: true /babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.23.6): - resolution: - { - integrity: sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA== - } + resolution: {integrity: sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: @@ -6207,10 +4844,7 @@ packages: dev: true /babel-plugin-polyfill-regenerator@0.5.4(@babel/core@7.23.6): - resolution: - { - integrity: sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg== - } + resolution: {integrity: sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: @@ -6221,10 +4855,7 @@ packages: dev: true /babel-plugin-transform-typescript-metadata@0.3.2(@babel/core@7.23.6): - resolution: - { - integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg== - } + resolution: {integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==} peerDependencies: '@babel/core': ^7 '@babel/traverse': ^7 @@ -6237,10 +4868,7 @@ packages: dev: true /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.6): - resolution: - { - integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - } + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: @@ -6260,11 +4888,8 @@ packages: dev: true /babel-preset-jest@29.6.3(@babel/core@7.23.6): - resolution: - { - integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: @@ -6274,55 +4899,34 @@ packages: dev: true /balanced-match@1.0.2: - resolution: - { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - } + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} /base64-js@1.5.1: - resolution: - { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - } + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: true /basic-auth@2.0.1: - resolution: - { - integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} + engines: {node: '>= 0.8'} dependencies: safe-buffer: 5.1.2 dev: true /batch@0.6.1: - resolution: - { - integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== - } + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} dev: true /big.js@5.2.2: - resolution: - { - integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - } + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: true /binary-extensions@2.2.0: - resolution: - { - integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} dev: true /bl@4.1.0: - resolution: - { - integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - } + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: buffer: 5.7.1 inherits: 2.0.4 @@ -6330,11 +4934,8 @@ packages: dev: true /body-parser@1.20.1: - resolution: - { - integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== - } - engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -6352,11 +4953,8 @@ packages: - supports-color /body-parser@1.20.2: - resolution: - { - integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== - } - engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -6374,10 +4972,7 @@ packages: - supports-color /bonjour-service@1.1.1: - resolution: - { - integrity: sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg== - } + resolution: {integrity: sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==} dependencies: array-flatten: 2.1.2 dns-equal: 1.0.0 @@ -6386,46 +4981,31 @@ packages: dev: true /boolbase@1.0.0: - resolution: - { - integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - } + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: true /brace-expansion@1.1.11: - resolution: - { - integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - } + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: true /brace-expansion@2.0.1: - resolution: - { - integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - } + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 /braces@3.0.2: - resolution: - { - integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} dependencies: fill-range: 7.0.1 dev: true /browserslist@4.22.2: - resolution: - { - integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: caniuse-lite: 1.0.30001571 @@ -6434,127 +5014,82 @@ packages: update-browserslist-db: 1.0.13(browserslist@4.22.2) /bs-logger@0.2.6: - resolution: - { - integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} dependencies: fast-json-stable-stringify: 2.1.0 dev: true /bser@2.1.1: - resolution: - { - integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - } + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 dev: true /buffer-equal-constant-time@1.0.1: - resolution: - { - integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== - } + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} dev: false /buffer-from@1.1.2: - resolution: - { - integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - } + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} /buffer@5.7.1: - resolution: - { - integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - } + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 dev: true /builtins@5.0.1: - resolution: - { - integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== - } + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: semver: 7.5.4 dev: true /busboy@1.6.0: - resolution: - { - integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== - } - engines: { node: '>=10.16.0' } + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 /bytes@3.0.0: - resolution: - { - integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} dev: true /bytes@3.1.2: - resolution: - { - integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} /call-bind@1.0.5: - resolution: - { - integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== - } + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} dependencies: function-bind: 1.1.2 get-intrinsic: 1.2.2 set-function-length: 1.1.1 /callsites@3.1.0: - resolution: - { - integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} dev: true /camelcase-css@2.0.1: - resolution: - { - integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} dev: true /camelcase@5.3.1: - resolution: - { - integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} dev: true /camelcase@6.3.0: - resolution: - { - integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} dev: true /caniuse-api@3.0.0: - resolution: - { - integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - } + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: browserslist: 4.22.2 caniuse-lite: 1.0.30001571 @@ -6563,46 +5098,31 @@ packages: dev: true /caniuse-lite@1.0.30001571: - resolution: - { - integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ== - } + resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==} /chalk@2.4.2: - resolution: - { - integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 /chalk@4.1.2: - resolution: - { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 /char-regex@1.0.2: - resolution: - { - integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} dev: true /chokidar@3.5.3: - resolution: - { - integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - } - engines: { node: '>= 8.10.0' } + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -6616,82 +5136,52 @@ packages: dev: true /chrome-trace-event@1.0.3: - resolution: - { - integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - } - engines: { node: '>=6.0' } + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} dev: true /ci-info@3.9.0: - resolution: - { - integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} dev: true /cjs-module-lexer@1.2.3: - resolution: - { - integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== - } + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} dev: true /class-transformer@0.5.1: - resolution: - { - integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw== - } + resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} /class-validator@0.14.0: - resolution: - { - integrity: sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A== - } + resolution: {integrity: sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==} dependencies: '@types/validator': 13.11.7 libphonenumber-js: 1.10.52 validator: 13.11.0 /cli-cursor@3.1.0: - resolution: - { - integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 dev: true /cli-spinners@2.6.1: - resolution: - { - integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} + engines: {node: '>=6'} dev: true /cli-spinners@2.9.2: - resolution: - { - integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} dev: true /client-only@0.0.1: - resolution: - { - integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== - } + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} /cliui@8.0.1: - resolution: - { - integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 @@ -6699,11 +5189,8 @@ packages: dev: true /clone-deep@4.0.1: - resolution: - { - integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} dependencies: is-plain-object: 2.0.4 kind-of: 6.0.3 @@ -6711,128 +5198,80 @@ packages: dev: true /clone@1.0.4: - resolution: - { - integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - } - engines: { node: '>=0.8' } + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} dev: true /co@4.6.0: - resolution: - { - integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - } - engines: { iojs: '>= 1.0.0', node: '>= 0.12.0' } + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true /collect-v8-coverage@1.0.2: - resolution: - { - integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - } + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} dev: true /color-convert@1.9.3: - resolution: - { - integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - } + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 /color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - } - engines: { node: '>=7.0.0' } + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 /color-name@1.1.3: - resolution: - { - integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - } + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} /color-name@1.1.4: - resolution: - { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - } + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} /colord@2.9.3: - resolution: - { - integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== - } + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} dev: true /colorette@2.0.20: - resolution: - { - integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - } + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} dev: true /columnify@1.6.0: - resolution: - { - integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== - } - engines: { node: '>=8.0.0' } + resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} + engines: {node: '>=8.0.0'} dependencies: strip-ansi: 6.0.1 wcwidth: 1.0.1 dev: true /combined-stream@1.0.8: - resolution: - { - integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 /commander@10.0.1: - resolution: - { - integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} dev: false /commander@2.20.3: - resolution: - { - integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - } + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true /commander@4.1.1: - resolution: - { - integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} dev: true /commander@7.2.0: - resolution: - { - integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} dev: true /comment-json@4.2.3: - resolution: - { - integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw== - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} + engines: {node: '>= 6'} dependencies: array-timsort: 1.0.3 core-util-is: 1.0.3 @@ -6842,28 +5281,19 @@ packages: dev: true /common-path-prefix@3.0.0: - resolution: - { - integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== - } + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} dev: true /compressible@2.0.18: - resolution: - { - integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: true /compression@1.7.4: - resolution: - { - integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} dependencies: accepts: 1.3.8 bytes: 3.0.0 @@ -6877,18 +5307,12 @@ packages: dev: true /concat-map@0.0.1: - resolution: - { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - } + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true /concat-stream@1.6.2: - resolution: - { - integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - } - engines: { '0': node >= 0.8 } + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} dependencies: buffer-from: 1.1.2 inherits: 2.0.4 @@ -6896,11 +5320,8 @@ packages: typedarray: 0.0.6 /condense-newlines@0.2.1: - resolution: - { - integrity: sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==} + engines: {node: '>=0.10.0'} dependencies: extend-shallow: 2.0.1 is-whitespace: 0.3.0 @@ -6908,86 +5329,53 @@ packages: dev: false /config-chain@1.1.13: - resolution: - { - integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - } + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} dependencies: ini: 1.3.8 proto-list: 1.2.4 dev: false /confusing-browser-globals@1.0.11: - resolution: - { - integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== - } + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true /connect-history-api-fallback@2.0.0: - resolution: - { - integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== - } - engines: { node: '>=0.8' } + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} dev: true /consola@2.15.3: - resolution: - { - integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== - } + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} /content-disposition@0.5.4: - resolution: - { - integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} dependencies: safe-buffer: 5.2.1 /content-type@1.0.5: - resolution: - { - integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} /convert-source-map@2.0.0: - resolution: - { - integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - } + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} /cookie-signature@1.0.6: - resolution: - { - integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - } + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} /cookie@0.5.0: - resolution: - { - integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} /copy-anything@2.0.6: - resolution: - { - integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== - } + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} dependencies: is-what: 3.14.1 dev: true /copy-webpack-plugin@10.2.4(webpack@5.89.0): - resolution: - { - integrity: sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg== - } - engines: { node: '>= 12.20.0' } + resolution: {integrity: sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==} + engines: {node: '>= 12.20.0'} peerDependencies: webpack: ^5.1.0 dependencies: @@ -7001,52 +5389,34 @@ packages: dev: true /core-js-compat@3.34.0: - resolution: - { - integrity: sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA== - } + resolution: {integrity: sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==} dependencies: browserslist: 4.22.2 dev: true /core-js-pure@3.34.0: - resolution: - { - integrity: sha512-pmhivkYXkymswFfbXsANmBAewXx86UBfmagP+w0wkK06kLsLlTK5oQmsURPivzMkIBQiYq2cjamcZExIwlFQIg== - } + resolution: {integrity: sha512-pmhivkYXkymswFfbXsANmBAewXx86UBfmagP+w0wkK06kLsLlTK5oQmsURPivzMkIBQiYq2cjamcZExIwlFQIg==} requiresBuild: true dev: true /core-util-is@1.0.3: - resolution: - { - integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - } + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} /cors@2.8.5: - resolution: - { - integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - } - engines: { node: '>= 0.10' } + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} dependencies: object-assign: 4.1.1 vary: 1.1.2 /corser@2.0.1: - resolution: - { - integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ== - } - engines: { node: '>= 0.4.0' } + resolution: {integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==} + engines: {node: '>= 0.4.0'} dev: true /cosmiconfig@6.0.0: - resolution: - { - integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} dependencies: '@types/parse-json': 4.0.2 import-fresh: 3.3.0 @@ -7056,11 +5426,8 @@ packages: dev: true /cosmiconfig@7.1.0: - resolution: - { - integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} dependencies: '@types/parse-json': 4.0.2 import-fresh: 3.3.0 @@ -7070,11 +5437,8 @@ packages: dev: true /cosmiconfig@8.3.6(typescript@5.2.2): - resolution: - { - integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' peerDependenciesMeta: @@ -7089,11 +5453,8 @@ packages: dev: true /create-jest@29.7.0(@types/node@18.16.9)(ts-node@10.9.1): - resolution: - { - integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true dependencies: '@jest/types': 29.6.3 @@ -7111,29 +5472,20 @@ packages: dev: true /create-require@1.1.1: - resolution: - { - integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - } + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true /cross-spawn@7.0.3: - resolution: - { - integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 /css-declaration-sorter@7.1.1(postcss@8.4.32): - resolution: - { - integrity: sha512-dZ3bVTEEc1vxr3Bek9vGwfB5Z6ESPULhcRvO472mfjVnj8jRcTnKO8/JTczlvxM10Myb+wBM++1MtdO76eWcaQ== - } - engines: { node: ^14 || ^16 || >=18 } + resolution: {integrity: sha512-dZ3bVTEEc1vxr3Bek9vGwfB5Z6ESPULhcRvO472mfjVnj8jRcTnKO8/JTczlvxM10Myb+wBM++1MtdO76eWcaQ==} + engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.0.9 dependencies: @@ -7141,11 +5493,8 @@ packages: dev: true /css-loader@6.8.1(webpack@5.89.0): - resolution: - { - integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g== - } - engines: { node: '>= 12.13.0' } + resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==} + engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: @@ -7161,11 +5510,8 @@ packages: dev: true /css-minimizer-webpack-plugin@5.0.1(webpack@5.89.0): - resolution: - { - integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== - } - engines: { node: '>= 14.15.0' } + resolution: {integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==} + engines: {node: '>= 14.15.0'} peerDependencies: '@parcel/css': '*' '@swc/css': '*' @@ -7198,10 +5544,7 @@ packages: dev: true /css-select@5.1.0: - resolution: - { - integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== - } + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} dependencies: boolbase: 1.0.0 css-what: 6.1.0 @@ -7211,50 +5554,35 @@ packages: dev: true /css-tree@2.2.1: - resolution: - { - integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== - } - engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0' } + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} dependencies: mdn-data: 2.0.28 source-map-js: 1.0.2 dev: true /css-tree@2.3.1: - resolution: - { - integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== - } - engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} dependencies: mdn-data: 2.0.30 source-map-js: 1.0.2 dev: true /css-what@6.1.0: - resolution: - { - integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} dev: true /cssesc@3.0.0: - resolution: - { - integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} hasBin: true dev: true /cssnano-preset-default@6.0.2(postcss@8.4.32): - resolution: - { - integrity: sha512-VnZybFeZ63AiVqIUNlxqMxpj9VU8B5j0oKgP7WyVt/7mkyf97KsYkNzsPTV/RVmy54Pg7cBhOK4WATbdCB44gw== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-VnZybFeZ63AiVqIUNlxqMxpj9VU8B5j0oKgP7WyVt/7mkyf97KsYkNzsPTV/RVmy54Pg7cBhOK4WATbdCB44gw==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -7291,11 +5619,8 @@ packages: dev: true /cssnano-utils@4.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-6qQuYDqsGoiXssZ3zct6dcMxiqfT6epy7x4R0TQJadd4LWO3sPR6JH6ZByOvVLoZ6EdwPGgd7+DR1EmX3tiXQQ== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-6qQuYDqsGoiXssZ3zct6dcMxiqfT6epy7x4R0TQJadd4LWO3sPR6JH6ZByOvVLoZ6EdwPGgd7+DR1EmX3tiXQQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -7303,11 +5628,8 @@ packages: dev: true /cssnano@6.0.2(postcss@8.4.32): - resolution: - { - integrity: sha512-Tu9wv8UdN6CoiQnIVkCNvi+0rw/BwFWOJBlg2bVfEyKaadSuE3Gq/DD8tniVvggTJGwK88UjqZp7zL5sv6t1aA== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-Tu9wv8UdN6CoiQnIVkCNvi+0rw/BwFWOJBlg2bVfEyKaadSuE3Gq/DD8tniVvggTJGwK88UjqZp7zL5sv6t1aA==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -7317,59 +5639,38 @@ packages: dev: true /csso@5.0.5: - resolution: - { - integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== - } - engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0' } + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} dependencies: css-tree: 2.2.1 dev: true /cssom@0.3.8: - resolution: - { - integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - } + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: true /cssom@0.5.0: - resolution: - { - integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== - } + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} dev: true /cssstyle@2.3.0: - resolution: - { - integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} dependencies: cssom: 0.3.8 dev: true /csstype@3.1.3: - resolution: - { - integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== - } + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} dev: true /damerau-levenshtein@1.0.8: - resolution: - { - integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== - } + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true /data-urls@3.0.2: - resolution: - { - integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} dependencies: abab: 2.0.6 whatwg-mimetype: 3.0.0 @@ -7377,10 +5678,7 @@ packages: dev: true /debug@2.6.9: - resolution: - { - integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - } + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -7390,10 +5688,7 @@ packages: ms: 2.0.0 /debug@3.2.7: - resolution: - { - integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - } + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -7404,11 +5699,8 @@ packages: dev: true /debug@4.3.4: - resolution: - { - integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - } - engines: { node: '>=6.0' } + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -7418,17 +5710,11 @@ packages: ms: 2.1.2 /decimal.js@10.4.3: - resolution: - { - integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== - } + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true /dedent@1.5.1: - resolution: - { - integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== - } + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -7437,11 +5723,8 @@ packages: dev: true /deep-equal@2.2.3: - resolution: - { - integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 call-bind: 1.0.5 @@ -7464,63 +5747,42 @@ packages: dev: true /deep-is@0.1.4: - resolution: - { - integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - } + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true /deepmerge@4.3.1: - resolution: - { - integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} /default-gateway@6.0.3: - resolution: - { - integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} dependencies: execa: 5.1.1 dev: true /defaults@1.0.4: - resolution: - { - integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - } + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 dev: true /define-data-property@1.1.1: - resolution: - { - integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.2 gopd: 1.0.1 has-property-descriptors: 1.0.1 /define-lazy-prop@2.0.0: - resolution: - { - integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} dev: true /define-properties@1.2.1: - resolution: - { - integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.1 has-property-descriptors: 1.0.1 @@ -7528,62 +5790,38 @@ packages: dev: true /delayed-stream@1.0.0: - resolution: - { - integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - } - engines: { node: '>=0.4.0' } + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} /depd@1.1.2: - resolution: - { - integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} dev: true /depd@2.0.0: - resolution: - { - integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} /dequal@2.0.3: - resolution: - { - integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} dev: true /destroy@1.2.0: - resolution: - { - integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - } - engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} /detect-newline@3.1.0: - resolution: - { - integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} dev: true /detect-node@2.1.0: - resolution: - { - integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - } + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} dev: true /detect-port@1.5.1: - resolution: - { - integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== - } + resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} hasBin: true dependencies: address: 1.2.2 @@ -7593,187 +5831,121 @@ packages: dev: true /didyoumean@1.2.2: - resolution: - { - integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== - } + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: true /diff-sequences@29.6.3: - resolution: - { - integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true /diff@4.0.2: - resolution: - { - integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - } - engines: { node: '>=0.3.1' } + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} dev: true /dir-glob@3.0.1: - resolution: - { - integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dependencies: path-type: 4.0.0 dev: true /dlv@1.1.3: - resolution: - { - integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== - } + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: true /dns-equal@1.0.0: - resolution: - { - integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== - } + resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} dev: true /dns-packet@5.6.1: - resolution: - { - integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} dependencies: '@leichtgewicht/ip-codec': 2.0.4 dev: true /doctrine@2.1.0: - resolution: - { - integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 dev: true /doctrine@3.0.0: - resolution: - { - integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 dev: true /dom-accessibility-api@0.5.16: - resolution: - { - integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== - } + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} dev: true /dom-serializer@2.0.0: - resolution: - { - integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - } + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 entities: 4.5.0 /domelementtype@2.3.0: - resolution: - { - integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - } + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} /domexception@4.0.0: - resolution: - { - integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} deprecated: Use your platform's native DOMException instead dependencies: webidl-conversions: 7.0.0 dev: true /domhandler@5.0.3: - resolution: - { - integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - } - engines: { node: '>= 4' } + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 /domutils@3.1.0: - resolution: - { - integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== - } + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 /dot-case@3.0.4: - resolution: - { - integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - } + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 tslib: 2.6.2 dev: true /dotenv-expand@10.0.0: - resolution: - { - integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} /dotenv@16.3.1: - resolution: - { - integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + engines: {node: '>=12'} /duplexer@0.1.2: - resolution: - { - integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - } + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: true /eastasianwidth@0.2.0: - resolution: - { - integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - } + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} /ecdsa-sig-formatter@1.0.11: - resolution: - { - integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== - } + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} dependencies: safe-buffer: 5.2.1 dev: false /editorconfig@1.0.4: - resolution: - { - integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} hasBin: true dependencies: '@one-ini/wasm': 0.1.1 @@ -7783,105 +5955,66 @@ packages: dev: false /ee-first@1.1.1: - resolution: - { - integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - } + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} /ejs@3.1.9: - resolution: - { - integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} + engines: {node: '>=0.10.0'} hasBin: true dependencies: jake: 10.8.7 dev: true /electron-to-chromium@1.4.616: - resolution: - { - integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg== - } + resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} /emittery@0.13.1: - resolution: - { - integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} dev: true /emoji-regex@8.0.0: - resolution: - { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - } + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} /emoji-regex@9.2.2: - resolution: - { - integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - } + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} /emojis-list@3.0.0: - resolution: - { - integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - } - engines: { node: '>= 4' } + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} dev: true /encodeurl@1.0.2: - resolution: - { - integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} /end-of-stream@1.4.4: - resolution: - { - integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - } + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 dev: true /enhanced-resolve@5.15.0: - resolution: - { - integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== - } - engines: { node: '>=10.13.0' } + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 dev: true /enquirer@2.3.6: - resolution: - { - integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - } - engines: { node: '>=8.6' } + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 dev: true /entities@4.5.0: - resolution: - { - integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - } - engines: { node: '>=0.12' } + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} /errno@0.1.8: - resolution: - { - integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - } + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true requiresBuild: true dependencies: @@ -7890,29 +6023,20 @@ packages: optional: true /error-ex@1.3.2: - resolution: - { - integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - } + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 dev: true /error-stack-parser@2.1.4: - resolution: - { - integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== - } + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} dependencies: stackframe: 1.3.4 dev: true /es-abstract@1.22.3: - resolution: - { - integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 arraybuffer.prototype.slice: 1.0.2 @@ -7956,10 +6080,7 @@ packages: dev: true /es-get-iterator@1.1.3: - resolution: - { - integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== - } + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 @@ -7972,19 +6093,32 @@ packages: stop-iteration-iterator: 1.0.0 dev: true + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-set-tostringtag: 2.0.2 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + iterator.prototype: 1.1.2 + safe-array-concat: 1.0.1 + dev: true + /es-module-lexer@1.4.1: - resolution: - { - integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== - } + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} dev: true /es-set-tostringtag@2.0.2: - resolution: - { - integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.2 has-tostringtag: 1.0.0 @@ -7992,20 +6126,14 @@ packages: dev: true /es-shim-unscopables@1.0.2: - resolution: - { - integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== - } + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: hasown: 2.0.0 dev: true /es-to-primitive@1.2.1: - resolution: - { - integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 @@ -8013,47 +6141,29 @@ packages: dev: true /escalade@3.1.1: - resolution: - { - integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} /escape-html@1.0.3: - resolution: - { - integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - } + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} /escape-string-regexp@1.0.5: - resolution: - { - integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - } - engines: { node: '>=0.8.0' } + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} /escape-string-regexp@2.0.0: - resolution: - { - integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} dev: true /escape-string-regexp@4.0.0: - resolution: - { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} dev: true /escodegen@2.1.0: - resolution: - { - integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== - } - engines: { node: '>=6.0' } + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} hasBin: true dependencies: esprima: 4.0.1 @@ -8063,11 +6173,8 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-next@13.4.4(eslint@8.48.0)(typescript@5.2.2): - resolution: - { - integrity: sha512-z/PMbm6L0iC/fwISULxe8IVy4DtNqZk2wQY711o35klenq70O6ns82A8yuMVCFjHC0DIyB2lyugesRtuk9u8dQ== - } + /eslint-config-next@14.0.4(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-9/xbOHEQOmQtqvQ1UsTQZpnA7SlDMBtuKJ//S4JnoyK3oGLhILKXdBgu/UO7lQo/2xOykQULS1qQ6p2+EpHgAQ==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 typescript: '>=3.3.1' @@ -8075,15 +6182,15 @@ packages: typescript: optional: true dependencies: - '@next/eslint-plugin-next': 13.4.4 + '@next/eslint-plugin-next': 14.0.4 '@rushstack/eslint-patch': 1.6.1 - '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.15.0(eslint@8.48.0)(typescript@5.2.2) eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.27.5)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) - eslint-plugin-react: 7.32.2(eslint@8.48.0) + eslint-plugin-react: 7.33.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) typescript: 5.2.2 transitivePeerDependencies: @@ -8092,10 +6199,7 @@ packages: dev: true /eslint-config-prettier@9.1.0(eslint@8.48.0): - resolution: - { - integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== - } + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -8104,10 +6208,7 @@ packages: dev: true /eslint-import-resolver-node@0.3.9: - resolution: - { - integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== - } + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 is-core-module: 2.13.1 @@ -8116,12 +6217,9 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.27.5)(eslint@8.48.0): - resolution: - { - integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== - } - engines: { node: ^14.18.0 || >=16.0.0 } + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' @@ -8129,8 +6227,8 @@ packages: debug: 4.3.4 enhanced-resolve: 5.15.0 eslint: 8.48.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -8142,45 +6240,9 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0): - resolution: - { - integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== - } - engines: { node: '>=4' } - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.2.2) - debug: 3.2.7 - eslint: 8.48.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.27.5)(eslint@8.48.0) - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint@8.48.0): - resolution: - { - integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== - } - engines: { node: '>=4' } + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' eslint: '*' @@ -8203,16 +6265,14 @@ packages: debug: 3.2.7 eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0): - resolution: - { - integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== - } - engines: { node: '>=4' } + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.15.0)(eslint@8.48.0): + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 @@ -8220,7 +6280,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.15.0(eslint@8.48.0)(typescript@5.2.2) array-includes: 3.1.7 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 @@ -8228,7 +6288,7 @@ packages: doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) has: 1.0.4 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -8243,12 +6303,9 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.15.0)(eslint@8.48.0): - resolution: - { - integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== - } - engines: { node: '>=4' } + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 @@ -8258,19 +6315,21 @@ packages: dependencies: '@typescript-eslint/parser': 6.15.0(eslint@8.48.0)(typescript@5.2.2) array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint@8.48.0) - has: 1.0.4 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 object.values: 1.1.7 - resolve: 1.22.8 semver: 6.3.1 tsconfig-paths: 3.15.0 transitivePeerDependencies: @@ -8280,11 +6339,8 @@ packages: dev: true /eslint-plugin-jsx-a11y@6.7.1(eslint@8.48.0): - resolution: - { - integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: @@ -8308,11 +6364,8 @@ packages: dev: true /eslint-plugin-react-hooks@4.6.0(eslint@8.48.0): - resolution: - { - integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: @@ -8320,11 +6373,8 @@ packages: dev: true /eslint-plugin-react@7.32.2(eslint@8.48.0): - resolution: - { - integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} + engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: @@ -8346,42 +6396,55 @@ packages: string.prototype.matchall: 4.0.10 dev: true + /eslint-plugin-react@7.33.2(eslint@8.48.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.15 + eslint: 8.48.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.10 + dev: true + /eslint-scope@5.1.1: - resolution: - { - integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - } - engines: { node: '>=8.0.0' } + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 dev: true /eslint-scope@7.2.2: - resolution: - { - integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 dev: true /eslint-visitor-keys@3.4.3: - resolution: - { - integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true /eslint@8.48.0: - resolution: - { - integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) @@ -8426,11 +6489,8 @@ packages: dev: true /espree@9.6.1: - resolution: - { - integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.11.2 acorn-jsx: 5.3.2(acorn@8.11.2) @@ -8438,86 +6498,56 @@ packages: dev: true /esprima@4.0.1: - resolution: - { - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} hasBin: true dev: true /esquery@1.5.0: - resolution: - { - integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - } - engines: { node: '>=0.10' } + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 dev: true /esrecurse@4.3.0: - resolution: - { - integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 dev: true /estraverse@4.3.0: - resolution: - { - integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} dev: true /estraverse@5.3.0: - resolution: - { - integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} dev: true /esutils@2.0.3: - resolution: - { - integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} dev: true /etag@1.8.1: - resolution: - { - integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} /eventemitter3@4.0.7: - resolution: - { - integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - } + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: true /events@3.3.0: - resolution: - { - integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - } - engines: { node: '>=0.8.x' } + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} dev: true /execa@5.1.1: - resolution: - { - integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -8531,19 +6561,13 @@ packages: dev: true /exit@0.1.2: - resolution: - { - integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} dev: true /expect@29.7.0: - resolution: - { - integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/expect-utils': 29.7.0 jest-get-type: 29.6.3 @@ -8553,11 +6577,8 @@ packages: dev: true /express@4.18.2: - resolution: - { - integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== - } - engines: { node: '>= 0.10.0' } + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 array-flatten: 1.1.1 @@ -8594,28 +6615,19 @@ packages: - supports-color /extend-shallow@2.0.1: - resolution: - { - integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} dependencies: is-extendable: 0.1.1 dev: false /fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - } + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true /fast-glob@3.2.7: - resolution: - { - integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} + engines: {node: '>=8'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -8625,11 +6637,8 @@ packages: dev: true /fast-glob@3.3.2: - resolution: - { - integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - } - engines: { node: '>=8.6.0' } + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -8639,79 +6648,52 @@ packages: dev: true /fast-json-stable-stringify@2.1.0: - resolution: - { - integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - } + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true /fast-levenshtein@2.0.6: - resolution: - { - integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - } + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true /fast-safe-stringify@2.1.1: - resolution: - { - integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - } + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} /fastq@1.16.0: - resolution: - { - integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA== - } + resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} dependencies: reusify: 1.0.4 dev: true /faye-websocket@0.11.4: - resolution: - { - integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - } - engines: { node: '>=0.8.0' } + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} dependencies: websocket-driver: 0.7.4 dev: true /fb-watchman@2.0.2: - resolution: - { - integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - } + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 dev: true /figures@3.2.0: - resolution: - { - integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} dependencies: escape-string-regexp: 1.0.5 dev: true /file-entry-cache@6.0.1: - resolution: - { - integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - } - engines: { node: ^10.12.0 || >=12.0.0 } + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.2.0 dev: true /file-loader@6.2.0(webpack@5.89.0): - resolution: - { - integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== - } - engines: { node: '>= 10.13.0' } + resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} + engines: {node: '>= 10.13.0'} peerDependencies: webpack: ^4.0.0 || ^5.0.0 dependencies: @@ -8721,30 +6703,21 @@ packages: dev: true /filelist@1.0.4: - resolution: - { - integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - } + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: minimatch: 5.1.6 dev: true /fill-range@7.0.1: - resolution: - { - integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 dev: true /finalhandler@1.2.0: - resolution: - { - integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} dependencies: debug: 2.6.9 encodeurl: 1.0.2 @@ -8757,55 +6730,40 @@ packages: - supports-color /find-cache-dir@4.0.0: - resolution: - { - integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== - } - engines: { node: '>=14.16' } + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} dependencies: common-path-prefix: 3.0.0 pkg-dir: 7.0.0 dev: true /find-up@4.1.0: - resolution: - { - integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 dev: true /find-up@5.0.0: - resolution: - { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 dev: true /find-up@6.3.0: - resolution: - { - integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: locate-path: 7.2.0 path-exists: 5.0.0 dev: true /flat-cache@3.2.0: - resolution: - { - integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - } - engines: { node: ^10.12.0 || >=12.0.0 } + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.2.9 keyv: 4.5.4 @@ -8813,26 +6771,17 @@ packages: dev: true /flat@5.0.2: - resolution: - { - integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - } + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true dev: true /flatted@3.2.9: - resolution: - { - integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== - } + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true /follow-redirects@1.15.3: - resolution: - { - integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + engines: {node: '>=4.0'} peerDependencies: debug: '*' peerDependenciesMeta: @@ -8840,30 +6789,21 @@ packages: optional: true /for-each@0.3.3: - resolution: - { - integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - } + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 dev: true /foreground-child@3.1.1: - resolution: - { - integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 /fork-ts-checker-webpack-plugin@7.2.13(typescript@5.2.2)(webpack@5.89.0): - resolution: - { - integrity: sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg== - } - engines: { node: '>=12.13.0', yarn: '>=1.0.0' } + resolution: {integrity: sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} peerDependencies: typescript: '>3.6.0' vue-template-compiler: '*' @@ -8889,50 +6829,32 @@ packages: dev: true /form-data@4.0.0: - resolution: - { - integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 /forwarded@0.2.0: - resolution: - { - integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} /fraction.js@4.3.7: - resolution: - { - integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== - } + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: true /fresh@0.5.2: - resolution: - { - integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} /fs-constants@1.0.0: - resolution: - { - integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - } + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} dev: true /fs-extra@10.1.0: - resolution: - { - integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 @@ -8940,11 +6862,8 @@ packages: dev: true /fs-extra@11.2.0: - resolution: - { - integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== - } - engines: { node: '>=14.14' } + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 @@ -8952,42 +6871,27 @@ packages: dev: true /fs-monkey@1.0.5: - resolution: - { - integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== - } + resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} dev: true /fs.realpath@1.0.0: - resolution: - { - integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - } + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true /fsevents@2.3.3: - resolution: - { - integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true dev: true optional: true /function-bind@1.1.2: - resolution: - { - integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - } + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} /function.prototype.name@1.1.6: - resolution: - { - integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -8996,32 +6900,20 @@ packages: dev: true /functions-have-names@1.2.3: - resolution: - { - integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - } + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true /gensync@1.0.0-beta.2: - resolution: - { - integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} /get-caller-file@2.0.5: - resolution: - { - integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - } - engines: { node: 6.* || 8.* || >= 10.* } + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} dev: true /get-intrinsic@1.2.2: - resolution: - { - integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== - } + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} dependencies: function-bind: 1.1.2 has-proto: 1.0.1 @@ -9029,74 +6921,49 @@ packages: hasown: 2.0.0 /get-package-type@0.1.0: - resolution: - { - integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - } - engines: { node: '>=8.0.0' } + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} dev: true /get-stream@6.0.1: - resolution: - { - integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} dev: true /get-symbol-description@1.0.0: - resolution: - { - integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 dev: true /get-tsconfig@4.7.2: - resolution: - { - integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== - } + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} dependencies: resolve-pkg-maps: 1.0.0 dev: true /glob-parent@5.1.2: - resolution: - { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 dev: true /glob-parent@6.0.2: - resolution: - { - integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - } - engines: { node: '>=10.13.0' } + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 dev: true /glob-to-regexp@0.4.1: - resolution: - { - integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - } - dev: true + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} /glob@10.3.10: - resolution: - { - integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - } - engines: { node: '>=16 || 14 >=14.17' } + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: foreground-child: 3.1.1 @@ -9106,10 +6973,7 @@ packages: path-scurry: 1.10.1 /glob@7.1.4: - resolution: - { - integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== - } + resolution: {integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -9120,10 +6984,7 @@ packages: dev: true /glob@7.1.7: - resolution: - { - integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - } + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -9134,10 +6995,7 @@ packages: dev: true /glob@7.2.3: - resolution: - { - integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - } + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -9148,38 +7006,26 @@ packages: dev: true /globals@11.12.0: - resolution: - { - integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} /globals@13.24.0: - resolution: - { - integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true /globalthis@1.0.3: - resolution: - { - integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 dev: true /globby@11.1.0: - resolution: - { - integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -9190,11 +7036,8 @@ packages: dev: true /globby@12.2.0: - resolution: - { - integrity: sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA== - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: array-union: 3.0.1 dir-glob: 3.0.1 @@ -9205,142 +7048,87 @@ packages: dev: true /gopd@1.0.1: - resolution: - { - integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - } + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.2 /graceful-fs@4.2.11: - resolution: - { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - } - dev: true + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} /graphemer@1.4.0: - resolution: - { - integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - } + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true /handle-thing@2.0.1: - resolution: - { - integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - } + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} dev: true /harmony-reflect@1.6.2: - resolution: - { - integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== - } + resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} dev: true /has-bigints@1.0.2: - resolution: - { - integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - } + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true /has-flag@3.0.0: - resolution: - { - integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} /has-flag@4.0.0: - resolution: - { - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} /has-own-prop@2.0.0: - resolution: - { - integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} + engines: {node: '>=8'} dev: true /has-property-descriptors@1.0.1: - resolution: - { - integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== - } + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: get-intrinsic: 1.2.2 /has-proto@1.0.1: - resolution: - { - integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} /has-symbols@1.0.3: - resolution: - { - integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} /has-tostringtag@1.0.0: - resolution: - { - integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true /has@1.0.4: - resolution: - { - integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== - } - engines: { node: '>= 0.4.0' } + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} dev: true /hasown@2.0.0: - resolution: - { - integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 /he@1.2.0: - resolution: - { - integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - } + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true dev: true /hosted-git-info@7.0.1: - resolution: - { - integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA== - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} + engines: {node: ^16.14.0 || >=18.0.0} dependencies: lru-cache: 10.1.0 dev: true /hpack.js@2.1.6: - resolution: - { - integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== - } + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} dependencies: inherits: 2.0.4 obuf: 1.1.2 @@ -9349,35 +7137,23 @@ packages: dev: true /html-encoding-sniffer@3.0.0: - resolution: - { - integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 dev: true /html-entities@2.4.0: - resolution: - { - integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== - } + resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} dev: true /html-escaper@2.0.2: - resolution: - { - integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - } + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true /html-to-text@9.0.5: - resolution: - { - integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} + engines: {node: '>=14'} dependencies: '@selderee/plugin-htmlparser2': 0.11.0 deepmerge: 4.3.1 @@ -9387,10 +7163,7 @@ packages: dev: false /htmlparser2@8.0.2: - resolution: - { - integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== - } + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 @@ -9399,18 +7172,12 @@ packages: dev: false /http-deceiver@1.2.7: - resolution: - { - integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== - } + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} dev: true /http-errors@1.6.3: - resolution: - { - integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} dependencies: depd: 1.1.2 inherits: 2.0.3 @@ -9419,11 +7186,8 @@ packages: dev: true /http-errors@2.0.0: - resolution: - { - integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} dependencies: depd: 2.0.0 inherits: 2.0.4 @@ -9432,18 +7196,12 @@ packages: toidentifier: 1.0.1 /http-parser-js@0.5.8: - resolution: - { - integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== - } + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} dev: true /http-proxy-agent@5.0.0: - resolution: - { - integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 @@ -9453,11 +7211,8 @@ packages: dev: true /http-proxy-middleware@2.0.6(@types/express@4.17.21): - resolution: - { - integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== - } - engines: { node: '>=12.0.0' } + resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + engines: {node: '>=12.0.0'} peerDependencies: '@types/express': ^4.17.13 peerDependenciesMeta: @@ -9475,11 +7230,8 @@ packages: dev: true /http-proxy@1.18.1: - resolution: - { - integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - } - engines: { node: '>=8.0.0' } + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 follow-redirects: 1.15.3 @@ -9489,11 +7241,8 @@ packages: dev: true /http-server@14.1.1: - resolution: - { - integrity: sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==} + engines: {node: '>=12'} hasBin: true dependencies: basic-auth: 2.0.1 @@ -9515,11 +7264,8 @@ packages: dev: true /https-proxy-agent@5.0.1: - resolution: - { - integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 debug: 4.3.4 @@ -9528,38 +7274,32 @@ packages: dev: true /human-signals@2.1.0: - resolution: - { - integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - } - engines: { node: '>=10.17.0' } + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} dev: true + /husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + dev: false + /iconv-lite@0.4.24: - resolution: - { - integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 /iconv-lite@0.6.3: - resolution: - { - integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: true /icss-utils@5.1.0(postcss@8.4.32): - resolution: - { - integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - } - engines: { node: ^10 || ^12 || >= 14 } + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: @@ -9567,65 +7307,44 @@ packages: dev: true /identity-obj-proxy@3.0.0: - resolution: - { - integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} + engines: {node: '>=4'} dependencies: harmony-reflect: 1.6.2 dev: true /ieee754@1.2.1: - resolution: - { - integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - } + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true /ignore@5.3.0: - resolution: - { - integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== - } - engines: { node: '>= 4' } + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} dev: true /image-size@0.5.5: - resolution: - { - integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} hasBin: true requiresBuild: true dev: true optional: true /immutable@4.3.4: - resolution: - { - integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== - } + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} dev: true /import-fresh@3.3.0: - resolution: - { - integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 dev: true /import-local@3.1.0: - resolution: - { - integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} hasBin: true dependencies: pkg-dir: 4.2.0 @@ -9633,49 +7352,31 @@ packages: dev: true /imurmurhash@0.1.4: - resolution: - { - integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - } - engines: { node: '>=0.8.19' } + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} dev: true /inflight@1.0.6: - resolution: - { - integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - } + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: true /inherits@2.0.3: - resolution: - { - integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - } + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} dev: true /inherits@2.0.4: - resolution: - { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - } + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} /ini@1.3.8: - resolution: - { - integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - } + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: false /internal-slot@1.0.6: - resolution: - { - integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.2 hasown: 2.0.0 @@ -9683,36 +7384,24 @@ packages: dev: true /ipaddr.js@1.9.1: - resolution: - { - integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - } - engines: { node: '>= 0.10' } + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} /ipaddr.js@2.1.0: - resolution: - { - integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== - } - engines: { node: '>= 10' } + resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} + engines: {node: '>= 10'} dev: true /is-arguments@1.1.1: - resolution: - { - integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 dev: true /is-array-buffer@3.0.2: - resolution: - { - integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== - } + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 @@ -9720,365 +7409,256 @@ packages: dev: true /is-arrayish@0.2.1: - resolution: - { - integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - } + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 dev: true /is-bigint@1.0.4: - resolution: - { - integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - } + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 dev: true /is-binary-path@2.1.0: - resolution: - { - integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 dev: true /is-boolean-object@1.1.2: - resolution: - { - integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 dev: true /is-buffer@1.1.6: - resolution: - { - integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - } + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} dev: false /is-callable@1.2.7: - resolution: - { - integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} dev: true /is-core-module@2.13.1: - resolution: - { - integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - } + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: hasown: 2.0.0 dev: true /is-date-object@1.0.5: - resolution: - { - integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true /is-docker@2.2.1: - resolution: - { - integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} hasBin: true dev: true /is-extendable@0.1.1: - resolution: - { - integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} dev: false /is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.5 dev: true /is-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} /is-generator-fn@2.1.0: - resolution: - { - integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 dev: true /is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 dev: true /is-interactive@1.0.0: - resolution: - { - integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} dev: true /is-map@2.0.2: - resolution: - { - integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== - } + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true /is-negative-zero@2.0.2: - resolution: - { - integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} dev: true /is-number-object@1.0.7: - resolution: - { - integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true /is-number@7.0.0: - resolution: - { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - } - engines: { node: '>=0.12.0' } + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} dev: true /is-path-inside@3.0.3: - resolution: - { - integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} dev: true /is-plain-obj@3.0.0: - resolution: - { - integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} dev: true /is-plain-object@2.0.4: - resolution: - { - integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 dev: true /is-potential-custom-element-name@1.0.1: - resolution: - { - integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - } + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true /is-regex@1.1.4: - resolution: - { - integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 dev: true /is-set@2.0.2: - resolution: - { - integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== - } + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} dev: true /is-shared-array-buffer@1.0.2: - resolution: - { - integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - } + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.5 dev: true /is-stream@2.0.1: - resolution: - { - integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} dev: true /is-string@1.0.7: - resolution: - { - integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true /is-symbol@1.0.4: - resolution: - { - integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true /is-typed-array@1.1.12: - resolution: - { - integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} dependencies: which-typed-array: 1.1.13 dev: true /is-unicode-supported@0.1.0: - resolution: - { - integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} dev: true /is-weakmap@2.0.1: - resolution: - { - integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== - } + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} dev: true /is-weakref@1.0.2: - resolution: - { - integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - } + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.5 dev: true /is-weakset@2.0.2: - resolution: - { - integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== - } + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 dev: true /is-what@3.14.1: - resolution: - { - integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== - } + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} dev: true /is-whitespace@0.3.0: - resolution: - { - integrity: sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==} + engines: {node: '>=0.10.0'} dev: false /is-wsl@2.2.0: - resolution: - { - integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} dependencies: is-docker: 2.2.1 dev: true /isarray@1.0.0: - resolution: - { - integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - } + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} /isarray@2.0.5: - resolution: - { - integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - } + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true /isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - } + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} /isobject@3.0.1: - resolution: - { - integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} dev: true /istanbul-lib-coverage@3.2.2: - resolution: - { - integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} dev: true /istanbul-lib-instrument@5.2.1: - resolution: - { - integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} dependencies: '@babel/core': 7.23.6 '@babel/parser': 7.23.6 @@ -10090,11 +7670,8 @@ packages: dev: true /istanbul-lib-instrument@6.0.1: - resolution: - { - integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} + engines: {node: '>=10'} dependencies: '@babel/core': 7.23.6 '@babel/parser': 7.23.6 @@ -10106,11 +7683,8 @@ packages: dev: true /istanbul-lib-report@3.0.1: - resolution: - { - integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 @@ -10118,11 +7692,8 @@ packages: dev: true /istanbul-lib-source-maps@4.0.1: - resolution: - { - integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} dependencies: debug: 4.3.4 istanbul-lib-coverage: 3.2.2 @@ -10132,40 +7703,38 @@ packages: dev: true /istanbul-reports@3.1.6: - resolution: - { - integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 dev: true /iterare@1.2.1: - resolution: - { - integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} + engines: {node: '>=6'} + + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 + dev: true /jackspeak@2.3.6: - resolution: - { - integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 /jake@10.8.7: - resolution: - { - integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} + engines: {node: '>=10'} hasBin: true dependencies: async: 3.2.5 @@ -10175,11 +7744,8 @@ packages: dev: true /jest-changed-files@29.7.0: - resolution: - { - integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 jest-util: 29.7.0 @@ -10187,11 +7753,8 @@ packages: dev: true /jest-circus@29.7.0: - resolution: - { - integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.7.0 '@jest/expect': 29.7.0 @@ -10219,11 +7782,8 @@ packages: dev: true /jest-cli@29.7.0(@types/node@18.16.9)(ts-node@10.9.1): - resolution: - { - integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -10250,11 +7810,8 @@ packages: dev: true /jest-config@29.7.0(@types/node@18.16.9)(ts-node@10.9.1): - resolution: - { - integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' ts-node: '>=9.0.0' @@ -10294,11 +7851,8 @@ packages: dev: true /jest-diff@29.7.0: - resolution: - { - integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 diff-sequences: 29.6.3 @@ -10307,21 +7861,15 @@ packages: dev: true /jest-docblock@29.7.0: - resolution: - { - integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true /jest-each@29.7.0: - resolution: - { - integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 @@ -10331,11 +7879,8 @@ packages: dev: true /jest-environment-jsdom@29.7.0: - resolution: - { - integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: @@ -10357,11 +7902,8 @@ packages: dev: true /jest-environment-node@29.7.0: - resolution: - { - integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 @@ -10372,19 +7914,13 @@ packages: dev: true /jest-get-type@29.6.3: - resolution: - { - integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true /jest-haste-map@29.7.0: - resolution: - { - integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 @@ -10402,22 +7938,16 @@ packages: dev: true /jest-leak-detector@29.7.0: - resolution: - { - integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 pretty-format: 29.7.0 dev: true /jest-matcher-utils@29.7.0: - resolution: - { - integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 jest-diff: 29.7.0 @@ -10426,11 +7956,8 @@ packages: dev: true /jest-message-util@29.7.0: - resolution: - { - integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.23.5 '@jest/types': 29.6.3 @@ -10444,11 +7971,8 @@ packages: dev: true /jest-mock@29.7.0: - resolution: - { - integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@types/node': 18.16.9 @@ -10456,11 +7980,8 @@ packages: dev: true /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - resolution: - { - integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} peerDependencies: jest-resolve: '*' peerDependenciesMeta: @@ -10471,19 +7992,13 @@ packages: dev: true /jest-regex-util@29.6.3: - resolution: - { - integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true /jest-resolve-dependencies@29.7.0: - resolution: - { - integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-regex-util: 29.6.3 jest-snapshot: 29.7.0 @@ -10492,11 +8007,8 @@ packages: dev: true /jest-resolve@29.7.0: - resolution: - { - integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 @@ -10510,11 +8022,8 @@ packages: dev: true /jest-runner@29.7.0: - resolution: - { - integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/console': 29.7.0 '@jest/environment': 29.7.0 @@ -10542,11 +8051,8 @@ packages: dev: true /jest-runtime@29.7.0: - resolution: - { - integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 @@ -10575,11 +8081,8 @@ packages: dev: true /jest-snapshot@29.7.0: - resolution: - { - integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.23.6 '@babel/generator': 7.23.6 @@ -10606,11 +8109,8 @@ packages: dev: true /jest-util@29.7.0: - resolution: - { - integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@types/node': 18.16.9 @@ -10621,11 +8121,8 @@ packages: dev: true /jest-validate@29.7.0: - resolution: - { - integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 camelcase: 6.3.0 @@ -10636,11 +8133,8 @@ packages: dev: true /jest-watcher@29.7.0: - resolution: - { - integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 @@ -10653,11 +8147,8 @@ packages: dev: true /jest-worker@27.5.1: - resolution: - { - integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - } - engines: { node: '>= 10.13.0' } + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} dependencies: '@types/node': 18.16.9 merge-stream: 2.0.0 @@ -10665,11 +8156,8 @@ packages: dev: true /jest-worker@29.7.0: - resolution: - { - integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@types/node': 18.16.9 jest-util: 29.7.0 @@ -10678,11 +8166,8 @@ packages: dev: true /jest@29.7.0(@types/node@18.16.9)(ts-node@10.9.1): - resolution: - { - integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -10702,19 +8187,13 @@ packages: dev: true /jiti@1.21.0: - resolution: - { - integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== - } + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true dev: true /js-beautify@1.14.11: - resolution: - { - integrity: sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==} + engines: {node: '>=14'} hasBin: true dependencies: config-chain: 1.1.13 @@ -10724,16 +8203,10 @@ packages: dev: false /js-tokens@4.0.0: - resolution: - { - integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - } + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} /js-yaml@3.14.1: - resolution: - { - integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - } + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true dependencies: argparse: 1.0.10 @@ -10741,21 +8214,14 @@ packages: dev: true /js-yaml@4.1.0: - resolution: - { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - } + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 - dev: true /jsdom@20.0.3: - resolution: - { - integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: @@ -10795,80 +8261,50 @@ packages: dev: true /jsesc@0.5.0: - resolution: - { - integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - } + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true dev: true /jsesc@2.5.2: - resolution: - { - integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} hasBin: true /json-buffer@3.0.1: - resolution: - { - integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - } + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true /json-parse-even-better-errors@2.3.1: - resolution: - { - integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - } + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true /json-schema-traverse@0.4.1: - resolution: - { - integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - } + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true /json-schema-traverse@1.0.0: - resolution: - { - integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - } + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: true /json-stable-stringify-without-jsonify@1.0.1: - resolution: - { - integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - } + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true /json5@1.0.2: - resolution: - { - integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - } + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true dependencies: minimist: 1.2.8 dev: true /json5@2.2.3: - resolution: - { - integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} hasBin: true /jsonc-eslint-parser@2.4.0: - resolution: - { - integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg== - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.11.2 eslint-visitor-keys: 3.4.3 @@ -10877,17 +8313,11 @@ packages: dev: true /jsonc-parser@3.2.0: - resolution: - { - integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== - } + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true /jsonfile@6.1.0: - resolution: - { - integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - } + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.1 optionalDependencies: @@ -10895,11 +8325,8 @@ packages: dev: true /jsonwebtoken@9.0.2: - resolution: - { - integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== - } - engines: { node: '>=12', npm: '>=6' } + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} dependencies: jws: 3.2.2 lodash.includes: 4.3.0 @@ -10914,11 +8341,8 @@ packages: dev: false /jsx-ast-utils@3.3.5: - resolution: - { - integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} dependencies: array-includes: 3.1.7 array.prototype.flat: 1.3.2 @@ -10927,10 +8351,7 @@ packages: dev: true /jwa@1.4.1: - resolution: - { - integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== - } + resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} dependencies: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 @@ -10938,97 +8359,64 @@ packages: dev: false /jws@3.2.2: - resolution: - { - integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== - } + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} dependencies: jwa: 1.4.1 safe-buffer: 5.2.1 dev: false /keyv@4.5.4: - resolution: - { - integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - } + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 dev: true /kind-of@3.2.2: - resolution: - { - integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} dependencies: is-buffer: 1.1.6 dev: false /kind-of@6.0.3: - resolution: - { - integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} dev: true /kleur@3.0.3: - resolution: - { - integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} dev: true /klona@2.0.6: - resolution: - { - integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} dev: true /language-subtag-registry@0.3.22: - resolution: - { - integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== - } + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true /language-tags@1.0.5: - resolution: - { - integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== - } + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} dependencies: language-subtag-registry: 0.3.22 dev: true /launch-editor@2.6.1: - resolution: - { - integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== - } + resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} dependencies: picocolors: 1.0.0 shell-quote: 1.8.1 dev: true /leac@0.6.0: - resolution: - { - integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg== - } + resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} dev: false /less-loader@11.1.0(less@4.1.3)(webpack@5.89.0): - resolution: - { - integrity: sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug== - } - engines: { node: '>= 14.15.0' } + resolution: {integrity: sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==} + engines: {node: '>= 14.15.0'} peerDependencies: less: ^3.5.0 || ^4.0.0 webpack: ^5.0.0 @@ -11039,11 +8427,8 @@ packages: dev: true /less@4.1.3: - resolution: - { - integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==} + engines: {node: '>=6'} hasBin: true dependencies: copy-anything: 2.0.6 @@ -11060,35 +8445,23 @@ packages: dev: true /leven@3.1.0: - resolution: - { - integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} dev: true /levn@0.4.1: - resolution: - { - integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 dev: true /libphonenumber-js@1.10.52: - resolution: - { - integrity: sha512-6vCuCHgem+OW1/VCAKgkasfegItCea8zIT7s9/CG/QxdCMIM7GfzbEBG5d7lGO3rzipjt5woOQL3DiHa8Fy78Q== - } + resolution: {integrity: sha512-6vCuCHgem+OW1/VCAKgkasfegItCea8zIT7s9/CG/QxdCMIM7GfzbEBG5d7lGO3rzipjt5woOQL3DiHa8Fy78Q==} /license-webpack-plugin@4.0.2(webpack@5.89.0): - resolution: - { - integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw== - } + resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} peerDependencies: webpack: '*' peerDependenciesMeta: @@ -11102,50 +8475,32 @@ packages: dev: true /lilconfig@2.1.0: - resolution: - { - integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} dev: true /lilconfig@3.0.0: - resolution: - { - integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} + engines: {node: '>=14'} dev: true /lines-and-columns@1.2.4: - resolution: - { - integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - } + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true /lines-and-columns@2.0.4: - resolution: - { - integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A== - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true /loader-runner@4.3.0: - resolution: - { - integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - } - engines: { node: '>=6.11.5' } + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} dev: true /loader-utils@2.0.4: - resolution: - { - integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== - } - engines: { node: '>=8.9.0' } + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} dependencies: big.js: 5.2.2 emojis-list: 3.0.0 @@ -11153,205 +8508,130 @@ packages: dev: true /locate-path@5.0.0: - resolution: - { - integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} dependencies: p-locate: 4.1.0 dev: true /locate-path@6.0.0: - resolution: - { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: p-locate: 5.0.0 dev: true /locate-path@7.2.0: - resolution: - { - integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-locate: 6.0.0 dev: true /lodash.debounce@4.0.8: - resolution: - { - integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - } + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: true /lodash.includes@4.3.0: - resolution: - { - integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== - } + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} dev: false /lodash.isboolean@3.0.3: - resolution: - { - integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== - } + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} dev: false /lodash.isinteger@4.0.4: - resolution: - { - integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== - } + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} dev: false /lodash.isnumber@3.0.3: - resolution: - { - integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== - } + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} dev: false /lodash.isplainobject@4.0.6: - resolution: - { - integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== - } + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} dev: false /lodash.isstring@4.0.1: - resolution: - { - integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== - } + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} dev: false /lodash.memoize@4.1.2: - resolution: - { - integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - } + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} dev: true /lodash.merge@4.6.2: - resolution: - { - integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - } + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true /lodash.once@4.1.1: - resolution: - { - integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== - } + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} dev: false /lodash.uniq@4.5.0: - resolution: - { - integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== - } + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} dev: true /lodash@4.17.21: - resolution: - { - integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - } + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} /log-symbols@4.1.0: - resolution: - { - integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 dev: true /loose-envify@1.4.0: - resolution: - { - integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - } + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 /lower-case@2.0.2: - resolution: - { - integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - } + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: tslib: 2.6.2 dev: true /lru-cache@10.1.0: - resolution: - { - integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== - } - engines: { node: 14 || >=16.14 } + resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + engines: {node: 14 || >=16.14} /lru-cache@5.1.1: - resolution: - { - integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - } + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 /lru-cache@6.0.0: - resolution: - { - integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} dependencies: yallist: 4.0.0 /lz-string@1.5.0: - resolution: - { - integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== - } + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true dev: true /magic-string@0.30.0: - resolution: - { - integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} + engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 dev: true /magic-string@0.30.1: - resolution: - { - integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} + engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 dev: true /make-dir@2.1.0: - resolution: - { - integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} requiresBuild: true dependencies: pify: 4.0.1 @@ -11360,139 +8640,88 @@ packages: optional: true /make-dir@4.0.0: - resolution: - { - integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} dependencies: semver: 7.5.4 dev: true /make-error@1.3.6: - resolution: - { - integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - } + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true /makeerror@1.0.12: - resolution: - { - integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - } + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 dev: true /mdn-data@2.0.28: - resolution: - { - integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== - } + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} dev: true /mdn-data@2.0.30: - resolution: - { - integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== - } + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} dev: true /media-typer@0.3.0: - resolution: - { - integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} /memfs@3.5.3: - resolution: - { - integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw== - } - engines: { node: '>= 4.0.0' } + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} dependencies: fs-monkey: 1.0.5 dev: true /merge-descriptors@1.0.1: - resolution: - { - integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - } + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} /merge-stream@2.0.0: - resolution: - { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - } + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true /merge2@1.4.1: - resolution: - { - integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} dev: true /methods@1.1.2: - resolution: - { - integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} /micromatch@4.0.5: - resolution: - { - integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - } - engines: { node: '>=8.6' } + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 dev: true /mime-db@1.52.0: - resolution: - { - integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} /mime-types@2.1.35: - resolution: - { - integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 /mime@1.6.0: - resolution: - { - integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} hasBin: true /mimic-fn@2.1.0: - resolution: - { - integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} dev: true /mini-css-extract-plugin@2.4.7(webpack@5.89.0): - resolution: - { - integrity: sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg== - } - engines: { node: '>= 12.13.0' } + resolution: {integrity: sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==} + engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: @@ -11501,112 +8730,70 @@ packages: dev: true /minimalistic-assert@1.0.1: - resolution: - { - integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - } + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} dev: true /minimatch@3.0.5: - resolution: - { - integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== - } + resolution: {integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==} dependencies: brace-expansion: 1.1.11 dev: true /minimatch@3.1.2: - resolution: - { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - } + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: true /minimatch@5.1.6: - resolution: - { - integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 dev: true /minimatch@9.0.1: - resolution: - { - integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w== - } - engines: { node: '>=16 || 14 >=14.17' } + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 dev: false /minimatch@9.0.3: - resolution: - { - integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - } - engines: { node: '>=16 || 14 >=14.17' } + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 /minimist@1.2.8: - resolution: - { - integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - } + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} /minipass@7.0.4: - resolution: - { - integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== - } - engines: { node: '>=16 || 14 >=14.17' } + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} /mkdirp@0.5.6: - resolution: - { - integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - } + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true dependencies: minimist: 1.2.8 /moment@2.29.4: - resolution: - { - integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== - } + resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} dev: false /ms@2.0.0: - resolution: - { - integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - } + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} /ms@2.1.2: - resolution: - { - integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - } + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} /ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - } + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} /multer@1.4.4-lts.1: - resolution: - { - integrity: sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg== - } - engines: { node: '>= 6.0.0' } + resolution: {integrity: sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==} + engines: {node: '>= 6.0.0'} dependencies: append-field: 1.0.0 busboy: 1.6.0 @@ -11617,10 +8804,7 @@ packages: xtend: 4.0.2 /multicast-dns@7.2.5: - resolution: - { - integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== - } + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} hasBin: true dependencies: dns-packet: 5.6.1 @@ -11628,10 +8812,7 @@ packages: dev: true /mz@2.7.0: - resolution: - { - integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - } + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: any-promise: 1.3.0 object-assign: 4.1.1 @@ -11639,26 +8820,17 @@ packages: dev: true /nanoid@3.3.7: - resolution: - { - integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true /natural-compare@1.4.0: - resolution: - { - integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - } + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true /needle@3.3.1: - resolution: - { - integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q== - } - engines: { node: '>= 4.4.x' } + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} hasBin: true requiresBuild: true dependencies: @@ -11668,86 +8840,66 @@ packages: optional: true /negotiator@0.6.3: - resolution: - { - integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} /neo-async@2.6.2: - resolution: - { - integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - } - dev: true - - /next@13.4.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0): - resolution: - { - integrity: sha512-C5S0ysM0Ily9McL4Jb48nOQHT1BukOWI59uC3X/xCMlYIh9rJZCv7nzG92J6e1cOBqQbKovlpgvHWFmz4eKKEA== - } - engines: { node: '>=16.8.0' } + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /next@14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==} + engines: {node: '>=18.17.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 - fibers: '>= 3.1.0' react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true - fibers: - optional: true sass: optional: true dependencies: - '@next/env': 13.4.4 - '@swc/helpers': 0.5.1 + '@next/env': 14.0.4 + '@swc/helpers': 0.5.2 busboy: 1.6.0 caniuse-lite: 1.0.30001571 - postcss: 8.4.14 + graceful-fs: 4.2.11 + postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(@babel/core@7.23.6)(react@18.2.0) - zod: 3.21.4 + watchpack: 2.4.0 optionalDependencies: - '@next/swc-darwin-arm64': 13.4.4 - '@next/swc-darwin-x64': 13.4.4 - '@next/swc-linux-arm64-gnu': 13.4.4 - '@next/swc-linux-arm64-musl': 13.4.4 - '@next/swc-linux-x64-gnu': 13.4.4 - '@next/swc-linux-x64-musl': 13.4.4 - '@next/swc-win32-arm64-msvc': 13.4.4 - '@next/swc-win32-ia32-msvc': 13.4.4 - '@next/swc-win32-x64-msvc': 13.4.4 + '@next/swc-darwin-arm64': 14.0.4 + '@next/swc-darwin-x64': 14.0.4 + '@next/swc-linux-arm64-gnu': 14.0.4 + '@next/swc-linux-arm64-musl': 14.0.4 + '@next/swc-linux-x64-gnu': 14.0.4 + '@next/swc-linux-x64-musl': 14.0.4 + '@next/swc-win32-arm64-msvc': 14.0.4 + '@next/swc-win32-ia32-msvc': 14.0.4 + '@next/swc-win32-x64-msvc': 14.0.4 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros /no-case@3.0.4: - resolution: - { - integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - } + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 tslib: 2.6.2 dev: true /node-abort-controller@3.1.1: - resolution: - { - integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== - } + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} dev: true /node-fetch@2.7.0: - resolution: - { - integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - } - engines: { node: 4.x || >=6.0.0 } + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 peerDependenciesMeta: @@ -11757,66 +8909,42 @@ packages: whatwg-url: 5.0.0 /node-forge@1.3.1: - resolution: - { - integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - } - engines: { node: '>= 6.13.0' } + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} dev: true /node-int64@0.4.0: - resolution: - { - integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - } + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true /node-machine-id@1.1.12: - resolution: - { - integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== - } + resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} dev: true /node-releases@2.0.14: - resolution: - { - integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - } + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} /nopt@7.2.0: - resolution: - { - integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA== - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true dependencies: abbrev: 2.0.0 dev: false /normalize-path@3.0.0: - resolution: - { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} dev: true /normalize-range@0.1.2: - resolution: - { - integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} dev: true /npm-package-arg@11.0.1: - resolution: - { - integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ== - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} + engines: {node: ^16.14.0 || >=18.0.0} dependencies: hosted-git-info: 7.0.1 proc-log: 3.0.0 @@ -11825,36 +8953,24 @@ packages: dev: true /npm-run-path@4.0.1: - resolution: - { - integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} dependencies: path-key: 3.1.1 dev: true /nth-check@2.1.1: - resolution: - { - integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - } + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: boolbase: 1.0.0 dev: true /nwsapi@2.2.7: - resolution: - { - integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== - } + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true /nx@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101): - resolution: - { - integrity: sha512-pf94ri36cAiSzbYcPTJwQzttgAsHSjCLEni0Ilw6aVdjpoV2l6cggYxwddX7pgtCWuokVp/6KhAxVkbzvH65wg== - } + resolution: {integrity: sha512-pf94ri36cAiSzbYcPTJwQzttgAsHSjCLEni0Ilw6aVdjpoV2l6cggYxwddX7pgtCWuokVp/6KhAxVkbzvH65wg==} hasBin: true requiresBuild: true peerDependencies: @@ -11919,10 +9035,7 @@ packages: dev: true /nx@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101): - resolution: - { - integrity: sha512-CnssDvDphAgyeoYzdPbz6vA/xac4BQeEiO7R9IBLIm+l1MV7boI4SpCS6abR4dbp4VTwI9uBQ9vgqNwCiEjoWg== - } + resolution: {integrity: sha512-CnssDvDphAgyeoYzdPbz6vA/xac4BQeEiO7R9IBLIm+l1MV7boI4SpCS6abR4dbp4VTwI9uBQ9vgqNwCiEjoWg==} hasBin: true requiresBuild: true peerDependencies: @@ -11986,51 +9099,33 @@ packages: dev: true /object-assign@4.1.1: - resolution: - { - integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} /object-hash@3.0.0: - resolution: - { - integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} dev: true /object-inspect@1.13.1: - resolution: - { - integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - } + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} /object-is@1.1.5: - resolution: - { - integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 dev: true /object-keys@1.1.1: - resolution: - { - integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} dev: true /object.assign@4.1.5: - resolution: - { - integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -12039,11 +9134,8 @@ packages: dev: true /object.entries@1.1.7: - resolution: - { - integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -12051,33 +9143,33 @@ packages: dev: true /object.fromentries@2.0.7: - resolution: - { - integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + get-intrinsic: 1.2.2 dev: true /object.hasown@1.1.3: - resolution: - { - integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== - } + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} dependencies: define-properties: 1.2.1 es-abstract: 1.22.3 dev: true /object.values@1.1.7: - resolution: - { - integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -12085,54 +9177,36 @@ packages: dev: true /obuf@1.1.2: - resolution: - { - integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - } + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} dev: true /on-finished@2.4.1: - resolution: - { - integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 /on-headers@1.0.2: - resolution: - { - integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} dev: true /once@1.4.0: - resolution: - { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - } + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: true /onetime@5.1.2: - resolution: - { - integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 dev: true /open@8.4.2: - resolution: - { - integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 @@ -12140,19 +9214,13 @@ packages: dev: true /opener@1.5.2: - resolution: - { - integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - } + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true dev: true /optionator@0.9.3: - resolution: - { - integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} dependencies: '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 @@ -12163,11 +9231,8 @@ packages: dev: true /ora@5.3.0: - resolution: - { - integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} + engines: {node: '>=10'} dependencies: bl: 4.1.0 chalk: 4.1.2 @@ -12180,11 +9245,8 @@ packages: dev: true /ora@5.4.1: - resolution: - { - integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} dependencies: bl: 4.1.0 chalk: 4.1.2 @@ -12198,100 +9260,70 @@ packages: dev: true /p-limit@2.3.0: - resolution: - { - integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} dependencies: p-try: 2.2.0 dev: true /p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 dev: true /p-limit@4.0.0: - resolution: - { - integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 dev: true /p-locate@4.1.0: - resolution: - { - integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} dependencies: p-limit: 2.3.0 dev: true /p-locate@5.0.0: - resolution: - { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} dependencies: p-limit: 3.1.0 dev: true /p-locate@6.0.0: - resolution: - { - integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-limit: 4.0.0 dev: true /p-retry@4.6.2: - resolution: - { - integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} dependencies: '@types/retry': 0.12.0 retry: 0.13.1 dev: true /p-try@2.2.0: - resolution: - { - integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} dev: true /parent-module@1.0.1: - resolution: - { - integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} dependencies: callsites: 3.1.0 dev: true /parse-json@5.2.0: - resolution: - { - integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} dependencies: '@babel/code-frame': 7.23.5 error-ex: 1.3.2 @@ -12300,70 +9332,46 @@ packages: dev: true /parse-node-version@1.0.1: - resolution: - { - integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== - } - engines: { node: '>= 0.10' } + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} dev: true /parse5@4.0.0: - resolution: - { - integrity: sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== - } + resolution: {integrity: sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==} dev: true /parse5@7.1.2: - resolution: - { - integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== - } + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 dev: true /parseley@0.12.1: - resolution: - { - integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw== - } + resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} dependencies: leac: 0.6.0 peberminta: 0.9.0 dev: false /parseurl@1.3.3: - resolution: - { - integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} /passport-jwt@4.0.1: - resolution: - { - integrity: sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ== - } + resolution: {integrity: sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==} dependencies: jsonwebtoken: 9.0.2 passport-strategy: 1.0.0 dev: false /passport-strategy@1.0.0: - resolution: - { - integrity: sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA== - } - engines: { node: '>= 0.4.0' } + resolution: {integrity: sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==} + engines: {node: '>= 0.4.0'} dev: false /passport@0.7.0: - resolution: - { - integrity: sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ== - } - engines: { node: '>= 0.4.0' } + resolution: {integrity: sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==} + engines: {node: '>= 0.4.0'} dependencies: passport-strategy: 1.0.0 pause: 0.0.1 @@ -12371,161 +9379,101 @@ packages: dev: false /path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} dev: true /path-exists@5.0.0: - resolution: - { - integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true /path-is-absolute@1.0.1: - resolution: - { - integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} dev: true /path-key@3.1.1: - resolution: - { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} /path-parse@1.0.7: - resolution: - { - integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - } + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true /path-scurry@1.10.1: - resolution: - { - integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== - } - engines: { node: '>=16 || 14 >=14.17' } + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: lru-cache: 10.1.0 minipass: 7.0.4 /path-to-regexp@0.1.7: - resolution: - { - integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - } + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} /path-to-regexp@3.2.0: - resolution: - { - integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA== - } + resolution: {integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==} /path-type@4.0.0: - resolution: - { - integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} dev: true /pause@0.0.1: - resolution: - { - integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg== - } + resolution: {integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==} dev: false /peberminta@0.9.0: - resolution: - { - integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ== - } + resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} dev: false /picocolors@1.0.0: - resolution: - { - integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - } + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} /picomatch@2.3.1: - resolution: - { - integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - } - engines: { node: '>=8.6' } + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} dev: true /pify@2.3.0: - resolution: - { - integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} dev: true /pify@4.0.1: - resolution: - { - integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} requiresBuild: true dev: true optional: true /pirates@4.0.6: - resolution: - { - integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} dev: true /pkg-dir@4.2.0: - resolution: - { - integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} dependencies: find-up: 4.1.0 dev: true /pkg-dir@7.0.0: - resolution: - { - integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== - } - engines: { node: '>=14.16' } + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} dependencies: find-up: 6.3.0 dev: true /pluralize@8.0.0: - resolution: - { - integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} dev: true /portfinder@1.0.32: - resolution: - { - integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== - } - engines: { node: '>= 0.12.0' } + resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} + engines: {node: '>= 0.12.0'} dependencies: async: 2.6.4 debug: 3.2.7 @@ -12535,11 +9483,8 @@ packages: dev: true /postcss-calc@9.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.2 dependencies: @@ -12549,11 +9494,8 @@ packages: dev: true /postcss-colormin@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-Tb9aR2wCJCzKuNjIeMzVNd0nXjQy25HDgFmmaRsHnP0eP/k8uQWE4S8voX5S2coO5CeKrp+USFs1Ayv9Tpxx6w== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-Tb9aR2wCJCzKuNjIeMzVNd0nXjQy25HDgFmmaRsHnP0eP/k8uQWE4S8voX5S2coO5CeKrp+USFs1Ayv9Tpxx6w==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12565,11 +9507,8 @@ packages: dev: true /postcss-convert-values@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-zTd4Vh0HxGkhg5aHtfCogcRHzGkvblfdWlQ53lIh1cJhYcGyIxh2hgtKoVh40AMktRERet+JKdB04nNG19kjmA== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-zTd4Vh0HxGkhg5aHtfCogcRHzGkvblfdWlQ53lIh1cJhYcGyIxh2hgtKoVh40AMktRERet+JKdB04nNG19kjmA==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12579,11 +9518,8 @@ packages: dev: true /postcss-discard-comments@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-f1KYNPtqYLUeZGCHQPKzzFtsHaRuECe6jLakf/RjSRqvF5XHLZnM2+fXLhb8Qh/HBFHs3M4cSLb1k3B899RYIg== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-f1KYNPtqYLUeZGCHQPKzzFtsHaRuECe6jLakf/RjSRqvF5XHLZnM2+fXLhb8Qh/HBFHs3M4cSLb1k3B899RYIg==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12591,11 +9527,8 @@ packages: dev: true /postcss-discard-duplicates@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-1hvUs76HLYR8zkScbwyJ8oJEugfPV+WchpnA+26fpJ7Smzs51CzGBHC32RS03psuX/2l0l0UKh2StzNxOrKCYg== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-1hvUs76HLYR8zkScbwyJ8oJEugfPV+WchpnA+26fpJ7Smzs51CzGBHC32RS03psuX/2l0l0UKh2StzNxOrKCYg==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12603,11 +9536,8 @@ packages: dev: true /postcss-discard-empty@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-yitcmKwmVWtNsrrRqGJ7/C0YRy53i0mjexBDQ9zYxDwTWVBgbU4+C9jIZLmQlTDT9zhml+u0OMFJh8+31krmOg== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-yitcmKwmVWtNsrrRqGJ7/C0YRy53i0mjexBDQ9zYxDwTWVBgbU4+C9jIZLmQlTDT9zhml+u0OMFJh8+31krmOg==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12615,11 +9545,8 @@ packages: dev: true /postcss-discard-overridden@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-qs0ehZMMZpSESbRkw1+inkf51kak6OOzNRaoLd/U7Fatp0aN2HQ1rxGOrJvYcRAN9VpX8kUF13R2ofn8OlvFVA== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-qs0ehZMMZpSESbRkw1+inkf51kak6OOzNRaoLd/U7Fatp0aN2HQ1rxGOrJvYcRAN9VpX8kUF13R2ofn8OlvFVA==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12627,11 +9554,8 @@ packages: dev: true /postcss-import@14.1.0(postcss@8.4.32): - resolution: - { - integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== - } - engines: { node: '>=10.0.0' } + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: @@ -12642,11 +9566,8 @@ packages: dev: true /postcss-import@15.1.0(postcss@8.4.32): - resolution: - { - integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== - } - engines: { node: '>=14.0.0' } + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: @@ -12657,11 +9578,8 @@ packages: dev: true /postcss-js@4.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== - } - engines: { node: ^12 || ^14 || >= 16 } + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: @@ -12670,11 +9588,8 @@ packages: dev: true /postcss-load-config@4.0.2(postcss@8.4.32)(ts-node@10.9.1): - resolution: - { - integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== - } - engines: { node: '>= 14' } + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} peerDependencies: postcss: '>=8.0.9' ts-node: '>=9.0.0' @@ -12691,11 +9606,8 @@ packages: dev: true /postcss-loader@6.2.1(postcss@8.4.32)(webpack@5.89.0): - resolution: - { - integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== - } - engines: { node: '>= 12.13.0' } + resolution: {integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==} + engines: {node: '>= 12.13.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 @@ -12708,11 +9620,8 @@ packages: dev: true /postcss-merge-longhand@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-vmr/HZQzaPXc45FRvSctqFTF05UaDnTn5ABX+UtQPJznDWT/QaFbVc/pJ5C2YPxx2J2XcfmWowlKwtCDwiQ5hA== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-vmr/HZQzaPXc45FRvSctqFTF05UaDnTn5ABX+UtQPJznDWT/QaFbVc/pJ5C2YPxx2J2XcfmWowlKwtCDwiQ5hA==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12722,11 +9631,8 @@ packages: dev: true /postcss-merge-rules@6.0.2(postcss@8.4.32): - resolution: - { - integrity: sha512-6lm8bl0UfriSfxI+F/cezrebqqP8w702UC6SjZlUlBYwuRVNbmgcJuQU7yePIvD4MNT53r/acQCUAyulrpgmeQ== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-6lm8bl0UfriSfxI+F/cezrebqqP8w702UC6SjZlUlBYwuRVNbmgcJuQU7yePIvD4MNT53r/acQCUAyulrpgmeQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12738,11 +9644,8 @@ packages: dev: true /postcss-minify-font-values@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-tIwmF1zUPoN6xOtA/2FgVk1ZKrLcCvE0dpZLtzyyte0j9zUeB8RTbCqrHZGjJlxOvNWKMYtunLrrl7HPOiR46w== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-tIwmF1zUPoN6xOtA/2FgVk1ZKrLcCvE0dpZLtzyyte0j9zUeB8RTbCqrHZGjJlxOvNWKMYtunLrrl7HPOiR46w==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12751,11 +9654,8 @@ packages: dev: true /postcss-minify-gradients@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-M1RJWVjd6IOLPl1hYiOd5HQHgpp6cvJVLrieQYS9y07Yo8itAr6jaekzJphaJFR0tcg4kRewCk3kna9uHBxn/w== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-M1RJWVjd6IOLPl1hYiOd5HQHgpp6cvJVLrieQYS9y07Yo8itAr6jaekzJphaJFR0tcg4kRewCk3kna9uHBxn/w==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12766,11 +9666,8 @@ packages: dev: true /postcss-minify-params@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-eFvGWArqh4khPIgPDu6SZNcaLctx97nO7c59OXnRtGntAp5/VS4gjMhhW9qUFsK6mQ27pEZGt2kR+mPizI+Z9g== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-eFvGWArqh4khPIgPDu6SZNcaLctx97nO7c59OXnRtGntAp5/VS4gjMhhW9qUFsK6mQ27pEZGt2kR+mPizI+Z9g==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12781,11 +9678,8 @@ packages: dev: true /postcss-minify-selectors@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-mfReq5wrS6vkunxvJp6GDuOk+Ak6JV7134gp8L+ANRnV9VwqzTvBtX6lpohooVU750AR0D3pVx2Zn6uCCwOAfQ== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-mfReq5wrS6vkunxvJp6GDuOk+Ak6JV7134gp8L+ANRnV9VwqzTvBtX6lpohooVU750AR0D3pVx2Zn6uCCwOAfQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12794,11 +9688,8 @@ packages: dev: true /postcss-modules-extract-imports@3.0.0(postcss@8.4.32): - resolution: - { - integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - } - engines: { node: ^10 || ^12 || >= 14 } + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: @@ -12806,11 +9697,8 @@ packages: dev: true /postcss-modules-local-by-default@4.0.3(postcss@8.4.32): - resolution: - { - integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== - } - engines: { node: ^10 || ^12 || >= 14 } + resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==} + engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: @@ -12821,11 +9709,8 @@ packages: dev: true /postcss-modules-scope@3.1.0(postcss@8.4.32): - resolution: - { - integrity: sha512-SaIbK8XW+MZbd0xHPf7kdfA/3eOt7vxJ72IRecn3EzuZVLr1r0orzf0MX/pN8m+NMDoo6X/SQd8oeKqGZd8PXg== - } - engines: { node: ^10 || ^12 || >= 14 } + resolution: {integrity: sha512-SaIbK8XW+MZbd0xHPf7kdfA/3eOt7vxJ72IRecn3EzuZVLr1r0orzf0MX/pN8m+NMDoo6X/SQd8oeKqGZd8PXg==} + engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: @@ -12834,11 +9719,8 @@ packages: dev: true /postcss-modules-values@4.0.0(postcss@8.4.32): - resolution: - { - integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - } - engines: { node: ^10 || ^12 || >= 14 } + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: @@ -12847,11 +9729,8 @@ packages: dev: true /postcss-nested@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== - } - engines: { node: '>=12.0' } + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: @@ -12860,11 +9739,8 @@ packages: dev: true /postcss-normalize-charset@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-aW5LbMNRZ+oDV57PF9K+WI1Z8MPnF+A8qbajg/T8PP126YrGX1f9IQx21GI2OlGz7XFJi/fNi0GTbY948XJtXg== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-aW5LbMNRZ+oDV57PF9K+WI1Z8MPnF+A8qbajg/T8PP126YrGX1f9IQx21GI2OlGz7XFJi/fNi0GTbY948XJtXg==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12872,11 +9748,8 @@ packages: dev: true /postcss-normalize-display-values@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-mc3vxp2bEuCb4LgCcmG1y6lKJu1Co8T+rKHrcbShJwUmKJiEl761qb/QQCfFwlrvSeET3jksolCR/RZuMURudw== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-mc3vxp2bEuCb4LgCcmG1y6lKJu1Co8T+rKHrcbShJwUmKJiEl761qb/QQCfFwlrvSeET3jksolCR/RZuMURudw==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12885,11 +9758,8 @@ packages: dev: true /postcss-normalize-positions@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-HRsq8u/0unKNvm0cvwxcOUEcakFXqZ41fv3FOdPn916XFUrympjr+03oaLkuZENz3HE9RrQE9yU0Xv43ThWjQg== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-HRsq8u/0unKNvm0cvwxcOUEcakFXqZ41fv3FOdPn916XFUrympjr+03oaLkuZENz3HE9RrQE9yU0Xv43ThWjQg==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12898,11 +9768,8 @@ packages: dev: true /postcss-normalize-repeat-style@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-Gbb2nmCy6tTiA7Sh2MBs3fj9W8swonk6lw+dFFeQT68B0Pzwp1kvisJQkdV6rbbMSd9brMlS8I8ts52tAGWmGQ== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-Gbb2nmCy6tTiA7Sh2MBs3fj9W8swonk6lw+dFFeQT68B0Pzwp1kvisJQkdV6rbbMSd9brMlS8I8ts52tAGWmGQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12911,11 +9778,8 @@ packages: dev: true /postcss-normalize-string@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-5Fhx/+xzALJD9EI26Aq23hXwmv97Zfy2VFrt5PLT8lAhnBIZvmaT5pQk+NuJ/GWj/QWaKSKbnoKDGLbV6qnhXg== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-5Fhx/+xzALJD9EI26Aq23hXwmv97Zfy2VFrt5PLT8lAhnBIZvmaT5pQk+NuJ/GWj/QWaKSKbnoKDGLbV6qnhXg==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12924,11 +9788,8 @@ packages: dev: true /postcss-normalize-timing-functions@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-4zcczzHqmCU7L5dqTB9rzeqPWRMc0K2HoR+Bfl+FSMbqGBUcP5LRfgcH4BdRtLuzVQK1/FHdFoGT3F7rkEnY+g== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-4zcczzHqmCU7L5dqTB9rzeqPWRMc0K2HoR+Bfl+FSMbqGBUcP5LRfgcH4BdRtLuzVQK1/FHdFoGT3F7rkEnY+g==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12937,11 +9798,8 @@ packages: dev: true /postcss-normalize-unicode@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-ok9DsI94nEF79MkvmLfHfn8ddnKXA7w+8YuUoz5m7b6TOdoaRCpvu/QMHXQs9+DwUbvp+ytzz04J55CPy77PuQ== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-ok9DsI94nEF79MkvmLfHfn8ddnKXA7w+8YuUoz5m7b6TOdoaRCpvu/QMHXQs9+DwUbvp+ytzz04J55CPy77PuQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12951,11 +9809,8 @@ packages: dev: true /postcss-normalize-url@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-jEXL15tXSvbjm0yzUV7FBiEXwhIa9H88JOXDGQzmcWoB4mSjZIsmtto066s2iW9FYuIrIF4k04HA2BKAOpbsaQ== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-jEXL15tXSvbjm0yzUV7FBiEXwhIa9H88JOXDGQzmcWoB4mSjZIsmtto066s2iW9FYuIrIF4k04HA2BKAOpbsaQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12964,11 +9819,8 @@ packages: dev: true /postcss-normalize-whitespace@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-76i3NpWf6bB8UHlVuLRxG4zW2YykF9CTEcq/9LGAiz2qBuX5cBStadkk0jSkg9a9TCIXbMQz7yzrygKoCW9JuA== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-76i3NpWf6bB8UHlVuLRxG4zW2YykF9CTEcq/9LGAiz2qBuX5cBStadkk0jSkg9a9TCIXbMQz7yzrygKoCW9JuA==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12977,11 +9829,8 @@ packages: dev: true /postcss-ordered-values@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-XXbb1O/MW9HdEhnBxitZpPFbIvDgbo9NK4c/5bOfiKpnIGZDoL2xd7/e6jW5DYLsWxBbs+1nZEnVgnjnlFViaA== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-XXbb1O/MW9HdEhnBxitZpPFbIvDgbo9NK4c/5bOfiKpnIGZDoL2xd7/e6jW5DYLsWxBbs+1nZEnVgnjnlFViaA==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -12991,11 +9840,8 @@ packages: dev: true /postcss-reduce-initial@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-cgzsI2ThG1PMSdSyM9A+bVxiiVgPIVz9f5c6H+TqEv0CA89iCOO81mwLWRWLgOKFtQkKob9nNpnkxG/1RlgFcA== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-cgzsI2ThG1PMSdSyM9A+bVxiiVgPIVz9f5c6H+TqEv0CA89iCOO81mwLWRWLgOKFtQkKob9nNpnkxG/1RlgFcA==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -13005,11 +9851,8 @@ packages: dev: true /postcss-reduce-transforms@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-fUbV81OkUe75JM+VYO1gr/IoA2b/dRiH6HvMwhrIBSUrxq3jNZQZitSnugcTLDi1KkQh1eR/zi+iyxviUNBkcQ== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-fUbV81OkUe75JM+VYO1gr/IoA2b/dRiH6HvMwhrIBSUrxq3jNZQZitSnugcTLDi1KkQh1eR/zi+iyxviUNBkcQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -13018,22 +9861,16 @@ packages: dev: true /postcss-selector-parser@6.0.13: - resolution: - { - integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 dev: true /postcss-svgo@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-eWV4Rrqa06LzTgqirOv5Ln6WTGyU7Pbeqj9WEyKo9tpnWixNATVJMeaEcOHOW1ZYyjcG8wSJwX/28DvU3oy3HA== - } - engines: { node: ^14 || ^16 || >= 18 } + resolution: {integrity: sha512-eWV4Rrqa06LzTgqirOv5Ln6WTGyU7Pbeqj9WEyKo9tpnWixNATVJMeaEcOHOW1ZYyjcG8wSJwX/28DvU3oy3HA==} + engines: {node: ^14 || ^16 || >= 18} peerDependencies: postcss: ^8.4.31 dependencies: @@ -13043,11 +9880,8 @@ packages: dev: true /postcss-unique-selectors@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-/KCCEpNNR7oXVJ38/Id7GC9Nt0zxO1T3zVbhVaq6F6LSG+3gU3B7+QuTHfD0v8NPEHlzewAout29S0InmB78EQ== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-/KCCEpNNR7oXVJ38/Id7GC9Nt0zxO1T3zVbhVaq6F6LSG+3gU3B7+QuTHfD0v8NPEHlzewAout29S0InmB78EQ==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -13056,29 +9890,20 @@ packages: dev: true /postcss-value-parser@4.2.0: - resolution: - { - integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - } + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true - /postcss@8.4.14: - resolution: - { - integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== - } - engines: { node: ^10 || ^12 || >=14 } + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 /postcss@8.4.32: - resolution: - { - integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw== - } - engines: { node: ^10 || ^12 || >=14 } + resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} + engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 picocolors: 1.0.0 @@ -13086,28 +9911,19 @@ packages: dev: true /prelude-ls@1.2.1: - resolution: - { - integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} dev: true /prettier@2.8.8: - resolution: - { - integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - } - engines: { node: '>=10.13.0' } + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} hasBin: true dev: true /pretty-format@27.5.1: - resolution: - { - integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: ansi-regex: 5.0.1 ansi-styles: 5.2.0 @@ -13115,11 +9931,8 @@ packages: dev: true /pretty-format@29.7.0: - resolution: - { - integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 @@ -13127,11 +9940,8 @@ packages: dev: true /pretty@2.0.0: - resolution: - { - integrity: sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==} + engines: {node: '>=0.10.0'} dependencies: condense-newlines: 0.2.1 extend-shallow: 2.0.1 @@ -13139,46 +9949,31 @@ packages: dev: false /prisma@5.7.1: - resolution: - { - integrity: sha512-ekho7ziH0WEJvC4AxuJz+ewRTMskrebPcrKuBwcNzVDniYxx+dXOGcorNeIb9VEMO5vrKzwNYvhD271Ui2jnNw== - } - engines: { node: '>=16.13' } + resolution: {integrity: sha512-ekho7ziH0WEJvC4AxuJz+ewRTMskrebPcrKuBwcNzVDniYxx+dXOGcorNeIb9VEMO5vrKzwNYvhD271Ui2jnNw==} + engines: {node: '>=16.13'} hasBin: true requiresBuild: true dependencies: '@prisma/engines': 5.7.1 /proc-log@3.0.0: - resolution: - { - integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true /process-nextick-args@2.0.1: - resolution: - { - integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - } + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} /prompts@2.4.2: - resolution: - { - integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 dev: true /prop-types@15.8.1: - resolution: - { - integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - } + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 @@ -13186,114 +9981,72 @@ packages: dev: true /proto-list@1.2.4: - resolution: - { - integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - } + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: false /proxy-addr@2.0.7: - resolution: - { - integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - } - engines: { node: '>= 0.10' } + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 /proxy-from-env@1.1.0: - resolution: - { - integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - } + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} /prr@1.0.1: - resolution: - { - integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== - } + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} requiresBuild: true dev: true optional: true /psl@1.9.0: - resolution: - { - integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - } + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true /punycode@2.3.1: - resolution: - { - integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} dev: true /pure-rand@6.0.4: - resolution: - { - integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== - } + resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} dev: true /qs@6.11.0: - resolution: - { - integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - } - engines: { node: '>=0.6' } + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} dependencies: side-channel: 1.0.4 /qs@6.11.2: - resolution: - { - integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== - } - engines: { node: '>=0.6' } + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} dependencies: side-channel: 1.0.4 dev: true /querystringify@2.2.0: - resolution: - { - integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - } + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true /queue-microtask@1.2.3: - resolution: - { - integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - } + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true /randombytes@2.1.0: - resolution: - { - integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - } + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 dev: true /range-parser@1.2.1: - resolution: - { - integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} /raw-body@2.5.1: - resolution: - { - integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} dependencies: bytes: 3.1.2 http-errors: 2.0.0 @@ -13301,11 +10054,8 @@ packages: unpipe: 1.0.0 /raw-body@2.5.2: - resolution: - { - integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} dependencies: bytes: 3.1.2 http-errors: 2.0.0 @@ -13313,10 +10063,7 @@ packages: unpipe: 1.0.0 /react-dom@18.2.0(react@18.2.0): - resolution: - { - integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - } + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: react: ^18.2.0 dependencies: @@ -13325,57 +10072,36 @@ packages: scheduler: 0.23.0 /react-is@16.13.1: - resolution: - { - integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - } + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: true /react-is@17.0.2: - resolution: - { - integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - } + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true /react-is@18.2.0: - resolution: - { - integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - } + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true /react-refresh@0.10.0: - resolution: - { - integrity: sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==} + engines: {node: '>=0.10.0'} dev: true /react@18.2.0: - resolution: - { - integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 /read-cache@1.0.0: - resolution: - { - integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== - } + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 dev: true /readable-stream@2.3.8: - resolution: - { - integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - } + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -13386,11 +10112,8 @@ packages: util-deprecate: 1.0.2 /readable-stream@3.6.2: - resolution: - { - integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} dependencies: inherits: 2.0.4 string_decoder: 1.3.0 @@ -13398,60 +10121,51 @@ packages: dev: true /readdirp@3.6.0: - resolution: - { - integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - } - engines: { node: '>=8.10.0' } + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 dev: true /reflect-metadata@0.1.14: - resolution: - { - integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A== - } + resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==} + + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true /regenerate-unicode-properties@10.1.1: - resolution: - { - integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} dependencies: regenerate: 1.4.2 dev: true /regenerate@1.4.2: - resolution: - { - integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - } + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} dev: true /regenerator-runtime@0.14.1: - resolution: - { - integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - } + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} dev: true /regenerator-transform@0.15.2: - resolution: - { - integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - } + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: '@babel/runtime': 7.23.6 dev: true /regexp.prototype.flags@1.5.1: - resolution: - { - integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -13459,11 +10173,8 @@ packages: dev: true /regexpu-core@5.3.2: - resolution: - { - integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} dependencies: '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 @@ -13474,110 +10185,71 @@ packages: dev: true /regjsparser@0.9.1: - resolution: - { - integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - } + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true dependencies: jsesc: 0.5.0 dev: true /repeat-string@1.6.1: - resolution: - { - integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== - } - engines: { node: '>=0.10' } + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} dev: true /require-directory@2.1.1: - resolution: - { - integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} dev: true /require-from-string@2.0.2: - resolution: - { - integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} dev: true /requires-port@1.0.0: - resolution: - { - integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - } + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true /resend@2.0.0: - resolution: - { - integrity: sha512-jAh0DN84ZjjmzGM2vMjJ1hphPBg1mG98dzopF7kJzmin62v8ESg4og2iCKWdkAboGOT2SeO5exbr/8Xh8gLddw== - } - engines: { node: '>=18' } + resolution: {integrity: sha512-jAh0DN84ZjjmzGM2vMjJ1hphPBg1mG98dzopF7kJzmin62v8ESg4og2iCKWdkAboGOT2SeO5exbr/8Xh8gLddw==} + engines: {node: '>=18'} dependencies: '@react-email/render': 0.0.9 dev: false /resolve-cwd@3.0.0: - resolution: - { - integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 dev: true /resolve-from@4.0.0: - resolution: - { - integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} dev: true /resolve-from@5.0.0: - resolution: - { - integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} dev: true /resolve-pkg-maps@1.0.0: - resolution: - { - integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== - } + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true /resolve.exports@1.1.0: - resolution: - { - integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} + engines: {node: '>=10'} dev: true /resolve.exports@2.0.2: - resolution: - { - integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} dev: true /resolve@1.22.8: - resolution: - { - integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - } + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: is-core-module: 2.13.1 @@ -13586,10 +10258,7 @@ packages: dev: true /resolve@2.0.0-next.5: - resolution: - { - integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== - } + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true dependencies: is-core-module: 2.13.1 @@ -13598,65 +10267,44 @@ packages: dev: true /restore-cursor@3.1.0: - resolution: - { - integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} dependencies: onetime: 5.1.2 signal-exit: 3.0.7 dev: true /retry@0.13.1: - resolution: - { - integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - } - engines: { node: '>= 4' } + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} dev: true /reusify@1.0.4: - resolution: - { - integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - } - engines: { iojs: '>=1.0.0', node: '>=0.10.0' } + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true /rimraf@3.0.2: - resolution: - { - integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - } + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.1.4 dev: true /run-parallel@1.2.0: - resolution: - { - integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - } + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true /rxjs@7.8.1: - resolution: - { - integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== - } + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: tslib: 2.6.2 /safe-array-concat@1.0.1: - resolution: - { - integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== - } - engines: { node: '>=0.4' } + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 @@ -13665,22 +10313,13 @@ packages: dev: true /safe-buffer@5.1.2: - resolution: - { - integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - } + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} /safe-buffer@5.2.1: - resolution: - { - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - } + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} /safe-regex-test@1.0.0: - resolution: - { - integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - } + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 @@ -13688,17 +10327,11 @@ packages: dev: true /safer-buffer@2.1.2: - resolution: - { - integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - } + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} /sass-loader@12.6.0(sass@1.69.5)(webpack@5.89.0): - resolution: - { - integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== - } - engines: { node: '>= 12.13.0' } + resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==} + engines: {node: '>= 12.13.0'} peerDependencies: fibers: '>= 3.1.0' node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 @@ -13722,11 +10355,8 @@ packages: dev: true /sass@1.69.5: - resolution: - { - integrity: sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ== - } - engines: { node: '>=14.0.0' } + resolution: {integrity: sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==} + engines: {node: '>=14.0.0'} hasBin: true dependencies: chokidar: 3.5.3 @@ -13735,45 +10365,30 @@ packages: dev: true /sax@1.2.4: - resolution: - { - integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - } + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} dev: true /sax@1.3.0: - resolution: - { - integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== - } + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} requiresBuild: true dev: true optional: true /saxes@6.0.0: - resolution: - { - integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== - } - engines: { node: '>=v12.22.7' } + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 dev: true /scheduler@0.23.0: - resolution: - { - integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - } + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 /schema-utils@3.3.0: - resolution: - { - integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - } - engines: { node: '>= 10.13.0' } + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} dependencies: '@types/json-schema': 7.0.15 ajv: 6.12.6 @@ -13781,11 +10396,8 @@ packages: dev: true /schema-utils@4.2.0: - resolution: - { - integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== - } - engines: { node: '>= 12.13.0' } + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} dependencies: '@types/json-schema': 7.0.15 ajv: 8.12.0 @@ -13794,83 +10406,56 @@ packages: dev: true /secure-compare@3.0.1: - resolution: - { - integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw== - } + resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==} dev: true /selderee@0.11.0: - resolution: - { - integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA== - } + resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} dependencies: parseley: 0.12.1 dev: false /select-hose@2.0.0: - resolution: - { - integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== - } + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} dev: true /selfsigned@2.4.1: - resolution: - { - integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} dependencies: '@types/node-forge': 1.3.10 node-forge: 1.3.1 dev: true /semver@5.7.2: - resolution: - { - integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - } + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true requiresBuild: true dev: true optional: true /semver@6.3.1: - resolution: - { - integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - } + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true /semver@7.5.3: - resolution: - { - integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} + engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 dev: true /semver@7.5.4: - resolution: - { - integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 /send@0.18.0: - resolution: - { - integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} dependencies: debug: 2.6.9 depd: 2.0.0 @@ -13889,20 +10474,14 @@ packages: - supports-color /serialize-javascript@6.0.1: - resolution: - { - integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== - } + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} dependencies: randombytes: 2.1.0 dev: true /serve-index@1.9.1: - resolution: - { - integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} dependencies: accepts: 1.3.8 batch: 0.6.1 @@ -13916,11 +10495,8 @@ packages: dev: true /serve-static@1.15.0: - resolution: - { - integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} dependencies: encodeurl: 1.0.2 escape-html: 1.0.3 @@ -13930,11 +10506,8 @@ packages: - supports-color /set-function-length@1.1.1: - resolution: - { - integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.1 get-intrinsic: 1.2.2 @@ -13942,11 +10515,8 @@ packages: has-property-descriptors: 1.0.1 /set-function-name@2.0.1: - resolution: - { - integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.1 functions-have-names: 1.2.3 @@ -13954,113 +10524,71 @@ packages: dev: true /setprototypeof@1.1.0: - resolution: - { - integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - } + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} dev: true /setprototypeof@1.2.0: - resolution: - { - integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - } + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} /shallow-clone@3.0.1: - resolution: - { - integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} dependencies: kind-of: 6.0.3 dev: true /shebang-command@2.0.0: - resolution: - { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 /shebang-regex@3.0.0: - resolution: - { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} /shell-quote@1.8.1: - resolution: - { - integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== - } + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: true /side-channel@1.0.4: - resolution: - { - integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - } + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 object-inspect: 1.13.1 /signal-exit@3.0.7: - resolution: - { - integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - } + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true /signal-exit@4.1.0: - resolution: - { - integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} /sisteransi@1.0.5: - resolution: - { - integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - } + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true /slash@3.0.0: - resolution: - { - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} dev: true /slash@4.0.0: - resolution: - { - integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} dev: true /snake-case@3.0.4: - resolution: - { - integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== - } + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 tslib: 2.6.2 dev: true /sockjs@0.3.24: - resolution: - { - integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - } + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} dependencies: faye-websocket: 0.11.4 uuid: 8.3.2 @@ -14068,18 +10596,12 @@ packages: dev: true /source-map-js@1.0.2: - resolution: - { - integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} /source-map-loader@3.0.2(webpack@5.89.0): - resolution: - { - integrity: sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg== - } - engines: { node: '>= 12.13.0' } + resolution: {integrity: sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==} + engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: @@ -14090,56 +10612,38 @@ packages: dev: true /source-map-support@0.5.13: - resolution: - { - integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - } + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true /source-map-support@0.5.19: - resolution: - { - integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - } + resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true /source-map-support@0.5.21: - resolution: - { - integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - } + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true /source-map@0.6.1: - resolution: - { - integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} dev: true /source-map@0.7.4: - resolution: - { - integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} dev: true /spdy-transport@3.0.0: - resolution: - { - integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - } + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: debug: 4.3.4 detect-node: 2.1.0 @@ -14152,11 +10656,8 @@ packages: dev: true /spdy@4.0.2: - resolution: - { - integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} dependencies: debug: 4.3.4 handle-thing: 2.0.1 @@ -14168,99 +10669,66 @@ packages: dev: true /sprintf-js@1.0.3: - resolution: - { - integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - } + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true /stack-utils@2.0.6: - resolution: - { - integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 dev: true /stackframe@1.3.4: - resolution: - { - integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== - } + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} dev: true /statuses@1.5.0: - resolution: - { - integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} dev: true /statuses@2.0.1: - resolution: - { - integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} /stop-iteration-iterator@1.0.0: - resolution: - { - integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} dependencies: internal-slot: 1.0.6 dev: true /streamsearch@1.1.0: - resolution: - { - integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== - } - engines: { node: '>=10.0.0' } + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} /string-length@4.0.2: - resolution: - { - integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 dev: true /string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 /string-width@5.1.2: - resolution: - { - integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 /string.prototype.matchall@4.0.10: - resolution: - { - integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== - } + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -14274,11 +10742,8 @@ packages: dev: true /string.prototype.trim@1.2.8: - resolution: - { - integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -14286,10 +10751,7 @@ packages: dev: true /string.prototype.trimend@1.0.7: - resolution: - { - integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== - } + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -14297,10 +10759,7 @@ packages: dev: true /string.prototype.trimstart@1.0.7: - resolution: - { - integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== - } + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -14308,78 +10767,51 @@ packages: dev: true /string_decoder@1.1.1: - resolution: - { - integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - } + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 /string_decoder@1.3.0: - resolution: - { - integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - } + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 dev: true /strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 /strip-ansi@7.1.0: - resolution: - { - integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 /strip-bom@3.0.0: - resolution: - { - integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} dev: true /strip-bom@4.0.0: - resolution: - { - integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} dev: true /strip-final-newline@2.0.0: - resolution: - { - integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} dev: true /strip-json-comments@3.1.1: - resolution: - { - integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} dev: true /strong-log-transformer@2.1.0: - resolution: - { - integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==} + engines: {node: '>=4'} hasBin: true dependencies: duplexer: 0.1.2 @@ -14388,11 +10820,8 @@ packages: dev: true /style-loader@3.3.3(webpack@5.89.0): - resolution: - { - integrity: sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== - } - engines: { node: '>= 12.13.0' } + resolution: {integrity: sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==} + engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: @@ -14400,11 +10829,8 @@ packages: dev: true /styled-jsx@5.1.1(@babel/core@7.23.6)(react@18.2.0): - resolution: - { - integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== - } - engines: { node: '>= 12.0.0' } + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} peerDependencies: '@babel/core': '*' babel-plugin-macros: '*' @@ -14420,11 +10846,8 @@ packages: react: 18.2.0 /stylehacks@6.0.1(postcss@8.4.32): - resolution: - { - integrity: sha512-jTqG2aIoX2fYg0YsGvqE4ooE/e75WmaEjnNiP6Ag7irLtHxML8NJRxRxS0HyDpde8DRGuEXTFVHVfR5Tmbxqzg== - } - engines: { node: ^14 || ^16 || >=18.0 } + resolution: {integrity: sha512-jTqG2aIoX2fYg0YsGvqE4ooE/e75WmaEjnNiP6Ag7irLtHxML8NJRxRxS0HyDpde8DRGuEXTFVHVfR5Tmbxqzg==} + engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: @@ -14434,11 +10857,8 @@ packages: dev: true /stylus-loader@7.1.3(stylus@0.59.0)(webpack@5.89.0): - resolution: - { - integrity: sha512-TY0SKwiY7D2kMd3UxaWKSf3xHF0FFN/FAfsSqfrhxRT/koXTwffq2cgEWDkLQz7VojMu7qEEHt5TlMjkPx9UDw== - } - engines: { node: '>= 14.15.0' } + resolution: {integrity: sha512-TY0SKwiY7D2kMd3UxaWKSf3xHF0FFN/FAfsSqfrhxRT/koXTwffq2cgEWDkLQz7VojMu7qEEHt5TlMjkPx9UDw==} + engines: {node: '>= 14.15.0'} peerDependencies: stylus: '>=0.52.4' webpack: ^5.0.0 @@ -14450,10 +10870,7 @@ packages: dev: true /stylus@0.59.0: - resolution: - { - integrity: sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg== - } + resolution: {integrity: sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==} hasBin: true dependencies: '@adobe/css-tools': 4.3.2 @@ -14466,11 +10883,8 @@ packages: dev: true /sucrase@3.35.0: - resolution: - { - integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== - } - engines: { node: '>=16 || 14 >=14.17' } + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: '@jridgewell/gen-mapping': 0.3.3 @@ -14483,54 +10897,36 @@ packages: dev: true /supports-color@5.5.0: - resolution: - { - integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} dependencies: has-flag: 3.0.0 /supports-color@7.2.0: - resolution: - { - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 /supports-color@8.1.1: - resolution: - { - integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} dependencies: has-flag: 4.0.0 dev: true /supports-preserve-symlinks-flag@1.0.0: - resolution: - { - integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} dev: true /svg-parser@2.0.4: - resolution: - { - integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - } + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} dev: true /svgo@3.1.0: - resolution: - { - integrity: sha512-R5SnNA89w1dYgNv570591F66v34b3eQShpIBcQtZtM5trJwm1VvxbIoMpRYY3ybTAutcKTLEmTsdnaknOHbiQA== - } - engines: { node: '>=14.0.0' } + resolution: {integrity: sha512-R5SnNA89w1dYgNv570591F66v34b3eQShpIBcQtZtM5trJwm1VvxbIoMpRYY3ybTAutcKTLEmTsdnaknOHbiQA==} + engines: {node: '>=14.0.0'} hasBin: true dependencies: '@trysound/sax': 0.2.0 @@ -14542,19 +10938,17 @@ packages: picocolors: 1.0.0 dev: true + /swagger-ui-dist@5.10.3: + resolution: {integrity: sha512-fu3aozjxFWsmcO1vyt1q1Ji2kN7KlTd1vHy27E9WgPyXo9nrEzhQPqgxaAjbMsOmb8XFKNGo4Sa3Q+84Fh+pFw==} + dev: false + /symbol-tree@3.2.4: - resolution: - { - integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - } + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true /tailwindcss@3.4.0(ts-node@10.9.1): - resolution: - { - integrity: sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA== - } - engines: { node: '>=14.0.0' } + resolution: {integrity: sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==} + engines: {node: '>=14.0.0'} hasBin: true dependencies: '@alloc/quick-lru': 5.2.0 @@ -14584,19 +10978,13 @@ packages: dev: true /tapable@2.2.1: - resolution: - { - integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} dev: true /tar-stream@2.2.0: - resolution: - { - integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} dependencies: bl: 4.1.0 end-of-stream: 1.4.4 @@ -14606,11 +10994,8 @@ packages: dev: true /terser-webpack-plugin@5.3.9(@swc/core@1.3.101)(webpack@5.89.0): - resolution: - { - integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== - } - engines: { node: '>= 10.13.0' } + resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' esbuild: '*' @@ -14634,11 +11019,8 @@ packages: dev: true /terser@5.26.0: - resolution: - { - integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==} + engines: {node: '>=10'} hasBin: true dependencies: '@jridgewell/source-map': 0.3.5 @@ -14648,11 +11030,8 @@ packages: dev: true /test-exclude@6.0.0: - resolution: - { - integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 @@ -14660,92 +11039,59 @@ packages: dev: true /text-table@0.2.0: - resolution: - { - integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - } + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true /thenify-all@1.6.0: - resolution: - { - integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - } - engines: { node: '>=0.8' } + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 dev: true /thenify@3.3.1: - resolution: - { - integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - } + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 dev: true /through@2.3.8: - resolution: - { - integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - } + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true /thunky@1.1.0: - resolution: - { - integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - } + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} dev: true /tmp@0.2.1: - resolution: - { - integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - } - engines: { node: '>=8.17.0' } + resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} + engines: {node: '>=8.17.0'} dependencies: rimraf: 3.0.2 dev: true /tmpl@1.0.5: - resolution: - { - integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - } + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true /to-fast-properties@2.0.0: - resolution: - { - integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} /to-regex-range@5.0.1: - resolution: - { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - } - engines: { node: '>=8.0' } + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 dev: true /toidentifier@1.0.1: - resolution: - { - integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - } - engines: { node: '>=0.6' } + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} /tough-cookie@4.1.3: - resolution: - { - integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} dependencies: psl: 1.9.0 punycode: 2.3.1 @@ -14754,27 +11100,18 @@ packages: dev: true /tr46@0.0.3: - resolution: - { - integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - } + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} /tr46@3.0.0: - resolution: - { - integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} dependencies: punycode: 2.3.1 dev: true /ts-api-utils@1.0.3(typescript@5.2.2): - resolution: - { - integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== - } - engines: { node: '>=16.13.0' } + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: @@ -14782,18 +11119,12 @@ packages: dev: true /ts-interface-checker@0.1.13: - resolution: - { - integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== - } + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true /ts-jest@29.1.1(@babel/core@7.23.6)(babel-jest@29.7.0)(jest@29.7.0)(typescript@5.2.2): - resolution: - { - integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA== - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: '@babel/core': '>=7.0.0-beta.0 <8' @@ -14827,11 +11158,8 @@ packages: dev: true /ts-loader@9.5.1(typescript@5.2.2)(webpack@5.89.0): - resolution: - { - integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg== - } - engines: { node: '>=12.0.0' } + resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} + engines: {node: '>=12.0.0'} peerDependencies: typescript: '*' webpack: ^5.0.0 @@ -14846,10 +11174,7 @@ packages: dev: true /ts-node@10.9.1(@swc/core@1.3.101)(@types/node@18.16.9)(typescript@5.2.2): - resolution: - { - integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== - } + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -14881,11 +11206,8 @@ packages: dev: true /tsconfig-paths-webpack-plugin@4.0.0: - resolution: - { - integrity: sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ== - } - engines: { node: '>=10.13.0' } + resolution: {integrity: sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ==} + engines: {node: '>=10.13.0'} dependencies: chalk: 4.1.2 enhanced-resolve: 5.15.0 @@ -14893,10 +11215,7 @@ packages: dev: true /tsconfig-paths@3.15.0: - resolution: - { - integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== - } + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -14905,93 +11224,49 @@ packages: dev: true /tsconfig-paths@4.2.0: - resolution: - { - integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} dependencies: json5: 2.2.3 minimist: 1.2.8 strip-bom: 3.0.0 dev: true - /tslib@1.14.1: - resolution: - { - integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - } - dev: true - /tslib@2.6.2: - resolution: - { - integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - } - - /tsutils@3.21.0(typescript@5.2.2): - resolution: - { - integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - } - engines: { node: '>= 6' } - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.2.2 - dev: true + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} /type-check@0.4.0: - resolution: - { - integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 dev: true /type-detect@4.0.8: - resolution: - { - integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} dev: true /type-fest@0.20.2: - resolution: - { - integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} dev: true /type-fest@0.21.3: - resolution: - { - integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} dev: true /type-is@1.6.18: - resolution: - { - integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - } - engines: { node: '>= 0.6' } + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} dependencies: media-typer: 0.3.0 mime-types: 2.1.35 /typed-array-buffer@1.0.0: - resolution: - { - integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 @@ -14999,11 +11274,8 @@ packages: dev: true /typed-array-byte-length@1.0.0: - resolution: - { - integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 for-each: 0.3.3 @@ -15012,11 +11284,8 @@ packages: dev: true /typed-array-byte-offset@1.0.0: - resolution: - { - integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.5 @@ -15026,10 +11295,7 @@ packages: dev: true /typed-array-length@1.0.4: - resolution: - { - integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== - } + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.5 for-each: 0.3.3 @@ -15037,41 +11303,26 @@ packages: dev: true /typed-assert@1.0.9: - resolution: - { - integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg== - } + resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} dev: true /typedarray@0.0.6: - resolution: - { - integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== - } + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} /typescript@5.2.2: - resolution: - { - integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== - } - engines: { node: '>=14.17' } + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} hasBin: true dev: true /uid@2.0.2: - resolution: - { - integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g== - } - engines: { node: '>=8' } + resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} + engines: {node: '>=8'} dependencies: '@lukeed/csprng': 1.1.0 /unbox-primitive@1.0.2: - resolution: - { - integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - } + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.5 has-bigints: 1.0.2 @@ -15080,78 +11331,51 @@ packages: dev: true /unicode-canonical-property-names-ecmascript@2.0.0: - resolution: - { - integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} dev: true /unicode-match-property-ecmascript@2.0.0: - resolution: - { - integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 dev: true /unicode-match-property-value-ecmascript@2.1.0: - resolution: - { - integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} dev: true /unicode-property-aliases-ecmascript@2.1.0: - resolution: - { - integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - } - engines: { node: '>=4' } + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} dev: true /union@0.5.0: - resolution: - { - integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA== - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} + engines: {node: '>= 0.8.0'} dependencies: qs: 6.11.2 dev: true /universalify@0.2.0: - resolution: - { - integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - } - engines: { node: '>= 4.0.0' } + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} dev: true /universalify@2.0.1: - resolution: - { - integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== - } - engines: { node: '>= 10.0.0' } + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} dev: true /unpipe@1.0.0: - resolution: - { - integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} /update-browserslist-db@1.0.13(browserslist@4.22.2): - resolution: - { - integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - } + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -15161,27 +11385,18 @@ packages: picocolors: 1.0.0 /uri-js@4.4.1: - resolution: - { - integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - } + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.1 dev: true /url-join@4.0.1: - resolution: - { - integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== - } + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} dev: true /url-loader@4.1.1(webpack@5.89.0): - resolution: - { - integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== - } - engines: { node: '>= 10.13.0' } + resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} + engines: {node: '>= 10.13.0'} peerDependencies: file-loader: '*' webpack: ^4.0.0 || ^5.0.0 @@ -15196,64 +11411,40 @@ packages: dev: true /url-parse@1.5.10: - resolution: - { - integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - } + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 dev: true /util-deprecate@1.0.2: - resolution: - { - integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - } + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} /utils-merge@1.0.1: - resolution: - { - integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - } - engines: { node: '>= 0.4.0' } + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} /uuid@8.3.2: - resolution: - { - integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - } + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true dev: true /uuid@9.0.0: - resolution: - { - integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== - } + resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true dev: false /v8-compile-cache-lib@3.0.1: - resolution: - { - integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - } + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true /v8-compile-cache@2.3.0: - resolution: - { - integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - } + resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true /v8-to-istanbul@9.2.0: - resolution: - { - integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== - } - engines: { node: '>=10.12.0' } + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} dependencies: '@jridgewell/trace-mapping': 0.3.20 '@types/istanbul-lib-coverage': 2.0.6 @@ -15261,97 +11452,63 @@ packages: dev: true /validate-npm-package-name@5.0.0: - resolution: - { - integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ== - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: builtins: 5.0.1 dev: true /validator@13.11.0: - resolution: - { - integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ== - } - engines: { node: '>= 0.10' } + resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} + engines: {node: '>= 0.10'} /vary@1.1.2: - resolution: - { - integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} /w3c-xmlserializer@4.0.0: - resolution: - { - integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== - } - engines: { node: '>=14' } + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} dependencies: xml-name-validator: 4.0.0 dev: true /walker@1.0.8: - resolution: - { - integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - } + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 dev: true /watchpack@2.4.0: - resolution: - { - integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== - } - engines: { node: '>=10.13.0' } + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - dev: true /wbuf@1.7.3: - resolution: - { - integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - } + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} dependencies: minimalistic-assert: 1.0.1 dev: true /wcwidth@1.0.1: - resolution: - { - integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - } + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 dev: true /webidl-conversions@3.0.1: - resolution: - { - integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - } + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} /webidl-conversions@7.0.0: - resolution: - { - integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} dev: true /webpack-dev-middleware@5.3.3(webpack@5.89.0): - resolution: - { - integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== - } - engines: { node: '>= 12.13.0' } + resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} + engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^4.0.0 || ^5.0.0 dependencies: @@ -15364,11 +11521,8 @@ packages: dev: true /webpack-dev-server@4.15.1(webpack@5.89.0): - resolution: - { - integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== - } - engines: { node: '>= 12.13.0' } + resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==} + engines: {node: '>= 12.13.0'} hasBin: true peerDependencies: webpack: ^4.37.0 || ^5.0.0 @@ -15418,11 +11572,8 @@ packages: dev: true /webpack-merge@5.10.0: - resolution: - { - integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== - } - engines: { node: '>=10.0.0' } + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} dependencies: clone-deep: 4.0.1 flat: 5.0.2 @@ -15430,27 +11581,18 @@ packages: dev: true /webpack-node-externals@3.0.0: - resolution: - { - integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} + engines: {node: '>=6'} dev: true /webpack-sources@3.2.3: - resolution: - { - integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - } - engines: { node: '>=10.13.0' } + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} dev: true /webpack-subresource-integrity@5.1.0(webpack@5.89.0): - resolution: - { - integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q== - } - engines: { node: '>= 12' } + resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==} + engines: {node: '>= 12'} peerDependencies: html-webpack-plugin: '>= 5.0.0-beta.1 < 6' webpack: ^5.12.0 @@ -15463,11 +11605,8 @@ packages: dev: true /webpack@5.89.0(@swc/core@1.3.101): - resolution: - { - integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== - } - engines: { node: '>=10.13.0' } + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + engines: {node: '>=10.13.0'} hasBin: true peerDependencies: webpack-cli: '*' @@ -15506,11 +11645,8 @@ packages: dev: true /websocket-driver@0.7.4: - resolution: - { - integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - } - engines: { node: '>=0.8.0' } + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} dependencies: http-parser-js: 0.5.8 safe-buffer: 5.2.1 @@ -15518,56 +11654,38 @@ packages: dev: true /websocket-extensions@0.1.4: - resolution: - { - integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - } - engines: { node: '>=0.8.0' } + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} dev: true /whatwg-encoding@2.0.0: - resolution: - { - integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 dev: true /whatwg-mimetype@3.0.0: - resolution: - { - integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} dev: true /whatwg-url@11.0.0: - resolution: - { - integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} dependencies: tr46: 3.0.0 webidl-conversions: 7.0.0 dev: true /whatwg-url@5.0.0: - resolution: - { - integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - } + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 /which-boxed-primitive@1.0.2: - resolution: - { - integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - } + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 @@ -15576,11 +11694,26 @@ packages: is-symbol: 1.0.4 dev: true + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.13 + dev: true + /which-collection@1.0.1: - resolution: - { - integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== - } + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: is-map: 2.0.2 is-set: 2.0.2 @@ -15589,11 +11722,8 @@ packages: dev: true /which-typed-array@1.1.13: - resolution: - { - integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.5 @@ -15603,68 +11733,47 @@ packages: dev: true /which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} hasBin: true dependencies: isexe: 2.0.0 /wildcard@2.0.1: - resolution: - { - integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== - } + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} dev: true /wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 /wrap-ansi@8.1.0: - resolution: - { - integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 /wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - } + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true /write-file-atomic@4.0.2: - resolution: - { - integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 dev: true /ws@8.15.1: - resolution: - { - integrity: sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ== - } - engines: { node: '>=10.0.0' } + resolution: {integrity: sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==} + engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 utf-8-validate: '>=5.0.2' @@ -15675,77 +11784,47 @@ packages: optional: true /xml-name-validator@4.0.0: - resolution: - { - integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} dev: true /xmlchars@2.2.0: - resolution: - { - integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - } + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true /xtend@4.0.2: - resolution: - { - integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - } - engines: { node: '>=0.4' } + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} /y18n@5.0.8: - resolution: - { - integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} dev: true /yallist@3.1.1: - resolution: - { - integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - } + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} /yallist@4.0.0: - resolution: - { - integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - } + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} /yaml@1.10.2: - resolution: - { - integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} dev: true /yaml@2.3.4: - resolution: - { - integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== - } - engines: { node: '>= 14' } + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + engines: {node: '>= 14'} dev: true /yargs-parser@21.1.1: - resolution: - { - integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} dev: true /yargs@17.7.2: - resolution: - { - integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - } - engines: { node: '>=12' } + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} dependencies: cliui: 8.0.1 escalade: 3.1.1 @@ -15757,31 +11836,16 @@ packages: dev: true /yn@3.1.1: - resolution: - { - integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - } - engines: { node: '>=6' } + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} dev: true /yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - } - engines: { node: '>=10' } + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} dev: true /yocto-queue@1.0.0: - resolution: - { - integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== - } - engines: { node: '>=12.20' } - dev: true - - /zod@3.21.4: - resolution: - { - integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== - } + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true From f97adf00ed0dc43bd41bd4af18ff5680ad3b4fc6 Mon Sep 17 00:00:00 2001 From: rajdip-b Date: Wed, 3 Jan 2024 00:09:46 +0530 Subject: [PATCH 03/15] chore: remove duplicate auth service --- apps/api/src/assets/.gitkeep | 0 apps/api/src/auth/auth.service.ts | 79 ------------------------------- 2 files changed, 79 deletions(-) delete mode 100644 apps/api/src/assets/.gitkeep delete mode 100644 apps/api/src/auth/auth.service.ts diff --git a/apps/api/src/assets/.gitkeep b/apps/api/src/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/api/src/auth/auth.service.ts b/apps/api/src/auth/auth.service.ts deleted file mode 100644 index c0b6904a..00000000 --- a/apps/api/src/auth/auth.service.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { - HttpException, - HttpStatus, - Inject, - Injectable, - Logger, - LoggerService -} from '@nestjs/common' -import { PrismaRepository } from '../prisma/prisma.repository' -import { randomUUID } from 'crypto' -import { JwtService } from '@nestjs/jwt' -import { UserAuthenticatedResponse } from './auth.types' -import { - IResendService, - RESEND_SERVICE -} from '../resend/services/resend.service.interface' - -@Injectable() -export class AuthService { - private readonly OTP_EXPIRY = 5 * 60 * 1000 // 5 minutes - private readonly logger: LoggerService - - constructor( - private repository: PrismaRepository, - @Inject(RESEND_SERVICE) private resend: IResendService, - private jwt: JwtService - ) { - this.logger = new Logger(AuthService.name) - } - - async sendOtp(email: string): Promise { - if (!email || !email.includes('@')) { - this.logger.error(`Invalid email address: ${email}`) - throw new HttpException( - 'Please enter a valid email address', - HttpStatus.BAD_REQUEST - ) - } - - // We need to create the user if it doesn't exist yet - if (!(await this.repository.findUserByEmail(email))) { - await this.repository.createUser(email) - } - - const otp = await this.repository.createOtp( - email, - randomUUID().slice(0, 6).toUpperCase(), - this.OTP_EXPIRY - ) - - await this.resend.sendOtp(email, otp.code) - this.logger.log(`Login code sent to ${email}: ${otp.code}`) - } - - async validateOtp( - email: string, - otp: string - ): Promise { - const user = await this.repository.findUserByEmail(email) - if (!user) { - this.logger.error(`User not found: ${email}`) - throw new HttpException('User not found', HttpStatus.NOT_FOUND) - } - - if (!(await this.repository.isOtpValid(email, otp))) { - this.logger.error(`Invalid login code for ${email}: ${otp}`) - throw new HttpException('Invalid login code', HttpStatus.UNAUTHORIZED) - } - - await this.repository.deleteOtp(email, otp) - - this.logger.log(`User logged in: ${email}`) - - return { - ...user, - token: await this.jwt.signAsync({ id: user.id }) - } - } -} From f0b0887e494f44eeaf01e1ff0945eb2079641683 Mon Sep 17 00:00:00 2001 From: rajdip-b Date: Wed, 3 Jan 2024 23:09:19 +0530 Subject: [PATCH 04/15] patch: replace resend with nodemailer --- .env.example | 7 +- apps/api/project.json | 1 - apps/api/src/app/app.module.ts | 4 +- .../auth/controller/auth.controller.spec.ts | 6 +- .../src/auth/repository/auth.repository.ts | 2 + .../api/src/auth/service/auth.service.spec.ts | 6 +- apps/api/src/auth/service/auth.service.ts | 8 +- apps/api/src/mail/mail.module.ts | 20 + .../services/interface.service.ts} | 4 +- .../services/mail.service.ts} | 45 +- apps/api/src/mail/services/mock.service.ts | 36 + .../services/resend.service.spec.ts | 10 +- .../controller/project.controller.spec.ts | 6 +- .../project/service/project.service.spec.ts | 6 +- .../src/project/service/project.service.ts | 8 +- apps/api/src/resend/resend.module.ts | 16 - apps/api/src/resend/services/mock.resend.ts | 38 - package.json | 57 +- pnpm-lock.yaml | 2401 ++++++++++------- 19 files changed, 1547 insertions(+), 1134 deletions(-) create mode 100644 apps/api/src/mail/mail.module.ts rename apps/api/src/{resend/services/resend.service.interface.ts => mail/services/interface.service.ts} (84%) rename apps/api/src/{resend/services/mail.resend.ts => mail/services/mail.service.ts} (76%) create mode 100644 apps/api/src/mail/services/mock.service.ts rename apps/api/src/{resend => mail}/services/resend.service.spec.ts (56%) delete mode 100644 apps/api/src/resend/resend.module.ts delete mode 100644 apps/api/src/resend/services/mock.resend.ts diff --git a/.env.example b/.env.example index 58e0afb0..6a5487ac 100644 --- a/.env.example +++ b/.env.example @@ -2,10 +2,13 @@ DATABASE_URL=postgresql://postgres:@db..supabase.co SUPABASE_ANON_KEY= -RESEND_API_KEY=re_ +SMTP_HOST= +SMTP_PORT= +SMTP_EMAIL_ADDRESS= +SMTP_PASSWORD= +FROM_EMAIL="your-name " JWT_SECRET=secret -FROM_EMAIL="your-name " WEB_FRONTEND_URL=https://keyshade.xyz WORKSPACE_FRONTEND_URL=https://app.keyshade.xyz diff --git a/apps/api/project.json b/apps/api/project.json index 3a3b524d..99c9007a 100644 --- a/apps/api/project.json +++ b/apps/api/project.json @@ -14,7 +14,6 @@ "outputPath": "dist/apps/api", "main": "apps/api/src/main.ts", "tsConfig": "apps/api/tsconfig.app.json", - "assets": ["apps/api/src/assets"], "webpackConfig": "apps/api/webpack.config.js" }, "configurations": { diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index dab8f442..4d3dcc31 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -6,7 +6,7 @@ import { PassportModule } from '@nestjs/passport' import { AuthModule } from '../auth/auth.module' import { PrismaModule } from '../prisma/prisma.module' import { CommonModule } from '../common/common.module' -import { ResendModule } from '../resend/resend.module' +import { MailModule } from '../mail/mail.module' import { APP_GUARD } from '@nestjs/core' import { AuthGuard } from '../auth/guard/auth.guard' import { UserModule } from '../user/user.module' @@ -24,7 +24,7 @@ import { EnvironmentModule } from '../environment/environment.module' AuthModule, PrismaModule, CommonModule, - ResendModule, + MailModule, SupabaseModule, UserModule, ProjectModule, diff --git a/apps/api/src/auth/controller/auth.controller.spec.ts b/apps/api/src/auth/controller/auth.controller.spec.ts index 8bbdf5ac..2b608d95 100644 --- a/apps/api/src/auth/controller/auth.controller.spec.ts +++ b/apps/api/src/auth/controller/auth.controller.spec.ts @@ -2,8 +2,8 @@ import { Test, TestingModule } from '@nestjs/testing' import { MockAuthRepository } from '../repository/mock.repository' import { AUTH_REPOSITORY } from '../repository/interface.repository' import { AuthService } from '../service/auth.service' -import { RESEND_SERVICE } from '../../resend/services/resend.service.interface' -import { MockResend } from '../../resend/services/mock.resend' +import { MAIL_SERVICE } from '../../mail/services/interface.service' +import { MockMailService } from '../../mail/services/mock.service' import { JwtService } from '@nestjs/jwt' import { PrismaService } from '../../prisma/prisma.service' import { AuthController } from './auth.controller' @@ -18,7 +18,7 @@ describe('AuthController', () => { controllers: [AuthController], providers: [ AuthService, - { provide: RESEND_SERVICE, useClass: MockResend }, + { provide: MAIL_SERVICE, useClass: MockMailService }, { provide: AUTH_REPOSITORY, useClass: MockAuthRepository }, { provide: USER_REPOSITORY, useClass: MockUserRepository }, JwtService, diff --git a/apps/api/src/auth/repository/auth.repository.ts b/apps/api/src/auth/repository/auth.repository.ts index 3231dc2b..518dd52b 100644 --- a/apps/api/src/auth/repository/auth.repository.ts +++ b/apps/api/src/auth/repository/auth.repository.ts @@ -1,7 +1,9 @@ import { Otp, User } from '@prisma/client' import { IAuthRepository } from './interface.repository' import { PrismaService } from '../../prisma/prisma.service' +import { Injectable } from '@nestjs/common' +@Injectable() export class AuthRepository implements IAuthRepository { constructor(private readonly prisma: PrismaService) {} diff --git a/apps/api/src/auth/service/auth.service.spec.ts b/apps/api/src/auth/service/auth.service.spec.ts index 5036bd7d..3d355605 100644 --- a/apps/api/src/auth/service/auth.service.spec.ts +++ b/apps/api/src/auth/service/auth.service.spec.ts @@ -1,7 +1,7 @@ import { Test, TestingModule } from '@nestjs/testing' import { AuthService } from './auth.service' -import { MockResend } from '../../resend/services/mock.resend' -import { RESEND_SERVICE } from '../../resend/services/resend.service.interface' +import { MockMailService } from '../../mail/services/mock.service' +import { MAIL_SERVICE } from '../../mail/services/interface.service' import { JwtService } from '@nestjs/jwt' import { PrismaService } from '../../prisma/prisma.service' import { AUTH_REPOSITORY } from '../repository/interface.repository' @@ -16,7 +16,7 @@ describe('AuthService', () => { const module: TestingModule = await Test.createTestingModule({ providers: [ AuthService, - { provide: RESEND_SERVICE, useClass: MockResend }, + { provide: MAIL_SERVICE, useClass: MockMailService }, { provide: AUTH_REPOSITORY, useClass: MockAuthRepository }, { provide: USER_REPOSITORY, useClass: MockUserRepository }, JwtService, diff --git a/apps/api/src/auth/service/auth.service.ts b/apps/api/src/auth/service/auth.service.ts index 5f279f36..ef6770a3 100644 --- a/apps/api/src/auth/service/auth.service.ts +++ b/apps/api/src/auth/service/auth.service.ts @@ -10,9 +10,9 @@ import { randomUUID } from 'crypto' import { JwtService } from '@nestjs/jwt' import { UserAuthenticatedResponse } from '../auth.types' import { - IResendService, - RESEND_SERVICE -} from '../../resend/services/resend.service.interface' + IMailService, + MAIL_SERVICE +} from '../../mail/services/interface.service' import { IUserRepository, USER_REPOSITORY @@ -30,7 +30,7 @@ export class AuthService { constructor( @Inject(AUTH_REPOSITORY) private readonly authRepository: IAuthRepository, @Inject(USER_REPOSITORY) readonly userRepository: IUserRepository, - @Inject(RESEND_SERVICE) private resend: IResendService, + @Inject(MAIL_SERVICE) private resend: IMailService, private jwt: JwtService ) { this.logger = new Logger(AuthService.name) diff --git a/apps/api/src/mail/mail.module.ts b/apps/api/src/mail/mail.module.ts new file mode 100644 index 00000000..8a71bef6 --- /dev/null +++ b/apps/api/src/mail/mail.module.ts @@ -0,0 +1,20 @@ +import { Global, Module } from '@nestjs/common' +import { MailService } from './services/mail.service' +import { MAIL_SERVICE } from './services/interface.service' + +@Global() +@Module({ + providers: [ + { + provide: MAIL_SERVICE, + useClass: MailService + } + ], + exports: [ + { + provide: MAIL_SERVICE, + useClass: MailService + } + ] +}) +export class MailModule {} diff --git a/apps/api/src/resend/services/resend.service.interface.ts b/apps/api/src/mail/services/interface.service.ts similarity index 84% rename from apps/api/src/resend/services/resend.service.interface.ts rename to apps/api/src/mail/services/interface.service.ts index bbdf2031..185f48d0 100644 --- a/apps/api/src/resend/services/resend.service.interface.ts +++ b/apps/api/src/mail/services/interface.service.ts @@ -1,8 +1,8 @@ import { ProjectRole } from '@prisma/client' -export const RESEND_SERVICE = 'RESEND_SERVICE' +export const MAIL_SERVICE = 'MAIL_SERVICE' -export interface IResendService { +export interface IMailService { sendOtp(email: string, otp: string): Promise projectInvitationMailForRegisteredUser( diff --git a/apps/api/src/resend/services/mail.resend.ts b/apps/api/src/mail/services/mail.service.ts similarity index 76% rename from apps/api/src/resend/services/mail.resend.ts rename to apps/api/src/mail/services/mail.service.ts index 0a889580..96aaf7c2 100644 --- a/apps/api/src/resend/services/mail.resend.ts +++ b/apps/api/src/mail/services/mail.service.ts @@ -1,22 +1,30 @@ import { Injectable, Logger } from '@nestjs/common' -import { Resend } from 'resend' -import { IResendService } from './resend.service.interface' -import { $Enums } from '@prisma/client' +import { IMailService } from './interface.service' +import { ProjectRole } from '@prisma/client' +import { Transporter, createTransport } from 'nodemailer' @Injectable() -export class MailResend implements IResendService { - private readonly resend: Resend - private readonly log = new Logger(MailResend.name) +export class MailService implements IMailService { + private readonly transporter: Transporter + private readonly log = new Logger(MailService.name) constructor() { - this.resend = new Resend(process.env.RESEND_API_KEY) + this.transporter = createTransport({ + host: process.env.SMTP_HOST, + port: Number(process.env.SMTP_PORT), + secure: true, + auth: { + user: process.env.SMTP_EMAIL_ADDRESS, + pass: process.env.SMTP_PASSWORD + } + }) } async projectInvitationMailForRegisteredUser( email: string, project: string, actionUrl: string, invitee: string, - role: $Enums.ProjectRole + role: ProjectRole ): Promise { const subject = `You have been invited to a ${project}` const body = ` @@ -44,7 +52,7 @@ export class MailResend implements IResendService { project: string, actionUrl: string, invitee: string, - role: $Enums.ProjectRole + role: ProjectRole ): Promise { const subject = `You have been invited to a ${project}` const body = ` @@ -95,16 +103,17 @@ export class MailResend implements IResendService { subject: string, body: string ): Promise { - const { error } = await this.resend.emails.send({ - from: process.env.FROM_EMAIL, - to: email, - subject, - html: body - }) - - if (error) { + try { + await this.transporter.sendMail({ + from: process.env.FROM_EMAIL, + to: email, + subject: subject, + html: body + }) + this.log.log(`Email sent to ${email}`) + } catch (error) { this.log.error(`Error sending email to ${email}: ${error.message}`) - throw new Error(error.message) + throw new Error(`Error sending email to ${email}: ${error.message}`) } } } diff --git a/apps/api/src/mail/services/mock.service.ts b/apps/api/src/mail/services/mock.service.ts new file mode 100644 index 00000000..f463eb5f --- /dev/null +++ b/apps/api/src/mail/services/mock.service.ts @@ -0,0 +1,36 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { Logger } from '@nestjs/common' +import { IMailService } from './interface.service' +import { ProjectRole } from '@prisma/client' + +export class MockMailService implements IMailService { + private readonly log = new Logger(MockMailService.name) + + async projectInvitationMailForRegisteredUser( + email: string, + project: string, + actionUrl: string, + invitee: string, + role: ProjectRole + ): Promise { + this.log.log( + `Project Invitation Mail for Registered User: ${email}, ${project}, ${actionUrl}, ${invitee}, ${role}` + ) + } + + async projectInvitationMailForNonRegisteredUser( + email: string, + project: string, + actionUrl: string, + invitee: string, + role: ProjectRole + ): Promise { + this.log.log( + `Project Invitation Mail for Non Registered User: ${email}, ${project}, ${actionUrl}, ${invitee}, ${role}` + ) + } + + async sendOtp(email: string, otp: string): Promise { + this.log.log(`OTP for ${email} is ${otp}`) + } +} diff --git a/apps/api/src/resend/services/resend.service.spec.ts b/apps/api/src/mail/services/resend.service.spec.ts similarity index 56% rename from apps/api/src/resend/services/resend.service.spec.ts rename to apps/api/src/mail/services/resend.service.spec.ts index c2b8594e..6d38790a 100644 --- a/apps/api/src/resend/services/resend.service.spec.ts +++ b/apps/api/src/mail/services/resend.service.spec.ts @@ -1,16 +1,16 @@ import { Test, TestingModule } from '@nestjs/testing' -import { IResendService } from './resend.service.interface' -import { MockResend } from './mock.resend' +import { IMailService } from './interface.service' +import { MockMailService } from './mock.service' describe('ResendService', () => { - let service: IResendService + let service: IMailService beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ - providers: [MockResend] + providers: [MockMailService] }).compile() - service = module.get(MockResend) + service = module.get(MockMailService) }) it('should be defined', () => { diff --git a/apps/api/src/project/controller/project.controller.spec.ts b/apps/api/src/project/controller/project.controller.spec.ts index eccf5090..67aa0a32 100644 --- a/apps/api/src/project/controller/project.controller.spec.ts +++ b/apps/api/src/project/controller/project.controller.spec.ts @@ -7,8 +7,8 @@ import { ENVIRONMENT_REPOSITORY } from '../../environment/repository/interface.r import { MockEnvironmentRepository } from '../../environment/repository/mock.repository' import { USER_REPOSITORY } from '../../user/repository/interface.repository' import { MockUserRepository } from '../../user/repository/mock.repository' -import { RESEND_SERVICE } from '../../resend/services/resend.service.interface' -import { MockResend } from '../../resend/services/mock.resend' +import { MAIL_SERVICE } from '../../mail/services/interface.service' +import { MockMailService } from '../../mail/services/mock.service' import { JwtService } from '@nestjs/jwt' import { ProjectPermission } from '../misc/project.permission' @@ -26,7 +26,7 @@ describe('ProjectController', () => { useClass: MockEnvironmentRepository }, { provide: USER_REPOSITORY, useClass: MockUserRepository }, - { provide: RESEND_SERVICE, useClass: MockResend }, + { provide: MAIL_SERVICE, useClass: MockMailService }, JwtService, ProjectPermission ] diff --git a/apps/api/src/project/service/project.service.spec.ts b/apps/api/src/project/service/project.service.spec.ts index d20fa81c..537ff262 100644 --- a/apps/api/src/project/service/project.service.spec.ts +++ b/apps/api/src/project/service/project.service.spec.ts @@ -6,8 +6,8 @@ import { ENVIRONMENT_REPOSITORY } from '../../environment/repository/interface.r import { MockEnvironmentRepository } from '../../environment/repository/mock.repository' import { USER_REPOSITORY } from '../../user/repository/interface.repository' import { MockUserRepository } from '../../user/repository/mock.repository' -import { MockResend } from '../../resend/services/mock.resend' -import { RESEND_SERVICE } from '../../resend/services/resend.service.interface' +import { MockMailService } from '../../mail/services/mock.service' +import { MAIL_SERVICE } from '../../mail/services/interface.service' import { JwtService } from '@nestjs/jwt' import { ProjectPermission } from '../misc/project.permission' @@ -24,7 +24,7 @@ describe('ProjectService', () => { useClass: MockEnvironmentRepository }, { provide: USER_REPOSITORY, useClass: MockUserRepository }, - { provide: RESEND_SERVICE, useClass: MockResend }, + { provide: MAIL_SERVICE, useClass: MockMailService }, ProjectPermission, JwtService ] diff --git a/apps/api/src/project/service/project.service.ts b/apps/api/src/project/service/project.service.ts index 38dbf594..9bcb93c7 100644 --- a/apps/api/src/project/service/project.service.ts +++ b/apps/api/src/project/service/project.service.ts @@ -25,9 +25,9 @@ import { USER_REPOSITORY } from '../../user/repository/interface.repository' import { - IResendService, - RESEND_SERVICE -} from '../../resend/services/resend.service.interface' + IMailService, + MAIL_SERVICE +} from '../../mail/services/interface.service' import { CurrentUser } from '../../decorators/user.decorator' import { JwtService } from '@nestjs/jwt' import { createKeyPair } from '../../common/create-key-pair' @@ -43,7 +43,7 @@ export class ProjectService { @Inject(ENVIRONMENT_REPOSITORY) private readonly environmentRepository: IEnvironmentRepository, @Inject(USER_REPOSITORY) private readonly userRepository: IUserRepository, - @Inject(RESEND_SERVICE) private readonly resendService: IResendService, + @Inject(MAIL_SERVICE) private readonly resendService: IMailService, private readonly jwt: JwtService, private readonly permission: ProjectPermission ) {} diff --git a/apps/api/src/resend/resend.module.ts b/apps/api/src/resend/resend.module.ts deleted file mode 100644 index f403febe..00000000 --- a/apps/api/src/resend/resend.module.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Global, Module } from '@nestjs/common' -import { MailResend } from './services/mail.resend' -import { RESEND_SERVICE } from './services/resend.service.interface' -import { MockResend } from './services/mock.resend' - -const customProvider = { - provide: RESEND_SERVICE, - useClass: process.env.NODE_ENV === 'test' ? MockResend : MailResend -} - -@Global() -@Module({ - providers: [MailResend, MockResend, customProvider], - exports: [customProvider, MailResend, MockResend] -}) -export class ResendModule {} diff --git a/apps/api/src/resend/services/mock.resend.ts b/apps/api/src/resend/services/mock.resend.ts deleted file mode 100644 index 09b7ff28..00000000 --- a/apps/api/src/resend/services/mock.resend.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ -import { Injectable, Logger } from '@nestjs/common' -import { IResendService } from './resend.service.interface' -import { Resend } from 'resend' -import { $Enums } from '@prisma/client' - -@Injectable() -export class MockResend implements IResendService { - private readonly log = new Logger(MockResend.name) - - constructor() { - // Check if resend is working - new Resend('SOME KEY') - } - projectInvitationMailForRegisteredUser( - email: string, - project: string, - actionUrl: string, - invitee: string, - role: $Enums.ProjectRole - ): Promise { - throw new Error('Method not implemented.') - } - - projectInvitationMailForNonRegisteredUser( - email: string, - project: string, - actionUrl: string, - invitee: string, - role: $Enums.ProjectRole - ): Promise { - throw new Error('Method not implemented.') - } - - async sendOtp(email: string, otp: string): Promise { - this.log.log(`OTP for ${email} is ${otp}`) - } -} diff --git a/package.json b/package.json index f29d091e..7a85a656 100644 --- a/package.json +++ b/package.json @@ -41,77 +41,78 @@ "private": false, "devDependencies": { "@monodon/rust": "^1.3.2", - "@nestjs/schematics": "^10.0.1", - "@nestjs/testing": "^10.0.2", - "@nx/eslint": "^17.2.7", + "@nestjs/schematics": "^10.0.3", + "@nestjs/testing": "^10.3.0", + "@nx/eslint": "^17.2.8", "@nx/eslint-plugin": "17.2.7", "@nx/jest": "17.2.7", "@nx/js": "17.2.7", - "@nx/nest": "^17.2.7", - "@nx/next": "^17.2.7", + "@nx/nest": "^17.2.8", + "@nx/next": "^17.2.8", "@nx/node": "17.2.7", "@nx/react": "17.2.7", "@nx/webpack": "17.2.7", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7", - "@svgr/webpack": "^8.0.1", - "@swc-node/register": "~1.6.7", - "@swc/core": "~1.3.85", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", + "@svgr/webpack": "^8.1.0", + "@swc-node/register": "~1.6.8", + "@swc/core": "~1.3.102", "@testing-library/react": "14.0.0", - "@types/jest": "^29.4.0", + "@types/jest": "^29.5.11", "@types/node": "18.16.9", + "@types/nodemailer": "^6.4.14", "@types/passport-jwt": "^3.0.13", "@types/react": "18.2.33", "@types/react-dom": "18.2.14", - "@typescript-eslint/eslint-plugin": "^6.9.1", - "@typescript-eslint/parser": "^6.9.1", + "@typescript-eslint/eslint-plugin": "^6.17.0", + "@typescript-eslint/parser": "^6.17.0", "autoprefixer": "^10.4.16", - "babel-jest": "^29.4.1", + "babel-jest": "^29.7.0", "eslint": "~8.48.0", "eslint-config-next": "14.0.4", - "eslint-config-prettier": "^9.0.0", + "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "2.27.5", "eslint-plugin-jsx-a11y": "6.7.1", "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", "jest": "^29.7.0", - "jest-environment-jsdom": "^29.4.1", - "jest-environment-node": "^29.4.1", + "jest-environment-jsdom": "^29.7.0", + "jest-environment-node": "^29.7.0", "nx": "17.2.7", "postcss": "^8.4.32", - "prettier": "^2.6.2", + "prettier": "^2.8.8", "prisma": "^5.7.1", "react-refresh": "^0.10.0", "tailwindcss": "^3.4.0", - "ts-jest": "^29.1.0", + "ts-jest": "^29.1.1", "ts-node": "10.9.1", "typescript": "~5.2.2", "url-loader": "^4.1.1" }, "dependencies": { - "@nestjs/common": "^10.0.2", + "@nestjs/common": "^10.3.0", "@nestjs/config": "^3.1.1", - "@nestjs/core": "^10.0.2", + "@nestjs/core": "^10.3.0", "@nestjs/jwt": "^10.2.0", "@nestjs/passport": "^10.0.3", - "@nestjs/platform-express": "^10.0.2", + "@nestjs/platform-express": "^10.3.0", "@nestjs/swagger": "^7.1.17", "@prisma/client": "^5.7.1", - "@supabase/supabase-js": "^2.39.1", - "axios": "^1.0.0", + "@supabase/supabase-js": "^2.39.2", + "axios": "^1.6.3", "chalk": "4.1.2", "class-transformer": "^0.5.1", "class-validator": "^0.14.0", "dotenv": "^16.3.1", "express": "^4.18.2", "husky": "^8.0.3", - "moment": "^2.29.4", + "moment": "^2.30.1", "next": "14.0.4", + "nodemailer": "^6.9.8", "passport-jwt": "^4.0.1", "react": "18.2.0", "react-dom": "18.2.0", - "reflect-metadata": "^0.1.13", - "resend": "^2.0.0", - "rxjs": "^7.8.0", - "tslib": "^2.3.0" + "reflect-metadata": "^0.1.14", + "rxjs": "^7.8.1", + "tslib": "^2.6.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index da5eed9f..7d95a482 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,13 +9,13 @@ importers: .: dependencies: '@nestjs/common': - specifier: ^10.0.2 + specifier: ^10.3.0 version: 10.3.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.14)(rxjs@7.8.1) '@nestjs/config': specifier: ^3.1.1 version: 3.1.1(@nestjs/common@10.3.0)(reflect-metadata@0.1.14) '@nestjs/core': - specifier: ^10.0.2 + specifier: ^10.3.0 version: 10.3.0(@nestjs/common@10.3.0)(@nestjs/platform-express@10.3.0)(reflect-metadata@0.1.14)(rxjs@7.8.1) '@nestjs/jwt': specifier: ^10.2.0 @@ -24,7 +24,7 @@ importers: specifier: ^10.0.3 version: 10.0.3(@nestjs/common@10.3.0)(passport@0.7.0) '@nestjs/platform-express': - specifier: ^10.0.2 + specifier: ^10.3.0 version: 10.3.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0) '@nestjs/swagger': specifier: ^7.1.17 @@ -33,11 +33,11 @@ importers: specifier: ^5.7.1 version: 5.7.1(prisma@5.7.1) '@supabase/supabase-js': - specifier: ^2.39.1 - version: 2.39.1 + specifier: ^2.39.2 + version: 2.39.2 axios: - specifier: ^1.0.0 - version: 1.6.2 + specifier: ^1.6.3 + version: 1.6.3 chalk: specifier: 4.1.2 version: 4.1.2 @@ -57,11 +57,14 @@ importers: specifier: ^8.0.3 version: 8.0.3 moment: - specifier: ^2.29.4 - version: 2.29.4 + specifier: ^2.30.1 + version: 2.30.1 next: specifier: 14.0.4 - version: 14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) + version: 14.0.4(@babel/core@7.23.7)(react-dom@18.2.0)(react@18.2.0) + nodemailer: + specifier: ^6.9.8 + version: 6.9.8 passport-jwt: specifier: ^4.0.1 version: 4.0.1 @@ -72,75 +75,75 @@ importers: specifier: 18.2.0 version: 18.2.0(react@18.2.0) reflect-metadata: - specifier: ^0.1.13 + specifier: ^0.1.14 version: 0.1.14 - resend: - specifier: ^2.0.0 - version: 2.0.0 rxjs: - specifier: ^7.8.0 + specifier: ^7.8.1 version: 7.8.1 tslib: - specifier: ^2.3.0 + specifier: ^2.6.2 version: 2.6.2 devDependencies: '@monodon/rust': specifier: ^1.3.2 - version: 1.3.2(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(typescript@5.2.2) + version: 1.3.2(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(typescript@5.2.2) '@nestjs/schematics': - specifier: ^10.0.1 + specifier: ^10.0.3 version: 10.0.3(typescript@5.2.2) '@nestjs/testing': - specifier: ^10.0.2 + specifier: ^10.3.0 version: 10.3.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(@nestjs/platform-express@10.3.0) '@nx/eslint': - specifier: ^17.2.7 - version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) + specifier: ^17.2.8 + version: 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) '@nx/eslint-plugin': specifier: 17.2.7 - version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(@typescript-eslint/parser@6.15.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2) + version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(@typescript-eslint/parser@6.17.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2) '@nx/jest': specifier: 17.2.7 - version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) + version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) '@nx/js': specifier: 17.2.7 - version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) '@nx/nest': - specifier: ^17.2.7 - version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) + specifier: ^17.2.8 + version: 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) '@nx/next': - specifier: ^17.2.7 - version: 17.2.7(@babel/core@7.23.6)(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(next@14.0.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) + specifier: ^17.2.8 + version: 17.2.8(@babel/core@7.23.7)(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(next@14.0.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) '@nx/node': specifier: 17.2.7 - version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) + version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) '@nx/react': specifier: 17.2.7 - version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) + version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) '@nx/webpack': specifier: 17.2.7 - version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) '@pmmmwh/react-refresh-webpack-plugin': - specifier: ^0.5.7 + specifier: ^0.5.11 version: 0.5.11(react-refresh@0.10.0)(webpack@5.89.0) '@svgr/webpack': - specifier: ^8.0.1 + specifier: ^8.1.0 version: 8.1.0(typescript@5.2.2) '@swc-node/register': - specifier: ~1.6.7 - version: 1.6.8(@swc/core@1.3.101)(typescript@5.2.2) + specifier: ~1.6.8 + version: 1.6.8(@swc/core@1.3.102)(typescript@5.2.2) '@swc/core': - specifier: ~1.3.85 - version: 1.3.101 + specifier: ~1.3.102 + version: 1.3.102 '@testing-library/react': specifier: 14.0.0 version: 14.0.0(react-dom@18.2.0)(react@18.2.0) '@types/jest': - specifier: ^29.4.0 + specifier: ^29.5.11 version: 29.5.11 '@types/node': specifier: 18.16.9 version: 18.16.9 + '@types/nodemailer': + specifier: ^6.4.14 + version: 6.4.14 '@types/passport-jwt': specifier: ^3.0.13 version: 3.0.13 @@ -151,17 +154,17 @@ importers: specifier: 18.2.14 version: 18.2.14 '@typescript-eslint/eslint-plugin': - specifier: ^6.9.1 - version: 6.15.0(@typescript-eslint/parser@6.15.0)(eslint@8.48.0)(typescript@5.2.2) + specifier: ^6.17.0 + version: 6.17.0(@typescript-eslint/parser@6.17.0)(eslint@8.48.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: ^6.9.1 - version: 6.15.0(eslint@8.48.0)(typescript@5.2.2) + specifier: ^6.17.0 + version: 6.17.0(eslint@8.48.0)(typescript@5.2.2) autoprefixer: specifier: ^10.4.16 version: 10.4.16(postcss@8.4.32) babel-jest: - specifier: ^29.4.1 - version: 29.7.0(@babel/core@7.23.6) + specifier: ^29.7.0 + version: 29.7.0(@babel/core@7.23.7) eslint: specifier: ~8.48.0 version: 8.48.0 @@ -169,11 +172,11 @@ importers: specifier: 14.0.4 version: 14.0.4(eslint@8.48.0)(typescript@5.2.2) eslint-config-prettier: - specifier: ^9.0.0 + specifier: ^9.1.0 version: 9.1.0(eslint@8.48.0) eslint-plugin-import: specifier: 2.27.5 - version: 2.27.5(@typescript-eslint/parser@6.15.0)(eslint@8.48.0) + version: 2.27.5(@typescript-eslint/parser@6.17.0)(eslint@8.48.0) eslint-plugin-jsx-a11y: specifier: 6.7.1 version: 6.7.1(eslint@8.48.0) @@ -187,19 +190,19 @@ importers: specifier: ^29.7.0 version: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1) jest-environment-jsdom: - specifier: ^29.4.1 + specifier: ^29.7.0 version: 29.7.0 jest-environment-node: - specifier: ^29.4.1 + specifier: ^29.7.0 version: 29.7.0 nx: specifier: 17.2.7 - version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101) + version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102) postcss: specifier: ^8.4.32 version: 8.4.32 prettier: - specifier: ^2.6.2 + specifier: ^2.8.8 version: 2.8.8 prisma: specifier: ^5.7.1 @@ -211,11 +214,11 @@ importers: specifier: ^3.4.0 version: 3.4.0(ts-node@10.9.1) ts-jest: - specifier: ^29.1.0 - version: 29.1.1(@babel/core@7.23.6)(babel-jest@29.7.0)(jest@29.7.0)(typescript@5.2.2) + specifier: ^29.1.1 + version: 29.1.1(@babel/core@7.23.7)(babel-jest@29.7.0)(jest@29.7.0)(typescript@5.2.2) ts-node: specifier: 10.9.1 - version: 10.9.1(@swc/core@1.3.101)(@types/node@18.16.9)(typescript@5.2.2) + version: 10.9.1(@swc/core@1.3.102)(@types/node@18.16.9)(typescript@5.2.2) typescript: specifier: ~5.2.2 version: 5.2.2 @@ -324,19 +327,19 @@ packages: resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} - /@babel/core@7.23.6: - resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} + /@babel/core@7.23.7: + resolution: {integrity: sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.23.5 '@babel/generator': 7.23.6 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) - '@babel/helpers': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/helpers': 7.23.7 '@babel/parser': 7.23.6 '@babel/template': 7.22.15 - '@babel/traverse': 7.23.6 + '@babel/traverse': 7.23.7 '@babel/types': 7.23.6 convert-source-map: 2.0.0 debug: 4.3.4 @@ -379,42 +382,42 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.23.6(@babel/core@7.23.6): - resolution: {integrity: sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==} + /@babel/helper-create-class-features-plugin@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 dev: true - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.6): + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.7): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 dev: true - /@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.23.6): + /@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.23.7): resolution: {integrity: sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4 @@ -454,13 +457,13 @@ packages: dependencies: '@babel/types': 7.23.6 - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 @@ -479,25 +482,25 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.6): + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.7): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 dev: true - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.6): + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.7): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 @@ -543,12 +546,12 @@ packages: '@babel/types': 7.23.6 dev: true - /@babel/helpers@7.23.6: - resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} + /@babel/helpers@7.23.7: + resolution: {integrity: sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.23.6 + '@babel/traverse': 7.23.7 '@babel/types': 7.23.6 transitivePeerDependencies: - supports-color @@ -568,1026 +571,1023 @@ packages: dependencies: '@babel/types': 7.23.6 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.6): + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.6): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.7) dev: true - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.6): - resolution: {integrity: sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==} + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-proposal-decorators@7.23.6(@babel/core@7.23.6): - resolution: {integrity: sha512-D7Ccq9LfkBFnow3azZGJvZYgcfeqAw3I1e5LoTpj6UKIFQilh8yqXsIGcRIqbBdsPWIz+Ze7ZZfggSj62Qp+Fg==} + /@babel/plugin-proposal-decorators@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-b1s5JyeMvqj7d9m9KhJNHKc18gEJiSyVzVX3bwbiPalQBQpuvfPh6lA9F7Kk/dWH0TIiXRpB9yicwijY6buPng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.23.7) dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.6): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.6): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.7): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.6): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.6): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.7): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.6): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.7): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-decorators@7.23.3(@babel/core@7.23.6): + /@babel/plugin-syntax-decorators@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.6): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.6): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.6): + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.6): + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.6): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.7): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.6): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.6): + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.6): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.7): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.6): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.6): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.7): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.6): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.6): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.6): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.6): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.7): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.6): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.7): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.6): + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.6): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.7): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-async-generator-functions@7.23.4(@babel/core@7.23.6): - resolution: {integrity: sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==} + /@babel/plugin-transform-async-generator-functions@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.6) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.6) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.6): + /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.6): + /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.6) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-classes@7.23.5(@babel/core@7.23.6): + /@babel/plugin-transform-classes@7.23.5(@babel/core@7.23.7): resolution: {integrity: sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: true - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 dev: true - /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.6): + /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.6): + /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.6): + /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.7): resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.6): + /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.6): + /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 dev: true - /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.6): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.7): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.6): + /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.6): + /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.6): + /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.6): + /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.6): + /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.6): + /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.6) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.6): + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.7): resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.6): + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7) '@babel/types': 7.23.6 dev: true - /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 dev: true - /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-runtime@7.23.6(@babel/core@7.23.6): - resolution: {integrity: sha512-kF1Zg62aPseQ11orDhFRw+aPG/eynNQtI+TyY+m33qJa2cJ5EEvza2P2BNTIA9E5MyqFABHEyY6CPHwgdy9aNg==} + /@babel/plugin-transform-runtime@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-fa0hnfmiXc9fq/weK34MUV0drz2pOL/vfKWvN7Qw127hiUPabFCUMgAbYWcchRzMJit4o5ARsK/s+5h0249pLw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.23.6) - babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.6) - babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.23.6) + babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.23.7) + babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.7) + babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.23.7) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.6): + /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.7): resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/preset-env@7.23.6(@babel/core@7.23.6): - resolution: {integrity: sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==} + /@babel/preset-env@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-SY27X/GtTz/L4UryMNJ6p4fH4nsgWbz84y9FE0bQeWJP6O5BhgVCt53CotQKHCOeXJel8VyhlhujhlltKms/CA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.6) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.6) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.6) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.6) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.6) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.6) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.6) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-async-generator-functions': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.6) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.6) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.6) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.6) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.6) - babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.23.6) - babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.6) - babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.23.6) - core-js-compat: 3.34.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.23.7) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.7) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.7) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.7) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-async-generator-functions': 7.23.7(@babel/core@7.23.7) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.7) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.7) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.7) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.7) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.7) + babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.23.7) + babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.7) + babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.23.7) + core-js-compat: 3.35.0 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.6): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.7): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/types': 7.23.6 esutils: 2.0.3 dev: true - /@babel/preset-react@7.23.3(@babel/core@7.23.6): + /@babel/preset-react@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.6) - '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.7) + '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.7) dev: true - /@babel/preset-typescript@7.23.3(@babel/core@7.23.6): + /@babel/preset-typescript@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.6) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.7) dev: true /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true - /@babel/runtime@7.23.6: - resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} + /@babel/runtime@7.23.7: + resolution: {integrity: sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 @@ -1601,8 +1601,8 @@ packages: '@babel/parser': 7.23.6 '@babel/types': 7.23.6 - /@babel/traverse@7.23.6: - resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} + /@babel/traverse@7.23.7: + resolution: {integrity: sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 @@ -1704,6 +1704,7 @@ packages: strip-ansi-cjs: /strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} @@ -1846,7 +1847,7 @@ packages: chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 - glob: 7.1.4 + glob: 7.2.3 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.2 istanbul-lib-instrument: 6.0.1 @@ -1904,7 +1905,7 @@ packages: resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.20 babel-plugin-istanbul: 6.1.1 @@ -1986,14 +1987,14 @@ packages: resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} engines: {node: '>=8'} - /@monodon/rust@1.3.2(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(typescript@5.2.2): + /@monodon/rust@1.3.2(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(typescript@5.2.2): resolution: {integrity: sha512-WcI8y0s8mVngdF/nwvki5EP3LS7YDnIxZyMcU34iVT6flVexcipN2F89e0pLb8ER9yS2AaMyvuDyX1JlqDi9bg==} dependencies: '@ltd/j-toml': 1.38.0 '@nx/devkit': 17.1.2(nx@17.1.2) - '@nx/js': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.1.2)(typescript@5.2.2) + '@nx/js': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.1.2)(typescript@5.2.2) chalk: 4.1.2 - nx: 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101) + nx: 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102) tslib: 2.6.2 transitivePeerDependencies: - '@babel/traverse' @@ -2323,10 +2324,18 @@ packages: - nx dev: true - /@nrwl/eslint-plugin-nx@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(@typescript-eslint/parser@6.15.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2): + /@nrwl/devkit@17.2.8(nx@17.2.7): + resolution: {integrity: sha512-l2dFy5LkWqSA45s6pee6CoqJeluH+sjRdVnAAQfjLHRNSx6mFAKblyzq5h1f4P0EUCVVVqLs+kVqmNx5zxYqvw==} + dependencies: + '@nx/devkit': 17.2.8(nx@17.2.7) + transitivePeerDependencies: + - nx + dev: true + + /@nrwl/eslint-plugin-nx@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(@typescript-eslint/parser@6.17.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2): resolution: {integrity: sha512-YGH3FL4Dz+a9r2xmZx/SMUFOUl/An6IsZeTqkG5gC+ErejX9nT1KWOXMNh5bkl+jz0b4NvkiVvgQw+W4q2K9sg==} dependencies: - '@nx/eslint-plugin': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(@typescript-eslint/parser@6.15.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2) + '@nx/eslint-plugin': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(@typescript-eslint/parser@6.17.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -2343,10 +2352,30 @@ packages: - verdaccio dev: true - /@nrwl/jest@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): + /@nrwl/jest@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): resolution: {integrity: sha512-jYeBQbS9iaybLxmxFv6N9qftRHyRpG3YlDxiHXXmWPX0OrgDjNSY3QCCReM8iqADk2TaxoIw1WDKp4tKzft2xA==} dependencies: - '@nx/jest': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) + '@nx/jest': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - babel-plugin-macros + - debug + - node-notifier + - nx + - supports-color + - ts-node + - typescript + - verdaccio + dev: true + + /@nrwl/jest@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): + resolution: {integrity: sha512-suyAm+5dj03ZevZW0fEZJSn+au1k6+OGPo4LKQ9Y4u/QJW52d2k0nOzrKu79CwkdKP5PFhjnvPP4Oo93RbNNnA==} + dependencies: + '@nx/jest': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -2363,10 +2392,10 @@ packages: - verdaccio dev: true - /@nrwl/js@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.1.2)(typescript@5.2.2): + /@nrwl/js@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.1.2)(typescript@5.2.2): resolution: {integrity: sha512-70Fx//GJdRt2Uo6ft07Up+eeSK2+jqUnkBhvGLauro91g9SVSgbHlhj+D8l86wccyKz/OULod29WEBkA6Z/t3Q==} dependencies: - '@nx/js': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.1.2)(typescript@5.2.2) + '@nx/js': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.1.2)(typescript@5.2.2) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -2380,10 +2409,10 @@ packages: - verdaccio dev: true - /@nrwl/js@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): + /@nrwl/js@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): resolution: {integrity: sha512-8AAUmqESQ89Cbark8DlkElINMmDpEJLivan6RPksUUEK6lrZQwVnHf4eWLQzN2/C4i5XkfdxavzluuDPCqHQSQ==} dependencies: - '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -2397,10 +2426,27 @@ packages: - verdaccio dev: true - /@nrwl/nest@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): - resolution: {integrity: sha512-BbJMdB5+PKPhrYW78jvNizipcUya2DlXNddwruW6GZ8QAYMRaVg9xFxbX7nMO4rRBBqCqmE00Two3aGiMm5L2Q==} + /@nrwl/js@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): + resolution: {integrity: sha512-ZfTGNSmSBqvEfP8NOfOHcnqKwhXsfqBrN4IhthQR02sqTA9GkrjSfSUtcGXY01fUitsNUDOn6RZjgX6UysDCXg==} dependencies: - '@nx/nest': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) + '@nx/js': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - debug + - nx + - supports-color + - typescript + - verdaccio + dev: true + + /@nrwl/nest@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): + resolution: {integrity: sha512-pj2UNE7XM/7JdKlGhywXOVaCXZE3Fpd7eoZNZc8fBq+pcxvX3ylh4KLmnCwcSaKlcqFsYkWbmj6xDBJx8xSGoA==} + dependencies: + '@nx/nest': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -2420,10 +2466,10 @@ packages: - verdaccio dev: true - /@nrwl/next@17.2.7(@babel/core@7.23.6)(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(next@14.0.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0): - resolution: {integrity: sha512-KCaifr5dIoexOAqfyFsQa+A6quPQo9AlBi30e22z4pXIrGx/JjmRMui6aEOCO03AME4aNfw2cRzbMtDBLEEeeg==} + /@nrwl/next@17.2.8(@babel/core@7.23.7)(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(next@14.0.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0): + resolution: {integrity: sha512-AeI5UT9KplhzOUvgXtfpjKHoUTF+OwUJs4y14kAD/W15+dnfRslyr2TiKcwEvKWGoUa2Sw/KAm9WnzhT1IrgOg==} dependencies: - '@nx/next': 17.2.7(@babel/core@7.23.6)(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(next@14.0.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) + '@nx/next': 17.2.8(@babel/core@7.23.7)(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(next@14.0.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) transitivePeerDependencies: - '@babel/core' - '@babel/traverse' @@ -2443,10 +2489,10 @@ packages: - webpack dev: true - /@nrwl/node@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): + /@nrwl/node@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): resolution: {integrity: sha512-tWc9tFnQ2ue0Wv2NcMV3fJD1Kqh/vHeV/81ppeLtoYa5GBXViRJPdUinGlez0qiYegEdUbieWjDp255GIEifTw==} dependencies: - '@nx/node': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) + '@nx/node': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -2465,10 +2511,32 @@ packages: - verdaccio dev: true - /@nrwl/react@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0): + /@nrwl/node@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): + resolution: {integrity: sha512-DGwPAasjDgSrNJcB2qcCA7y02licJFCNyiGhEnIhLEUCWOyPCrAsuPmBy4/QYFoiEP6YOsIpJac/1p+9QWeJ7Q==} + dependencies: + '@nx/node': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - babel-plugin-macros + - debug + - eslint + - js-yaml + - node-notifier + - nx + - supports-color + - ts-node + - typescript + - verdaccio + dev: true + + /@nrwl/react@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0): resolution: {integrity: sha512-vRlJWdiPeAgkKe7XUWPceh+vocGfL8CJFmsK2mRy5BWr5rVEJ9l30c9mP7LMxukgi2NPgh1hURvCaZrlErEJ9A==} dependencies: - '@nx/react': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) + '@nx/react': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -2485,11 +2553,31 @@ packages: - webpack dev: true - /@nrwl/tao@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101): + /@nrwl/react@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0): + resolution: {integrity: sha512-fj5Qf3B3Nok8T8lF9DpYEeP7DWqP7KF/jBO6h4eniTifh5BRjEq5PaRIhMiVMdepqQiWMPd2tsZyf9nx1qzY6w==} + dependencies: + '@nx/react': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - debug + - eslint + - js-yaml + - nx + - supports-color + - typescript + - verdaccio + - webpack + dev: true + + /@nrwl/tao@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102): resolution: {integrity: sha512-tL+dlygeor/kLG5fuK5qaiVFJ4hEtvJ/E+xY9epp20UKCNQSEkrSFiesiXtX6E/PPf4YbOQ4B4itWR2EYCm03Q==} hasBin: true dependencies: - nx: 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101) + nx: 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102) tslib: 2.6.2 transitivePeerDependencies: - '@swc-node/register' @@ -2497,11 +2585,11 @@ packages: - debug dev: true - /@nrwl/tao@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101): + /@nrwl/tao@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102): resolution: {integrity: sha512-06YYR1Ndb+nAJaQuvi2J3bX7i2dStQvDHkT+qprUXKxOrggFcPcs+7e2LwNWKDGdCu4r0qFHPlamj7y5d6qM2Q==} hasBin: true dependencies: - nx: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101) + nx: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102) tslib: 2.6.2 transitivePeerDependencies: - '@swc-node/register' @@ -2509,10 +2597,22 @@ packages: - debug dev: true - /@nrwl/web@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): + /@nrwl/tao@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102): + resolution: {integrity: sha512-Qpk5YKeJ+LppPL/wtoDyNGbJs2MsTi6qyX/RdRrEc8lc4bk6Cw3Oul1qTXCI6jT0KzTz+dZtd0zYD/G7okkzvg==} + hasBin: true + dependencies: + nx: 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102) + tslib: 2.6.2 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - debug + dev: true + + /@nrwl/web@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): resolution: {integrity: sha512-ZlGkmth0qqqQ0WyV6JhdNswSbgOEiDR0G8XJXeoHkDFeThlaU20JyMrqTGNDpQ04d9EpvItvv+bAueg/BLASOw==} dependencies: - '@nx/web': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/web': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -2526,10 +2626,27 @@ packages: - verdaccio dev: true - /@nrwl/webpack@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): + /@nrwl/web@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): + resolution: {integrity: sha512-oBiuSQ7Q6hOXHuZW5Gf8m0gcrLTV78jxhSjmhC5F6yzgvBvnfMpCdrJn7W1G+O+kEg3byko8v+Rz39tfc8YPjg==} + dependencies: + '@nx/web': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - debug + - nx + - supports-color + - typescript + - verdaccio + dev: true + + /@nrwl/webpack@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): resolution: {integrity: sha512-Ornp2N/cdUNnht0ojjQrtE3ko+JpvAvWvStdZCVfXULMzy96CpGjPzRBkrX+iNee1GYEJXiHFUZhA+n6NlKB3A==} dependencies: - '@nx/webpack': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/webpack': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) transitivePeerDependencies: - '@babel/traverse' - '@parcel/css' @@ -2558,20 +2675,30 @@ packages: - webpack-cli dev: true - /@nrwl/workspace@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101): + /@nrwl/workspace@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102): resolution: {integrity: sha512-1MymxYcX5YPrTSuZhQ6V0MhqAFB+8Bm2O9EJHpj4VS9LKIWwDche4DkqypmhbTeAzagr5YIWqaKtPCrkP0tn8w==} dependencies: - '@nx/workspace': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101) + '@nx/workspace': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102) transitivePeerDependencies: - '@swc-node/register' - '@swc/core' - debug dev: true - /@nrwl/workspace@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101): + /@nrwl/workspace@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102): resolution: {integrity: sha512-qYb2iLliBfS4IwS1aGqeXgyFzdEcXvu+4jxZpROTcg4THJLYni3XhI/Y8gfi4OVzzCadKILMxiOukZKjjIDPlA==} dependencies: - '@nx/workspace': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101) + '@nx/workspace': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102) + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - debug + dev: true + + /@nrwl/workspace@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102): + resolution: {integrity: sha512-RiTDTuzdueZ+++kNQAENHdHbYToOhzO56XWxKOGoMEUSpcmbKRAFReFBzNqD91Fnv562vkW1VNRIb6Ey7X1YHQ==} + dependencies: + '@nx/workspace': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102) transitivePeerDependencies: - '@swc-node/register' - '@swc/core' @@ -2598,7 +2725,7 @@ packages: ejs: 3.1.9 enquirer: 2.3.6 ignore: 5.3.0 - nx: 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101) + nx: 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102) semver: 7.5.3 tmp: 0.2.1 tslib: 2.6.2 @@ -2613,13 +2740,43 @@ packages: ejs: 3.1.9 enquirer: 2.3.6 ignore: 5.3.0 - nx: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101) + nx: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102) + semver: 7.5.3 + tmp: 0.2.1 + tslib: 2.6.2 + dev: true + + /@nx/devkit@17.2.8(nx@17.2.7): + resolution: {integrity: sha512-6LtiQihtZwqz4hSrtT5cCG5XMCWppG6/B8c1kNksg97JuomELlWyUyVF+sxmeERkcLYFaKPTZytP0L3dmCFXaw==} + peerDependencies: + nx: '>= 16 <= 18' + dependencies: + '@nrwl/devkit': 17.2.8(nx@17.2.7) + ejs: 3.1.9 + enquirer: 2.3.6 + ignore: 5.3.0 + nx: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102) semver: 7.5.3 tmp: 0.2.1 tslib: 2.6.2 dev: true - /@nx/eslint-plugin@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(@typescript-eslint/parser@6.15.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2): + /@nx/devkit@17.2.8(nx@17.2.8): + resolution: {integrity: sha512-6LtiQihtZwqz4hSrtT5cCG5XMCWppG6/B8c1kNksg97JuomELlWyUyVF+sxmeERkcLYFaKPTZytP0L3dmCFXaw==} + peerDependencies: + nx: '>= 16 <= 18' + dependencies: + '@nrwl/devkit': 17.2.8(nx@17.2.7) + ejs: 3.1.9 + enquirer: 2.3.6 + ignore: 5.3.0 + nx: 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102) + semver: 7.5.3 + tmp: 0.2.1 + tslib: 2.6.2 + dev: true + + /@nx/eslint-plugin@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(@typescript-eslint/parser@6.17.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2): resolution: {integrity: sha512-emKsCaWDOPekCJvuE6QE6CHwSR4RKULdOHotnSaE3J65cgair9djsR8SNUELsqpTSfEmtfB53Z0oZYw4zdeiFQ==} peerDependencies: '@typescript-eslint/parser': ^6.9.1 @@ -2628,12 +2785,12 @@ packages: eslint-config-prettier: optional: true dependencies: - '@nrwl/eslint-plugin-nx': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(@typescript-eslint/parser@6.15.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2) + '@nrwl/eslint-plugin-nx': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(@typescript-eslint/parser@6.17.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2) '@nx/devkit': 17.2.7(nx@17.2.7) - '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) - '@typescript-eslint/parser': 6.15.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/type-utils': 6.15.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.15.0(eslint@8.48.0)(typescript@5.2.2) + '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@typescript-eslint/parser': 6.17.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/type-utils': 6.17.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.17.0(eslint@8.48.0)(typescript@5.2.2) chalk: 4.1.2 confusing-browser-globals: 1.0.11 eslint-config-prettier: 9.1.0(eslint@8.48.0) @@ -2654,7 +2811,7 @@ packages: - verdaccio dev: true - /@nx/eslint@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7): + /@nx/eslint@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7): resolution: {integrity: sha512-A/+J9rcb9FUwGpEc5yFjFWcoF36PfXc6twOGLceFwj+oOG65h7kUnpuJgWK8gTIh911lij3TdmE6MiqSXPu3tQ==} peerDependencies: eslint: ^8.0.0 @@ -2666,8 +2823,8 @@ packages: optional: true dependencies: '@nx/devkit': 17.2.7(nx@17.2.7) - '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) - '@nx/linter': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) + '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/linter': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) eslint: 8.48.0 tslib: 2.6.2 typescript: 5.2.2 @@ -2683,14 +2840,43 @@ packages: - verdaccio dev: true - /@nx/jest@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): + /@nx/eslint@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7): + resolution: {integrity: sha512-P6s85cIK7LYHixCJFZ+tLCPDxeOt9m2bQQOLxBCLEy5mqaGmjMHzWkLaoQBueCSntE6PSao0MMA+1TeeZjOoDw==} + peerDependencies: + eslint: ^8.0.0 + js-yaml: 4.1.0 + peerDependenciesMeta: + eslint: + optional: true + js-yaml: + optional: true + dependencies: + '@nx/devkit': 17.2.8(nx@17.2.7) + '@nx/js': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/linter': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) + eslint: 8.48.0 + tslib: 2.6.2 + typescript: 5.2.2 + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - debug + - nx + - supports-color + - verdaccio + dev: true + + /@nx/jest@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): resolution: {integrity: sha512-lfUBZ1eCdO2ML2AdPiuXkMcQvuHaevYHB4wrRoUEQp/jui8m8ZQtIaihEy+8nmnSQTSGpCxlILRLpaNQ8gqCoQ==} dependencies: '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 - '@nrwl/jest': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) + '@nrwl/jest': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) '@nx/devkit': 17.2.7(nx@17.2.7) - '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.2.2) chalk: 4.1.2 identity-obj-proxy: 3.0.0 @@ -2715,7 +2901,39 @@ packages: - verdaccio dev: true - /@nx/js@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.1.2)(typescript@5.2.2): + /@nx/jest@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): + resolution: {integrity: sha512-FnwwURXmG+uv5ELHjHd9uVbUioCPjefAOtENcasLJMs2WYeu3zePsru5B8GO9BBM5g2eTmw10Y5f0riAikZjcw==} + dependencies: + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@nrwl/jest': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) + '@nx/devkit': 17.2.8(nx@17.2.7) + '@nx/js': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@phenomnomnominal/tsquery': 5.0.1(typescript@5.2.2) + chalk: 4.1.2 + identity-obj-proxy: 3.0.0 + jest-config: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1) + jest-resolve: 29.7.0 + jest-util: 29.7.0 + resolve.exports: 1.1.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - babel-plugin-macros + - debug + - node-notifier + - nx + - supports-color + - ts-node + - typescript + - verdaccio + dev: true + + /@nx/js@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.1.2)(typescript@5.2.2): resolution: {integrity: sha512-3fPiOEw+iD1Bc+AvfdGgMSCYDYxAGmZ01lHp/RERTyCHroEoMiq8yiTBbET6TPOvKOBMXA+pR2Ux04QA3S4N6Q==} peerDependencies: verdaccio: ^5.0.4 @@ -2723,20 +2941,20 @@ packages: verdaccio: optional: true dependencies: - '@babel/core': 7.23.6 - '@babel/plugin-proposal-decorators': 7.23.6(@babel/core@7.23.6) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-runtime': 7.23.6(@babel/core@7.23.6) - '@babel/preset-env': 7.23.6(@babel/core@7.23.6) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.6) - '@babel/runtime': 7.23.6 - '@nrwl/js': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.1.2)(typescript@5.2.2) + '@babel/core': 7.23.7 + '@babel/plugin-proposal-decorators': 7.23.7(@babel/core@7.23.7) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-runtime': 7.23.7(@babel/core@7.23.7) + '@babel/preset-env': 7.23.7(@babel/core@7.23.7) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) + '@babel/runtime': 7.23.7 + '@nrwl/js': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.1.2)(typescript@5.2.2) '@nx/devkit': 17.1.2(nx@17.1.2) - '@nx/workspace': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101) + '@nx/workspace': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.2.2) - babel-plugin-const-enum: 1.2.0(@babel/core@7.23.6) + babel-plugin-const-enum: 1.2.0(@babel/core@7.23.7) babel-plugin-macros: 2.8.0 - babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.23.6) + babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.23.7) chalk: 4.1.2 columnify: 1.6.0 detect-port: 1.5.1 @@ -2750,7 +2968,7 @@ packages: ora: 5.3.0 semver: 7.5.3 source-map-support: 0.5.19 - ts-node: 10.9.1(@swc/core@1.3.101)(@types/node@18.16.9)(typescript@5.2.2) + ts-node: 10.9.1(@swc/core@1.3.102)(@types/node@18.16.9)(typescript@5.2.2) tsconfig-paths: 4.2.0 tslib: 2.6.2 transitivePeerDependencies: @@ -2765,7 +2983,7 @@ packages: - typescript dev: true - /@nx/js@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): + /@nx/js@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): resolution: {integrity: sha512-IghIrp26b9TprxDzJlqH1ZLer+dNmnSDjoT1jviQWcjNY/8wUxe3avd7niMCpfYD6+r7sSGPZ+KVQSRwT3L09g==} peerDependencies: verdaccio: ^5.0.4 @@ -2773,20 +2991,70 @@ packages: verdaccio: optional: true dependencies: - '@babel/core': 7.23.6 - '@babel/plugin-proposal-decorators': 7.23.6(@babel/core@7.23.6) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-runtime': 7.23.6(@babel/core@7.23.6) - '@babel/preset-env': 7.23.6(@babel/core@7.23.6) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.6) - '@babel/runtime': 7.23.6 - '@nrwl/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@babel/core': 7.23.7 + '@babel/plugin-proposal-decorators': 7.23.7(@babel/core@7.23.7) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-runtime': 7.23.7(@babel/core@7.23.7) + '@babel/preset-env': 7.23.7(@babel/core@7.23.7) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) + '@babel/runtime': 7.23.7 + '@nrwl/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) '@nx/devkit': 17.2.7(nx@17.2.7) - '@nx/workspace': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101) + '@nx/workspace': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102) + '@phenomnomnominal/tsquery': 5.0.1(typescript@5.2.2) + babel-plugin-const-enum: 1.2.0(@babel/core@7.23.7) + babel-plugin-macros: 2.8.0 + babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.23.7) + chalk: 4.1.2 + columnify: 1.6.0 + detect-port: 1.5.1 + fast-glob: 3.2.7 + fs-extra: 11.2.0 + ignore: 5.3.0 + js-tokens: 4.0.0 + minimatch: 3.0.5 + npm-package-arg: 11.0.1 + npm-run-path: 4.0.1 + ora: 5.3.0 + semver: 7.5.3 + source-map-support: 0.5.19 + ts-node: 10.9.1(@swc/core@1.3.102)(@types/node@18.16.9)(typescript@5.2.2) + tsconfig-paths: 4.2.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - debug + - nx + - supports-color + - typescript + dev: true + + /@nx/js@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): + resolution: {integrity: sha512-M91tw9tfSnkoC8pZaC9wNxrgaFU4MeQcgdT08ievaroo77kH4RheySsU1uNc0J58Jk4X4315wu/X7Bf/35m0Mw==} + peerDependencies: + verdaccio: ^5.0.4 + peerDependenciesMeta: + verdaccio: + optional: true + dependencies: + '@babel/core': 7.23.7 + '@babel/plugin-proposal-decorators': 7.23.7(@babel/core@7.23.7) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-runtime': 7.23.7(@babel/core@7.23.7) + '@babel/preset-env': 7.23.7(@babel/core@7.23.7) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) + '@babel/runtime': 7.23.7 + '@nrwl/js': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/devkit': 17.2.8(nx@17.2.7) + '@nx/workspace': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.2.2) - babel-plugin-const-enum: 1.2.0(@babel/core@7.23.6) + babel-plugin-const-enum: 1.2.0(@babel/core@7.23.7) babel-plugin-macros: 2.8.0 - babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.23.6) + babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.23.7) chalk: 4.1.2 columnify: 1.6.0 detect-port: 1.5.1 @@ -2800,7 +3068,7 @@ packages: ora: 5.3.0 semver: 7.5.3 source-map-support: 0.5.19 - ts-node: 10.9.1(@swc/core@1.3.101)(@types/node@18.16.9)(typescript@5.2.2) + ts-node: 10.9.1(@swc/core@1.3.102)(@types/node@18.16.9)(typescript@5.2.2) tsconfig-paths: 4.2.0 tslib: 2.6.2 transitivePeerDependencies: @@ -2815,10 +3083,10 @@ packages: - typescript dev: true - /@nx/linter@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7): + /@nx/linter@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7): resolution: {integrity: sha512-t85R1r+fiEV8wwU6mAD9kKq+YqAxwzBDp3Dx42cX5uokp2jsUKcTHYsibTJ7SVgViJicDLoVDonlJc8SxA0cfQ==} dependencies: - '@nx/eslint': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) + '@nx/eslint': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -2833,15 +3101,33 @@ packages: - verdaccio dev: true - /@nx/nest@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): - resolution: {integrity: sha512-Gjam5Bciq1AUv8VGtL56SeKv2NgZBgojSU85xJAfGbAUoOxgmiS2hbtORlScE0G22BU+mUFy0J7l9tlslq2amQ==} + /@nx/linter@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7): + resolution: {integrity: sha512-dwqE742TIw1+/djzlikKakIfComq8nFnhupWjvl7KrU9r8ytcKyQbxHw7KGMUT9HAEG4xSNuwiaELr/8w4MM2Q==} + dependencies: + '@nx/eslint': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - debug + - eslint + - js-yaml + - nx + - supports-color + - verdaccio + dev: true + + /@nx/nest@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): + resolution: {integrity: sha512-VZ84VBWACcABjU4djWHHVxY83g3VTkg13AjAeZWyvPAMkNqS05e2jj3CpPVd4EAbwqXX3/CLM/bLKRuGWpYCWg==} dependencies: '@nestjs/schematics': 9.2.0(typescript@5.2.2) - '@nrwl/nest': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) - '@nx/devkit': 17.2.7(nx@17.2.7) - '@nx/eslint': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) - '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) - '@nx/node': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) + '@nrwl/nest': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) + '@nx/devkit': 17.2.8(nx@17.2.7) + '@nx/eslint': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) + '@nx/js': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/node': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.2.2) tslib: 2.6.2 transitivePeerDependencies: @@ -2863,25 +3149,25 @@ packages: - verdaccio dev: true - /@nx/next@17.2.7(@babel/core@7.23.6)(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(next@14.0.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0): - resolution: {integrity: sha512-nQV4EK1kla0gU/UdQMK7GmbSOXFZ/MzaGrTsUadpTjqR5k+Zavy1mD++BukyI7TBIJBPaN0vfu2rTO1WxMhXOw==} + /@nx/next@17.2.8(@babel/core@7.23.7)(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(next@14.0.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0): + resolution: {integrity: sha512-CqzcLyrLl5H82zb+3oL/Jh9GfoLgK8qLyJ3w4vUR2M0UbunKC6NyfQ2qLzlTBkiKY557x2o/8zTwXyGcpO34fA==} peerDependencies: next: '>=13.0.0' dependencies: - '@babel/plugin-proposal-decorators': 7.23.6(@babel/core@7.23.6) - '@nrwl/next': 17.2.7(@babel/core@7.23.6)(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(next@14.0.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) - '@nx/devkit': 17.2.7(nx@17.2.7) - '@nx/eslint': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) - '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) - '@nx/react': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) - '@nx/web': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) - '@nx/workspace': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101) + '@babel/plugin-proposal-decorators': 7.23.7(@babel/core@7.23.7) + '@nrwl/next': 17.2.8(@babel/core@7.23.7)(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(next@14.0.4)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) + '@nx/devkit': 17.2.8(nx@17.2.7) + '@nx/eslint': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) + '@nx/js': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/react': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) + '@nx/web': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/workspace': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102) '@svgr/webpack': 8.1.0(typescript@5.2.2) chalk: 4.1.2 copy-webpack-plugin: 10.2.4(webpack@5.89.0) fs-extra: 11.2.0 ignore: 5.3.0 - next: 14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0) + next: 14.0.4(@babel/core@7.23.7)(react-dom@18.2.0)(react@18.2.0) semver: 7.5.3 tslib: 2.6.2 url-loader: 4.1.1(webpack@5.89.0) @@ -2904,14 +3190,41 @@ packages: - webpack dev: true - /@nx/node@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): + /@nx/node@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): resolution: {integrity: sha512-u3mChRmUliQENH4wBYNfqx/0Cfzj6PB9Eaj7lvOwwdquLgUgGgkFXFfYTLjHuIClYhyn2ATR84LZ+NLMaLCvdA==} dependencies: - '@nrwl/node': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) + '@nrwl/node': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) '@nx/devkit': 17.2.7(nx@17.2.7) - '@nx/eslint': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) - '@nx/jest': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) - '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/eslint': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) + '@nx/jest': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) + '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + tslib: 2.6.2 + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - babel-plugin-macros + - debug + - eslint + - js-yaml + - node-notifier + - nx + - supports-color + - ts-node + - typescript + - verdaccio + dev: true + + /@nx/node@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2): + resolution: {integrity: sha512-MxvJ2MlbpHeB5ZnlSAbSvBXAYoxCre4fsAwwCpysz1OWkf9dDGYzvlV4ovnu6jET7/ZQzzDvaKD9CvVSDk/amg==} + dependencies: + '@nrwl/node': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) + '@nx/devkit': 17.2.8(nx@17.2.7) + '@nx/eslint': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) + '@nx/jest': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) + '@nx/js': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) tslib: 2.6.2 transitivePeerDependencies: - '@babel/traverse' @@ -2949,6 +3262,15 @@ packages: dev: true optional: true + /@nx/nx-darwin-arm64@17.2.8: + resolution: {integrity: sha512-dMb0uxug4hM7tusISAU1TfkDK3ixYmzc1zhHSZwpR7yKJIyKLtUpBTbryt8nyso37AS1yH+dmfh2Fj2WxfBHTg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@nx/nx-darwin-x64@17.1.2: resolution: {integrity: sha512-QR9Jrm32UK2nLdDRtjFabfCvF5SOQJ2IuYkw6Sxe16xGZU2DS9nQku0TQO3Uy2HV1xSR7vzj7ys5z4eI2k+/mA==} engines: {node: '>= 10'} @@ -2967,6 +3289,15 @@ packages: dev: true optional: true + /@nx/nx-darwin-x64@17.2.8: + resolution: {integrity: sha512-0cXzp1tGr7/6lJel102QiLA4NkaLCkQJj6VzwbwuvmuCDxPbpmbz7HC1tUteijKBtOcdXit1/MEoEU007To8Bw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@nx/nx-freebsd-x64@17.1.2: resolution: {integrity: sha512-6rDuFHJREVg5XpcM5RlE8pHP4bgcbns8sSemF/g75SV4iEkBqxRvSe88oBtF44b7IpX2zdONRDV4qQcRf3DxRg==} engines: {node: '>= 10'} @@ -2985,6 +3316,15 @@ packages: dev: true optional: true + /@nx/nx-freebsd-x64@17.2.8: + resolution: {integrity: sha512-YFMgx5Qpp2btCgvaniDGdu7Ctj56bfFvbbaHQWmOeBPK1krNDp2mqp8HK6ZKOfEuDJGOYAp7HDtCLvdZKvJxzA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@nx/nx-linux-arm-gnueabihf@17.1.2: resolution: {integrity: sha512-4FwqUX7NxVfJ0v7frBKNbjENz6pvp3slDfoG2/WmnAj5a6TCu7magwlg1qLQaHYJ1m/i8u7RrG0Uz4SYHWzkVw==} engines: {node: '>= 10'} @@ -3003,6 +3343,15 @@ packages: dev: true optional: true + /@nx/nx-linux-arm-gnueabihf@17.2.8: + resolution: {integrity: sha512-iN2my6MrhLRkVDtdivQHugK8YmR7URo1wU9UDuHQ55z3tEcny7LV3W9NSsY9UYPK/FrxdDfevj0r2hgSSdhnzA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@nx/nx-linux-arm64-gnu@17.1.2: resolution: {integrity: sha512-r6UATY0dVdxwpVJPf/f/KfRkFpMP06wC6HcfNMGbTBTKiKtsdYF42bWoSkDgtgP2bOx9FDH+Hwu3U/Rtj44FIA==} engines: {node: '>= 10'} @@ -3021,6 +3370,15 @@ packages: dev: true optional: true + /@nx/nx-linux-arm64-gnu@17.2.8: + resolution: {integrity: sha512-Iy8BjoW6mOKrSMiTGujUcNdv+xSM1DALTH6y3iLvNDkGbjGK1Re6QNnJAzqcXyDpv32Q4Fc57PmuexyysZxIGg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@nx/nx-linux-arm64-musl@17.1.2: resolution: {integrity: sha512-MXGYY/KCzQhbj5UKwnRO2/GhByOkRlI+EeH1Mazam8wZ1BiBfcVWZoOUybIlxxes1o4cAnkZwB527tCmwrHvGw==} engines: {node: '>= 10'} @@ -3039,6 +3397,15 @@ packages: dev: true optional: true + /@nx/nx-linux-arm64-musl@17.2.8: + resolution: {integrity: sha512-9wkAxWzknjpzdofL1xjtU6qPFF1PHlvKCZI3hgEYJDo4mQiatGI+7Ttko+lx/ZMP6v4+Umjtgq7+qWrApeKamQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@nx/nx-linux-x64-gnu@17.1.2: resolution: {integrity: sha512-3cC131hJ3VhuxjzzBlwIdVp46onykOo78EmnURNdLxcWOpmcKgYXn7OnVwjrglYi+JL7D0vABGKKUpt1cs6/rA==} engines: {node: '>= 10'} @@ -3057,6 +3424,15 @@ packages: dev: true optional: true + /@nx/nx-linux-x64-gnu@17.2.8: + resolution: {integrity: sha512-sjG1bwGsjLxToasZ3lShildFsF0eyeGu+pOQZIp9+gjFbeIkd19cTlCnHrOV9hoF364GuKSXQyUlwtFYFR4VTQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@nx/nx-linux-x64-musl@17.1.2: resolution: {integrity: sha512-1UrR87ByhE0zSXt0C+RNT5ZiAsctOSWZwPYQAGolz8K70BxomDeRVtIaRog5KK5SHlEd1ILvgsmrhovjLjrJNw==} engines: {node: '>= 10'} @@ -3075,6 +3451,15 @@ packages: dev: true optional: true + /@nx/nx-linux-x64-musl@17.2.8: + resolution: {integrity: sha512-QiakXZ1xBCIptmkGEouLHQbcM4klQkcr+kEaz2PlNwy/sW3gH1b/1c0Ed5J1AN9xgQxWspriAONpScYBRgxdhA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@nx/nx-win32-arm64-msvc@17.1.2: resolution: {integrity: sha512-2M7FfzfPGAN7tCUWZilPGNk/RbbGcA00MKOA4MDqMwJtLobW8KqfMedilRNTEuyNibejOHwvGzA9T/Ac/ahHgA==} engines: {node: '>= 10'} @@ -3093,6 +3478,15 @@ packages: dev: true optional: true + /@nx/nx-win32-arm64-msvc@17.2.8: + resolution: {integrity: sha512-XBWUY/F/GU3vKN9CAxeI15gM4kr3GOBqnzFZzoZC4qJt2hKSSUEWsMgeZtsMgeqEClbi4ZyCCkY7YJgU32WUGA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@nx/nx-win32-x64-msvc@17.1.2: resolution: {integrity: sha512-oxKCKunuo4wRusMlNu7PlhBijhtNy7eBZPAWyqUsdfnb+CjY2QncjCguW3fnsG9gHQFCa+y0b1WkSkvJ5G1DiQ==} engines: {node: '>= 10'} @@ -3111,14 +3505,23 @@ packages: dev: true optional: true - /@nx/react@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0): + /@nx/nx-win32-x64-msvc@17.2.8: + resolution: {integrity: sha512-HTqDv+JThlLzbcEm/3f+LbS5/wYQWzb5YDXbP1wi7nlCTihNZOLNqGOkEmwlrR5tAdNHPRpHSmkYg4305W0CtA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nx/react@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0): resolution: {integrity: sha512-c+63PC0bxUmSmRgix90gpdwIwHaeQ6gyS9L1lpVouzLrqxUK4pnJkC9LzQNRc3thXSheFDYmAvXuSe2Y1WN0HA==} dependencies: - '@nrwl/react': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) + '@nrwl/react': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) '@nx/devkit': 17.2.7(nx@17.2.7) - '@nx/eslint': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) - '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) - '@nx/web': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/eslint': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) + '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/web': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.2.2) '@svgr/webpack': 8.1.0(typescript@5.2.2) chalk: 4.1.2 @@ -3141,12 +3544,65 @@ packages: - webpack dev: true - /@nx/web@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): + /@nx/react@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0): + resolution: {integrity: sha512-iJcpKi+Bzi9JZtgZmhQ2QWkt3PxOppYVah/EV9B6m9wOFhNI7IQYOp4NY8BruGZYRhkSsz59ZWZVu9iJSSrayg==} + dependencies: + '@nrwl/react': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2)(webpack@5.89.0) + '@nx/devkit': 17.2.8(nx@17.2.7) + '@nx/eslint': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) + '@nx/js': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/web': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@phenomnomnominal/tsquery': 5.0.1(typescript@5.2.2) + '@svgr/webpack': 8.1.0(typescript@5.2.2) + chalk: 4.1.2 + file-loader: 6.2.0(webpack@5.89.0) + minimatch: 3.0.5 + tslib: 2.6.2 + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - debug + - eslint + - js-yaml + - nx + - supports-color + - typescript + - verdaccio + - webpack + dev: true + + /@nx/web@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): resolution: {integrity: sha512-UhLD84jCLNwY/dC32v3Q5gAkBuj1p6a0h1ihcXqZdMUYbV6sjJhDAnjnfHyPJWgjaoI5t6VNSTJOaMZM9EMfzg==} dependencies: - '@nrwl/web': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nrwl/web': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) '@nx/devkit': 17.2.7(nx@17.2.7) - '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + chalk: 4.1.2 + detect-port: 1.5.1 + http-server: 14.1.1 + tslib: 2.6.2 + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - debug + - nx + - supports-color + - typescript + - verdaccio + dev: true + + /@nx/web@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): + resolution: {integrity: sha512-ovPvFVJOiB/ZmOxnCOOyT+ibbdgazXjpa4506hLJxRohDZQw/6jwbCWkTBy/ch6Y8NSN6uNUpB5XUdscfrp52A==} + dependencies: + '@nrwl/web': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/devkit': 17.2.8(nx@17.2.7) + '@nx/js': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) chalk: 4.1.2 detect-port: 1.5.1 http-server: 14.1.1 @@ -3164,15 +3620,15 @@ packages: - verdaccio dev: true - /@nx/webpack@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): + /@nx/webpack@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2): resolution: {integrity: sha512-OUxUNxgzEyrn36V4+1T3oQNKyukJphgb+DBNc6NWA9dEWf3U48KdfJuALeKoRZ5J+/lS95L8b/2ygSyu0EdpLw==} dependencies: - '@babel/core': 7.23.6 - '@nrwl/webpack': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@babel/core': 7.23.7 + '@nrwl/webpack': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) '@nx/devkit': 17.2.7(nx@17.2.7) - '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) + '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) autoprefixer: 10.4.16(postcss@8.4.32) - babel-loader: 9.1.3(@babel/core@7.23.6)(webpack@5.89.0) + babel-loader: 9.1.3(@babel/core@7.23.7)(webpack@5.89.0) browserslist: 4.22.2 chalk: 4.1.2 copy-webpack-plugin: 10.2.4(webpack@5.89.0) @@ -3189,17 +3645,17 @@ packages: postcss-import: 14.1.0(postcss@8.4.32) postcss-loader: 6.2.1(postcss@8.4.32)(webpack@5.89.0) rxjs: 7.8.1 - sass: 1.69.5 - sass-loader: 12.6.0(sass@1.69.5)(webpack@5.89.0) + sass: 1.69.7 + sass-loader: 12.6.0(sass@1.69.7)(webpack@5.89.0) source-map-loader: 3.0.2(webpack@5.89.0) style-loader: 3.3.3(webpack@5.89.0) stylus: 0.59.0 stylus-loader: 7.1.3(stylus@0.59.0)(webpack@5.89.0) - terser-webpack-plugin: 5.3.9(@swc/core@1.3.101)(webpack@5.89.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.3.102)(webpack@5.89.0) ts-loader: 9.5.1(typescript@5.2.2)(webpack@5.89.0) tsconfig-paths-webpack-plugin: 4.0.0 tslib: 2.6.2 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) webpack-dev-server: 4.15.1(webpack@5.89.0) webpack-node-externals: 3.0.0 webpack-subresource-integrity: 5.1.0(webpack@5.89.0) @@ -3231,14 +3687,14 @@ packages: - webpack-cli dev: true - /@nx/workspace@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101): + /@nx/workspace@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102): resolution: {integrity: sha512-lmdfWyspRgk7XewKU/5bjr6PieShJemDJpaSI+/H5utOeT8QeXVmNj+DDizig4eobwK0b6OXb0Vgnc7osbgjlw==} dependencies: - '@nrwl/workspace': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101) + '@nrwl/workspace': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102) '@nx/devkit': 17.1.2(nx@17.1.2) chalk: 4.1.2 enquirer: 2.3.6 - nx: 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101) + nx: 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102) tslib: 2.6.2 yargs-parser: 21.1.1 transitivePeerDependencies: @@ -3247,14 +3703,14 @@ packages: - debug dev: true - /@nx/workspace@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101): + /@nx/workspace@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102): resolution: {integrity: sha512-/4xrFEc6Hjl9KaB+e/RSaQ/6vHWGP1MmhdX+TRvdjNIMbZ6kdDixBjusJ6WoHXm3KhP95cSt2xmwCQNUzVn+vw==} dependencies: - '@nrwl/workspace': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101) + '@nrwl/workspace': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102) '@nx/devkit': 17.2.7(nx@17.2.7) chalk: 4.1.2 enquirer: 2.3.6 - nx: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101) + nx: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102) tslib: 2.6.2 yargs-parser: 21.1.1 transitivePeerDependencies: @@ -3263,9 +3719,21 @@ packages: - debug dev: true - /@one-ini/wasm@0.1.1: - resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} - dev: false + /@nx/workspace@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102): + resolution: {integrity: sha512-QCriI4CFCuG+0WTbpu3fHljVR1x6bjNSrbq8nqu8Z/3y+si2/O+7lVNSTkQNr1X2eBPqtIX74APS7ExG8c4vog==} + dependencies: + '@nrwl/workspace': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102) + '@nx/devkit': 17.2.8(nx@17.2.8) + chalk: 4.1.2 + enquirer: 2.3.6 + nx: 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102) + tslib: 2.6.2 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - debug + dev: true /@phenomnomnominal/tsquery@5.0.1(typescript@5.2.2): resolution: {integrity: sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==} @@ -3280,6 +3748,7 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} requiresBuild: true + dev: true optional: true /@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.10.0)(webpack@5.89.0): @@ -3310,7 +3779,7 @@ packages: dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 - core-js-pure: 3.34.0 + core-js-pure: 3.35.0 error-stack-parser: 2.1.4 find-up: 5.0.0 html-entities: 2.4.0 @@ -3318,7 +3787,7 @@ packages: react-refresh: 0.10.0 schema-utils: 3.3.0 source-map: 0.7.4 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true /@prisma/client@5.7.1(prisma@5.7.1): @@ -3361,27 +3830,10 @@ packages: dependencies: '@prisma/debug': 5.7.1 - /@react-email/render@0.0.9: - resolution: {integrity: sha512-nrim7wiACnaXsGtL7GF6jp3Qmml8J6vAjAH88jkC8lIbfNZaCyuPQHANjyYIXlvQeAbsWADQJFZgOHUqFqjh/A==} - engines: {node: '>=18.0.0'} - dependencies: - html-to-text: 9.0.5 - pretty: 2.0.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@rushstack/eslint-patch@1.6.1: resolution: {integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==} dev: true - /@selderee/plugin-htmlparser2@0.11.0: - resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - dependencies: - domhandler: 5.0.3 - selderee: 0.11.0 - dev: false - /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true @@ -3417,8 +3869,8 @@ packages: whatwg-url: 5.0.0 dev: false - /@supabase/postgrest-js@1.9.0: - resolution: {integrity: sha512-axP6cU69jDrLbfihJKQ6vU27tklD0gzb9idkMN363MtTXeJVt5DQNT3JnJ58JVNBdL74hgm26rAsFNvHk+tnSw==} + /@supabase/postgrest-js@1.9.1: + resolution: {integrity: sha512-xZD2AZDek4ckjuTU+gt32hCN6fz6L3dFJudbiMqsrJ+Ml/RS9k1Kw6VWj5EAdFUJEYB0O/TKEt6oF5VoUwhn+g==} dependencies: '@supabase/node-fetch': 2.6.15 dev: false @@ -3428,7 +3880,7 @@ packages: dependencies: '@supabase/node-fetch': 2.6.15 '@types/phoenix': 1.6.4 - ws: 8.15.1 + ws: 8.16.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -3440,13 +3892,13 @@ packages: '@supabase/node-fetch': 2.6.15 dev: false - /@supabase/supabase-js@2.39.1: - resolution: {integrity: sha512-nz0aQPButJWjChX+bLXqvhHutfiOuiJwzibyJs0uhFrQ6JRDZZsl9+nX2jgyox2v2V+e4PEwbn/eaEOFVUr8iA==} + /@supabase/supabase-js@2.39.2: + resolution: {integrity: sha512-P+raK0epLef7x/s4MOUx6/TM2DX2UqMwbQXcV8PKYBX6xvX/zXARzakHsBrL/W5mA52S1vsRZjR8l7HhEPKmqA==} dependencies: '@supabase/functions-js': 2.1.5 '@supabase/gotrue-js': 2.62.0 '@supabase/node-fetch': 2.6.15 - '@supabase/postgrest-js': 1.9.0 + '@supabase/postgrest-js': 1.9.1 '@supabase/realtime-js': 2.9.1 '@supabase/storage-js': 2.5.5 transitivePeerDependencies: @@ -3454,101 +3906,101 @@ packages: - utf-8-validate dev: false - /@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.23.6): + /@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.23.7): resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 dev: true - /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.6): + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.7): resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 dev: true - /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.6): + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.7): resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 dev: true - /@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.23.6): + /@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.23.7): resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 dev: true - /@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.23.6): + /@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.23.7): resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 dev: true - /@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.23.6): + /@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.23.7): resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 dev: true - /@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.23.6): + /@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.23.7): resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 dev: true - /@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.23.6): + /@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.23.7): resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 dev: true - /@svgr/babel-preset@8.1.0(@babel/core@7.23.6): + /@svgr/babel-preset@8.1.0(@babel/core@7.23.7): resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.23.6) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.6) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.6) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.23.6) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.23.6) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.23.6) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.23.6) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.23.7) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.23.7) dev: true /@svgr/core@8.1.0(typescript@5.2.2): resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} engines: {node: '>=14'} dependencies: - '@babel/core': 7.23.6 - '@svgr/babel-preset': 8.1.0(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@svgr/babel-preset': 8.1.0(@babel/core@7.23.7) camelcase: 6.3.0 cosmiconfig: 8.3.6(typescript@5.2.2) snake-case: 3.0.4 @@ -3571,8 +4023,8 @@ packages: peerDependencies: '@svgr/core': '*' dependencies: - '@babel/core': 7.23.6 - '@svgr/babel-preset': 8.1.0(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@svgr/babel-preset': 8.1.0(@babel/core@7.23.7) '@svgr/core': 8.1.0(typescript@5.2.2) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 @@ -3589,7 +4041,7 @@ packages: '@svgr/core': 8.1.0(typescript@5.2.2) cosmiconfig: 8.3.6(typescript@5.2.2) deepmerge: 4.3.1 - svgo: 3.1.0 + svgo: 3.2.0 transitivePeerDependencies: - typescript dev: true @@ -3598,11 +4050,11 @@ packages: resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} engines: {node: '>=14'} dependencies: - '@babel/core': 7.23.6 - '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.23.6) - '@babel/preset-env': 7.23.6(@babel/core@7.23.6) - '@babel/preset-react': 7.23.3(@babel/core@7.23.6) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.23.7) + '@babel/preset-env': 7.23.7(@babel/core@7.23.7) + '@babel/preset-react': 7.23.3(@babel/core@7.23.7) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) '@svgr/core': 8.1.0(typescript@5.2.2) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0)(typescript@5.2.2) @@ -3611,24 +4063,24 @@ packages: - typescript dev: true - /@swc-node/core@1.10.6(@swc/core@1.3.101): + /@swc-node/core@1.10.6(@swc/core@1.3.102): resolution: {integrity: sha512-lDIi/rPosmKIknWzvs2/Fi9zWRtbkx8OJ9pQaevhsoGzJSal8Pd315k1W5AIrnknfdAB4HqRN12fk6AhqnrEEw==} engines: {node: '>= 10'} peerDependencies: '@swc/core': '>= 1.3' dependencies: - '@swc/core': 1.3.101 + '@swc/core': 1.3.102 dev: true - /@swc-node/register@1.6.8(@swc/core@1.3.101)(typescript@5.2.2): + /@swc-node/register@1.6.8(@swc/core@1.3.102)(typescript@5.2.2): resolution: {integrity: sha512-74ijy7J9CWr1Z88yO+ykXphV29giCrSpANQPQRooE0bObpkTO1g4RzQovIfbIaniBiGDDVsYwDoQ3FIrCE8HcQ==} peerDependencies: '@swc/core': '>= 1.3' typescript: '>= 4.3' dependencies: - '@swc-node/core': 1.10.6(@swc/core@1.3.101) + '@swc-node/core': 1.10.6(@swc/core@1.3.102) '@swc-node/sourcemap-support': 0.3.0 - '@swc/core': 1.3.101 + '@swc/core': 1.3.102 colorette: 2.0.20 debug: 4.3.4 pirates: 4.0.6 @@ -3645,8 +4097,8 @@ packages: tslib: 2.6.2 dev: true - /@swc/core-darwin-arm64@1.3.101: - resolution: {integrity: sha512-mNFK+uHNPRXSnfTOG34zJOeMl2waM4hF4a2NY7dkMXrPqw9CoJn4MwTXJcyMiSz1/BnNjjTCHF3Yhj0jPxmkzQ==} + /@swc/core-darwin-arm64@1.3.102: + resolution: {integrity: sha512-CJDxA5Wd2cUMULj3bjx4GEoiYyyiyL8oIOu4Nhrs9X+tlg8DnkCm4nI57RJGP8Mf6BaXPIJkHX8yjcefK2RlDA==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] @@ -3654,8 +4106,8 @@ packages: dev: true optional: true - /@swc/core-darwin-x64@1.3.101: - resolution: {integrity: sha512-B085j8XOx73Fg15KsHvzYWG262bRweGr3JooO1aW5ec5pYbz5Ew9VS5JKYS03w2UBSxf2maWdbPz2UFAxg0whw==} + /@swc/core-darwin-x64@1.3.102: + resolution: {integrity: sha512-X5akDkHwk6oAer49oER0qZMjNMkLH3IOZaV1m98uXIasAGyjo5WH1MKPeMLY1sY6V6TrufzwiSwD4ds571ytcg==} engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -3663,8 +4115,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm-gnueabihf@1.3.101: - resolution: {integrity: sha512-9xLKRb6zSzRGPqdz52Hy5GuB1lSjmLqa0lST6MTFads3apmx4Vgs8Y5NuGhx/h2I8QM4jXdLbpqQlifpzTlSSw==} + /@swc/core-linux-arm-gnueabihf@1.3.102: + resolution: {integrity: sha512-kJH3XtZP9YQdjq/wYVBeFuiVQl4HaC4WwRrIxAHwe2OyvrwUI43dpW3LpxSggBnxXcVCXYWf36sTnv8S75o2Gw==} engines: {node: '>=10'} cpu: [arm] os: [linux] @@ -3672,8 +4124,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-gnu@1.3.101: - resolution: {integrity: sha512-oE+r1lo7g/vs96Weh2R5l971dt+ZLuhaUX+n3BfDdPxNHfObXgKMjO7E+QS5RbGjv/AwiPCxQmbdCp/xN5ICJA==} + /@swc/core-linux-arm64-gnu@1.3.102: + resolution: {integrity: sha512-flQP2WDyCgO24WmKA1wjjTx+xfCmavUete2Kp6yrM+631IHLGnr17eu7rYJ/d4EnDBId/ytMyrnWbTVkaVrpbQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -3681,8 +4133,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-musl@1.3.101: - resolution: {integrity: sha512-OGjYG3H4BMOTnJWJyBIovCez6KiHF30zMIu4+lGJTCrxRI2fAjGLml3PEXj8tC3FMcud7U2WUn6TdG0/te2k6g==} + /@swc/core-linux-arm64-musl@1.3.102: + resolution: {integrity: sha512-bQEQSnC44DyoIGLw1+fNXKVGoCHi7eJOHr8BdH0y1ooy9ArskMjwobBFae3GX4T1AfnrTaejyr0FvLYIb0Zkog==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -3690,8 +4142,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-gnu@1.3.101: - resolution: {integrity: sha512-/kBMcoF12PRO/lwa8Z7w4YyiKDcXQEiLvM+S3G9EvkoKYGgkkz4Q6PSNhF5rwg/E3+Hq5/9D2R+6nrkF287ihg==} + /@swc/core-linux-x64-gnu@1.3.102: + resolution: {integrity: sha512-dFvnhpI478svQSxqISMt00MKTDS0e4YtIr+ioZDG/uJ/q+RpcNy3QI2KMm05Fsc8Y0d4krVtvCKWgfUMsJZXAg==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -3699,8 +4151,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-musl@1.3.101: - resolution: {integrity: sha512-kDN8lm4Eew0u1p+h1l3JzoeGgZPQ05qDE0czngnjmfpsH2sOZxVj1hdiCwS5lArpy7ktaLu5JdRnx70MkUzhXw==} + /@swc/core-linux-x64-musl@1.3.102: + resolution: {integrity: sha512-+a0M3CvjeIRNA/jTCzWEDh2V+mhKGvLreHOL7J97oULZy5yg4gf7h8lQX9J8t9QLbf6fsk+0F8bVH1Ie/PbXjA==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -3708,8 +4160,8 @@ packages: dev: true optional: true - /@swc/core-win32-arm64-msvc@1.3.101: - resolution: {integrity: sha512-9Wn8TTLWwJKw63K/S+jjrZb9yoJfJwCE2RV5vPCCWmlMf3U1AXj5XuWOLUX+Rp2sGKau7wZKsvywhheWm+qndQ==} + /@swc/core-win32-arm64-msvc@1.3.102: + resolution: {integrity: sha512-w76JWLjkZNOfkB25nqdWUNCbt0zJ41CnWrJPZ+LxEai3zAnb2YtgB/cCIrwxDebRuMgE9EJXRj7gDDaTEAMOOQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -3717,8 +4169,8 @@ packages: dev: true optional: true - /@swc/core-win32-ia32-msvc@1.3.101: - resolution: {integrity: sha512-onO5KvICRVlu2xmr4//V2je9O2XgS1SGKpbX206KmmjcJhXN5EYLSxW9qgg+kgV5mip+sKTHTAu7IkzkAtElYA==} + /@swc/core-win32-ia32-msvc@1.3.102: + resolution: {integrity: sha512-vlDb09HiGqKwz+2cxDS9T5/461ipUQBplvuhW+cCbzzGuPq8lll2xeyZU0N1E4Sz3MVdSPx1tJREuRvlQjrwNg==} engines: {node: '>=10'} cpu: [ia32] os: [win32] @@ -3726,8 +4178,8 @@ packages: dev: true optional: true - /@swc/core-win32-x64-msvc@1.3.101: - resolution: {integrity: sha512-T3GeJtNQV00YmiVw/88/nxJ/H43CJvFnpvBHCVn17xbahiVUOPOduh3rc9LgAkKiNt/aV8vU3OJR+6PhfMR7UQ==} + /@swc/core-win32-x64-msvc@1.3.102: + resolution: {integrity: sha512-E/jfSD7sShllxBwwgDPeXp1UxvIqehj/ShSUqq1pjR/IDRXngcRSXKJK92mJkNFY7suH6BcCWwzrxZgkO7sWmw==} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -3735,8 +4187,8 @@ packages: dev: true optional: true - /@swc/core@1.3.101: - resolution: {integrity: sha512-w5aQ9qYsd/IYmXADAnkXPGDMTqkQalIi+kfFf/MHRKTpaOL7DHjMXwPp/n8hJ0qNjRvchzmPtOqtPBiER50d8A==} + /@swc/core@1.3.102: + resolution: {integrity: sha512-OAjNLY/f6QWKSDzaM3bk31A+OYHu6cPa9P/rFIx8X5d24tHXUpRiiq6/PYI6SQRjUPlB72GjsjoEU8F+ALadHg==} engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -3748,16 +4200,16 @@ packages: '@swc/counter': 0.1.2 '@swc/types': 0.1.5 optionalDependencies: - '@swc/core-darwin-arm64': 1.3.101 - '@swc/core-darwin-x64': 1.3.101 - '@swc/core-linux-arm-gnueabihf': 1.3.101 - '@swc/core-linux-arm64-gnu': 1.3.101 - '@swc/core-linux-arm64-musl': 1.3.101 - '@swc/core-linux-x64-gnu': 1.3.101 - '@swc/core-linux-x64-musl': 1.3.101 - '@swc/core-win32-arm64-msvc': 1.3.101 - '@swc/core-win32-ia32-msvc': 1.3.101 - '@swc/core-win32-x64-msvc': 1.3.101 + '@swc/core-darwin-arm64': 1.3.102 + '@swc/core-darwin-x64': 1.3.102 + '@swc/core-linux-arm-gnueabihf': 1.3.102 + '@swc/core-linux-arm64-gnu': 1.3.102 + '@swc/core-linux-arm64-musl': 1.3.102 + '@swc/core-linux-x64-gnu': 1.3.102 + '@swc/core-linux-x64-musl': 1.3.102 + '@swc/core-win32-arm64-msvc': 1.3.102 + '@swc/core-win32-ia32-msvc': 1.3.102 + '@swc/core-win32-x64-msvc': 1.3.102 dev: true /@swc/counter@0.1.2: @@ -3778,7 +4230,7 @@ packages: engines: {node: '>=14'} dependencies: '@babel/code-frame': 7.23.5 - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.7 '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 @@ -3794,7 +4246,7 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.7 '@testing-library/dom': 9.3.3 '@types/react-dom': 18.2.14 react: 18.2.0 @@ -3838,7 +4290,7 @@ packages: '@babel/types': 7.23.6 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.4 + '@types/babel__traverse': 7.20.5 dev: true /@types/babel__generator@7.6.8: @@ -3854,8 +4306,8 @@ packages: '@babel/types': 7.23.6 dev: true - /@types/babel__traverse@7.20.4: - resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} + /@types/babel__traverse@7.20.5: + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} dependencies: '@babel/types': 7.23.6 dev: true @@ -3889,12 +4341,12 @@ packages: /@types/eslint-scope@3.7.7: resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} dependencies: - '@types/eslint': 8.56.0 + '@types/eslint': 8.56.1 '@types/estree': 1.0.5 dev: true - /@types/eslint@8.56.0: - resolution: {integrity: sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==} + /@types/eslint@8.56.1: + resolution: {integrity: sha512-18PLWRzhy9glDQp3+wOgfLYRWlhgX0azxgJ63rdpoUHyrC9z0f5CkFburjQx4uD7ZCruw85ZtMt6K+L+R8fLJQ==} dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 @@ -3990,8 +4442,8 @@ packages: resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} dev: true - /@types/node-forge@1.3.10: - resolution: {integrity: sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==} + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: '@types/node': 18.16.9 dev: true @@ -3999,6 +4451,12 @@ packages: /@types/node@18.16.9: resolution: {integrity: sha512-IeB32oIV4oGArLrd7znD2rkHQ6EDCM+2Sr76dJnrHwv9OHBTTM6nuDLK9bmikXzPa0ZlWMWtRGo/Uw4mrzQedA==} + /@types/nodemailer@6.4.14: + resolution: {integrity: sha512-fUWthHO9k9DSdPCSPRqcu6TWhYyxTBg382vlNIttSe9M7XfsT06y0f24KHXtbnijPGGRIcVvdKHTNikOI6qiHA==} + dependencies: + '@types/node': 18.16.9 + dev: true + /@types/parse-json@4.0.2: resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} dev: true @@ -4120,8 +4578,8 @@ packages: '@types/yargs-parser': 21.0.3 dev: true - /@typescript-eslint/eslint-plugin@6.15.0(@typescript-eslint/parser@6.15.0)(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-j5qoikQqPccq9QoBAupOP+CBu8BaJ8BLjaXSioDISeTZkVO3ig7oSIKh3H+rEpee7xCXtWwSB4KIL5l6hWZzpg==} + /@typescript-eslint/eslint-plugin@6.17.0(@typescript-eslint/parser@6.17.0)(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-Vih/4xLXmY7V490dGwBQJTpIZxH4ZFH6eCVmQ4RFkB+wmaCTDAx4dtgoWwMNGKLkqRY1L6rPqzEbjorRnDo4rQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -4132,11 +4590,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.15.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.15.0 - '@typescript-eslint/type-utils': 6.15.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.15.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.15.0 + '@typescript-eslint/parser': 6.17.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.17.0 + '@typescript-eslint/type-utils': 6.17.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.17.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.17.0 debug: 4.3.4 eslint: 8.48.0 graphemer: 1.4.0 @@ -4149,8 +4607,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.15.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-MkgKNnsjC6QwcMdlNAel24jjkEO/0hQaMDLqP4S9zq5HBAUJNQB6y+3DwLjX7b3l2b37eNAxMPLwb3/kh8VKdA==} + /@typescript-eslint/parser@6.17.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-C4bBaX2orvhK+LlwrY8oWGmSl4WolCfYm513gEccdWZj0CwGadbIADb0FtVEcI+WzUyjyoBj2JRP8g25E6IB8A==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4159,10 +4617,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.15.0 - '@typescript-eslint/types': 6.15.0 - '@typescript-eslint/typescript-estree': 6.15.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.15.0 + '@typescript-eslint/scope-manager': 6.17.0 + '@typescript-eslint/types': 6.17.0 + '@typescript-eslint/typescript-estree': 6.17.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.17.0 debug: 4.3.4 eslint: 8.48.0 typescript: 5.2.2 @@ -4170,16 +4628,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.15.0: - resolution: {integrity: sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg==} + /@typescript-eslint/scope-manager@6.17.0: + resolution: {integrity: sha512-RX7a8lwgOi7am0k17NUO0+ZmMOX4PpjLtLRgLmT1d3lBYdWH4ssBUbwdmc5pdRX8rXon8v9x8vaoOSpkHfcXGA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.15.0 - '@typescript-eslint/visitor-keys': 6.15.0 + '@typescript-eslint/types': 6.17.0 + '@typescript-eslint/visitor-keys': 6.17.0 dev: true - /@typescript-eslint/type-utils@6.15.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-CnmHKTfX6450Bo49hPg2OkIm/D/TVYV7jO1MCfPYGwf6x3GO0VU8YMO5AYMn+u3X05lRRxA4fWCz87GFQV6yVQ==} + /@typescript-eslint/type-utils@6.17.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-hDXcWmnbtn4P2B37ka3nil3yi3VCQO2QEB9gBiHJmQp5wmyQWqnjA85+ZcE8c4FqnaB6lBwMrPkgd4aBYz3iNg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4188,8 +4646,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.15.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.15.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.17.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.17.0(eslint@8.48.0)(typescript@5.2.2) debug: 4.3.4 eslint: 8.48.0 ts-api-utils: 1.0.3(typescript@5.2.2) @@ -4198,13 +4656,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.15.0: - resolution: {integrity: sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ==} + /@typescript-eslint/types@6.17.0: + resolution: {integrity: sha512-qRKs9tvc3a4RBcL/9PXtKSehI/q8wuU9xYJxe97WFxnzH8NWWtcW3ffNS+EWg8uPvIerhjsEZ+rHtDqOCiH57A==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.15.0(typescript@5.2.2): - resolution: {integrity: sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew==} + /@typescript-eslint/typescript-estree@6.17.0(typescript@5.2.2): + resolution: {integrity: sha512-gVQe+SLdNPfjlJn5VNGhlOhrXz4cajwFd5kAgWtZ9dCZf4XJf8xmgCTLIqec7aha3JwgLI2CK6GY1043FRxZwg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -4212,11 +4670,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.15.0 - '@typescript-eslint/visitor-keys': 6.15.0 + '@typescript-eslint/types': 6.17.0 + '@typescript-eslint/visitor-keys': 6.17.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 + minimatch: 9.0.3 semver: 7.5.4 ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 @@ -4224,8 +4683,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.15.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-eF82p0Wrrlt8fQSRL0bGXzK5nWPRV2dYQZdajcfzOD9+cQz9O7ugifrJxclB+xVOvWvagXfqS4Es7vpLP4augw==} + /@typescript-eslint/utils@6.17.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-LofsSPjN/ITNkzV47hxas2JCsNCEnGhVvocfyOcLzT9c/tSZE7SfhS/iWtzP1lKNOEfLhRTZz6xqI8N2RzweSQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4233,9 +4692,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.15.0 - '@typescript-eslint/types': 6.15.0 - '@typescript-eslint/typescript-estree': 6.15.0(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.17.0 + '@typescript-eslint/types': 6.17.0 + '@typescript-eslint/typescript-estree': 6.17.0(typescript@5.2.2) eslint: 8.48.0 semver: 7.5.4 transitivePeerDependencies: @@ -4243,11 +4702,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.15.0: - resolution: {integrity: sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==} + /@typescript-eslint/visitor-keys@6.17.0: + resolution: {integrity: sha512-H6VwB/k3IuIeQOyYczyyKN8wH6ed8EwliaYHLxOIhyF0dYEIsN8+Bk3GE19qafeMKyZJJHP8+O1HiFhFLUNKSg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.15.0 + '@typescript-eslint/types': 6.17.0 eslint-visitor-keys: 3.4.3 dev: true @@ -4389,11 +4848,6 @@ packages: deprecated: Use your platform's native atob() and btoa() methods instead dev: true - /abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: false - /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -4404,24 +4858,24 @@ packages: /acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: - acorn: 8.11.2 + acorn: 8.11.3 acorn-walk: 8.3.1 dev: true - /acorn-import-assertions@1.9.0(acorn@8.11.2): + /acorn-import-assertions@1.9.0(acorn@8.11.3): resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.11.2 + acorn: 8.11.3 dev: true - /acorn-jsx@5.3.2(acorn@8.11.2): + /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.11.2 + acorn: 8.11.3 dev: true /acorn-walk@8.3.1: @@ -4429,8 +4883,8 @@ packages: engines: {node: '>=0.4.0'} dev: true - /acorn@8.11.2: - resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true dev: true @@ -4516,10 +4970,12 @@ packages: /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + dev: true /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} + dev: true /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} @@ -4541,6 +4997,7 @@ packages: /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + dev: true /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -4596,10 +5053,6 @@ packages: /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - /array-flatten@2.1.2: - resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} - dev: true - /array-includes@3.1.7: resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} @@ -4710,7 +5163,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.22.2 - caniuse-lite: 1.0.30001571 + caniuse-lite: 1.0.30001572 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -4728,10 +5181,10 @@ packages: engines: {node: '>=4'} dev: true - /axios@1.6.2: - resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} + /axios@1.6.3: + resolution: {integrity: sha512-fWyNdeawGam70jXSVlKl+SUNVcL6j6W79CuSIPfi6HnDUmSCH6gyUys/HrqHeA/wU0Az41rRgean494d0Jb+ww==} dependencies: - follow-redirects: 1.15.3 + follow-redirects: 1.15.4 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -4743,17 +5196,17 @@ packages: dequal: 2.0.3 dev: true - /babel-jest@29.7.0(@babel/core@7.23.6): + /babel-jest@29.7.0(@babel/core@7.23.7): resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.23.6) + babel-preset-jest: 29.6.3(@babel/core@7.23.7) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -4761,28 +5214,28 @@ packages: - supports-color dev: true - /babel-loader@9.1.3(@babel/core@7.23.6)(webpack@5.89.0): + /babel-loader@9.1.3(@babel/core@7.23.7)(webpack@5.89.0): resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} engines: {node: '>= 14.15.0'} peerDependencies: '@babel/core': ^7.12.0 webpack: '>=5' dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true - /babel-plugin-const-enum@1.2.0(@babel/core@7.23.6): + /babel-plugin-const-enum@1.2.0(@babel/core@7.23.7): resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.6) - '@babel/traverse': 7.23.6 + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.7) + '@babel/traverse': 7.23.7 transitivePeerDependencies: - supports-color dev: true @@ -4807,54 +5260,54 @@ packages: '@babel/template': 7.22.15 '@babel/types': 7.23.6 '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.4 + '@types/babel__traverse': 7.20.5 dev: true /babel-plugin-macros@2.8.0: resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.7 cosmiconfig: 6.0.0 resolve: 1.22.8 dev: true - /babel-plugin-polyfill-corejs2@0.4.7(@babel/core@7.23.6): + /babel-plugin-polyfill-corejs2@0.4.7(@babel/core@7.23.7): resolution: {integrity: sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.6 - '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.7) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.23.6): + /babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.23.7): resolution: {integrity: sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.6) - core-js-compat: 3.34.0 + '@babel/core': 7.23.7 + '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.7) + core-js-compat: 3.35.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.4(@babel/core@7.23.6): + /babel-plugin-polyfill-regenerator@0.5.4(@babel/core@7.23.7): resolution: {integrity: sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.6) + '@babel/core': 7.23.7 + '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.7) transitivePeerDependencies: - supports-color dev: true - /babel-plugin-transform-typescript-metadata@0.3.2(@babel/core@7.23.6): + /babel-plugin-transform-typescript-metadata@0.3.2(@babel/core@7.23.7): resolution: {integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==} peerDependencies: '@babel/core': ^7 @@ -4863,43 +5316,44 @@ packages: '@babel/traverse': optional: true dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.6): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.7): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.6) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.6) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.6) - dev: true - - /babel-preset-jest@29.6.3(@babel/core@7.23.6): + '@babel/core': 7.23.7 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.7) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.23.7): resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.6) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.7) dev: true /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -4971,11 +5425,9 @@ packages: transitivePeerDependencies: - supports-color - /bonjour-service@1.1.1: - resolution: {integrity: sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==} + /bonjour-service@1.2.0: + resolution: {integrity: sha512-xdzMA6JGckxyJzZByjEWRcfKmDxXaGXZWVftah3FkCqdlePNS9DjHSUN5zkP4oEfz/t0EXXlro88EIhzwMB4zA==} dependencies: - array-flatten: 2.1.2 - dns-equal: 1.0.0 fast-deep-equal: 3.1.3 multicast-dns: 7.2.5 dev: true @@ -4995,6 +5447,7 @@ packages: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 + dev: true /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -5008,8 +5461,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001571 - electron-to-chromium: 1.4.616 + caniuse-lite: 1.0.30001572 + electron-to-chromium: 1.4.617 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) @@ -5043,7 +5496,7 @@ packages: /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: - semver: 7.5.4 + semver: 7.5.3 dev: true /busboy@1.6.0: @@ -5092,13 +5545,13 @@ packages: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: browserslist: 4.22.2 - caniuse-lite: 1.0.30001571 + caniuse-lite: 1.0.30001572 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: true - /caniuse-lite@1.0.30001571: - resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==} + /caniuse-lite@1.0.30001572: + resolution: {integrity: sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==} /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -5156,7 +5609,7 @@ packages: resolution: {integrity: sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==} dependencies: '@types/validator': 13.11.7 - libphonenumber-js: 1.10.52 + libphonenumber-js: 1.10.53 validator: 13.11.0 /cli-cursor@3.1.0: @@ -5250,11 +5703,6 @@ packages: dependencies: delayed-stream: 1.0.0 - /commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - dev: false - /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true @@ -5319,22 +5767,6 @@ packages: readable-stream: 2.3.8 typedarray: 0.0.6 - /condense-newlines@0.2.1: - resolution: {integrity: sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-whitespace: 0.3.0 - kind-of: 3.2.2 - dev: false - - /config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - dependencies: - ini: 1.3.8 - proto-list: 1.2.4 - dev: false - /confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true @@ -5379,23 +5811,23 @@ packages: peerDependencies: webpack: ^5.1.0 dependencies: - fast-glob: 3.2.7 + fast-glob: 3.3.2 glob-parent: 6.0.2 globby: 12.2.0 normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.1 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true - /core-js-compat@3.34.0: - resolution: {integrity: sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==} + /core-js-compat@3.35.0: + resolution: {integrity: sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==} dependencies: browserslist: 4.22.2 dev: true - /core-js-pure@3.34.0: - resolution: {integrity: sha512-pmhivkYXkymswFfbXsANmBAewXx86UBfmagP+w0wkK06kLsLlTK5oQmsURPivzMkIBQiYq2cjamcZExIwlFQIg==} + /core-js-pure@3.35.0: + resolution: {integrity: sha512-f+eRYmkou59uh7BPcyJ8MC76DiGhspj1KMxVIcF24tzP8NA9HVa1uC7BTW2tgx7E1QVCzDzsgp7kArrzhlz8Ew==} requiresBuild: true dev: true @@ -5482,6 +5914,7 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + dev: true /css-declaration-sorter@7.1.1(postcss@8.4.32): resolution: {integrity: sha512-dZ3bVTEEc1vxr3Bek9vGwfB5Z6ESPULhcRvO472mfjVnj8jRcTnKO8/JTczlvxM10Myb+wBM++1MtdO76eWcaQ==} @@ -5506,7 +5939,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.32) postcss-value-parser: 4.2.0 semver: 7.5.4 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true /css-minimizer-webpack-plugin@5.0.1(webpack@5.89.0): @@ -5540,7 +5973,7 @@ packages: postcss: 8.4.32 schema-utils: 4.2.0 serialize-javascript: 6.0.1 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true /css-select@5.1.0: @@ -5753,6 +6186,7 @@ packages: /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + dev: true /default-gateway@6.0.3: resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} @@ -5855,10 +6289,6 @@ packages: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: true - /dns-equal@1.0.0: - resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} - dev: true - /dns-packet@5.6.1: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} @@ -5890,9 +6320,11 @@ packages: domelementtype: 2.3.0 domhandler: 5.0.3 entities: 4.5.0 + dev: true /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true /domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} @@ -5907,6 +6339,7 @@ packages: engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 + dev: true /domutils@3.1.0: resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} @@ -5914,6 +6347,7 @@ packages: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 + dev: true /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -5936,6 +6370,7 @@ packages: /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true /ecdsa-sig-formatter@1.0.11: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} @@ -5943,17 +6378,6 @@ packages: safe-buffer: 5.2.1 dev: false - /editorconfig@1.0.4: - resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} - engines: {node: '>=14'} - hasBin: true - dependencies: - '@one-ini/wasm': 0.1.1 - commander: 10.0.1 - minimatch: 9.0.1 - semver: 7.5.4 - dev: false - /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -5965,8 +6389,8 @@ packages: jake: 10.8.7 dev: true - /electron-to-chromium@1.4.616: - resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} + /electron-to-chromium@1.4.617: + resolution: {integrity: sha512-sYNE3QxcDS4ANW1k4S/wWYMXjCVcFSOX3Bg8jpuMFaXt/x8JCmp0R1Xe1ZXDX4WXnSRBf+GJ/3eGWicUuQq5cg==} /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -5975,9 +6399,11 @@ packages: /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true /emojis-list@3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} @@ -6012,6 +6438,7 @@ packages: /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + dev: true /errno@0.1.8: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} @@ -6184,11 +6611,11 @@ packages: dependencies: '@next/eslint-plugin-next': 14.0.4 '@rushstack/eslint-patch': 1.6.1 - '@typescript-eslint/parser': 6.15.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.17.0(eslint@8.48.0)(typescript@5.2.2) eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.33.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) @@ -6217,7 +6644,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -6227,8 +6654,8 @@ packages: debug: 4.3.4 enhanced-resolve: 5.15.0 eslint: 8.48.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -6240,7 +6667,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -6261,16 +6688,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.15.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.17.0(eslint@8.48.0)(typescript@5.2.2) debug: 3.2.7 eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.15.0)(eslint@8.48.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.17.0)(eslint@8.48.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -6280,7 +6707,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.15.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.17.0(eslint@8.48.0)(typescript@5.2.2) array-includes: 3.1.7 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 @@ -6288,7 +6715,7 @@ packages: doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) has: 1.0.4 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -6303,7 +6730,7 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -6313,7 +6740,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.15.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.17.0(eslint@8.48.0)(typescript@5.2.2) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -6322,7 +6749,7 @@ packages: doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -6344,7 +6771,7 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.7 aria-query: 5.3.0 array-includes: 3.1.7 array.prototype.flatmap: 1.3.2 @@ -6492,8 +6919,8 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 dev: true @@ -6614,13 +7041,6 @@ packages: transitivePeerDependencies: - supports-color - /extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - dev: false - /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -6699,7 +7119,7 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true /filelist@1.0.4: @@ -6779,8 +7199,8 @@ packages: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true - /follow-redirects@1.15.3: - resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + /follow-redirects@1.15.4: + resolution: {integrity: sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -6800,6 +7220,7 @@ packages: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 + dev: true /fork-ts-checker-webpack-plugin@7.2.13(typescript@5.2.2)(webpack@5.89.0): resolution: {integrity: sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==} @@ -6825,7 +7246,7 @@ packages: semver: 7.5.4 tapable: 2.2.1 typescript: 5.2.2 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true /form-data@4.0.0: @@ -6971,6 +7392,7 @@ packages: minimatch: 9.0.3 minipass: 7.0.4 path-scurry: 1.10.1 + dev: true /glob@7.1.4: resolution: {integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==} @@ -6978,7 +7400,7 @@ packages: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.0.5 once: 1.4.0 path-is-absolute: 1.0.1 dev: true @@ -7041,7 +7463,7 @@ packages: dependencies: array-union: 3.0.1 dir-glob: 3.0.1 - fast-glob: 3.2.7 + fast-glob: 3.3.2 ignore: 5.3.0 merge2: 1.4.1 slash: 4.0.0 @@ -7151,26 +7573,6 @@ packages: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /html-to-text@9.0.5: - resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} - engines: {node: '>=14'} - dependencies: - '@selderee/plugin-htmlparser2': 0.11.0 - deepmerge: 4.3.1 - dom-serializer: 2.0.0 - htmlparser2: 8.0.2 - selderee: 0.11.0 - dev: false - - /htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - entities: 4.5.0 - dev: false - /http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} dev: true @@ -7234,7 +7636,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.3 + follow-redirects: 1.15.4 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -7370,10 +7772,6 @@ packages: /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false - /internal-slot@1.0.6: resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} engines: {node: '>= 0.4'} @@ -7440,10 +7838,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: false - /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -7468,11 +7862,6 @@ packages: hasBin: true dev: true - /is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - dev: false - /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -7487,6 +7876,7 @@ packages: /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + dev: true /is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} @@ -7624,11 +8014,6 @@ packages: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} dev: true - /is-whitespace@0.3.0: - resolution: {integrity: sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==} - engines: {node: '>=0.10.0'} - dev: false - /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -7645,6 +8030,7 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} @@ -7660,7 +8046,7 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/parser': 7.23.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -7673,7 +8059,7 @@ packages: resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/parser': 7.23.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -7731,6 +8117,7 @@ packages: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 + dev: true /jake@10.8.7: resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} @@ -7821,15 +8208,15 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 '@types/node': 18.16.9 - babel-jest: 29.7.0(@babel/core@7.23.6) + babel-jest: 29.7.0(@babel/core@7.23.7) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 - glob: 7.1.4 + glob: 7.2.3 graceful-fs: 4.2.11 jest-circus: 29.7.0 jest-environment-node: 29.7.0 @@ -7844,7 +8231,7 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@swc/core@1.3.101)(@types/node@18.16.9)(typescript@5.2.2) + ts-node: 10.9.1(@swc/core@1.3.102)(@types/node@18.16.9)(typescript@5.2.2) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -8065,7 +8452,7 @@ packages: chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 - glob: 7.1.4 + glob: 7.2.3 graceful-fs: 4.2.11 jest-haste-map: 29.7.0 jest-message-util: 29.7.0 @@ -8084,15 +8471,15 @@ packages: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 '@babel/generator': 7.23.6 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.7) '@babel/types': 7.23.6 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.6) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.7) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -8191,17 +8578,6 @@ packages: hasBin: true dev: true - /js-beautify@1.14.11: - resolution: {integrity: sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==} - engines: {node: '>=14'} - hasBin: true - dependencies: - config-chain: 1.1.13 - editorconfig: 1.0.4 - glob: 10.3.10 - nopt: 7.2.0 - dev: false - /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -8229,7 +8605,7 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.11.2 + acorn: 8.11.3 acorn-globals: 7.0.1 cssom: 0.5.0 cssstyle: 2.3.0 @@ -8252,7 +8628,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.15.1 + ws: 8.16.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -8306,10 +8682,10 @@ packages: resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.11.2 + acorn: 8.11.3 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - semver: 7.5.4 + semver: 7.5.3 dev: true /jsonc-parser@3.2.0: @@ -8371,13 +8747,6 @@ packages: json-buffer: 3.0.1 dev: true - /kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: false - /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -8410,10 +8779,6 @@ packages: shell-quote: 1.8.1 dev: true - /leac@0.6.0: - resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} - dev: false - /less-loader@11.1.0(less@4.1.3)(webpack@5.89.0): resolution: {integrity: sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==} engines: {node: '>= 14.15.0'} @@ -8423,7 +8788,7 @@ packages: dependencies: klona: 2.0.6 less: 4.1.3 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true /less@4.1.3: @@ -8457,8 +8822,8 @@ packages: type-check: 0.4.0 dev: true - /libphonenumber-js@1.10.52: - resolution: {integrity: sha512-6vCuCHgem+OW1/VCAKgkasfegItCea8zIT7s9/CG/QxdCMIM7GfzbEBG5d7lGO3rzipjt5woOQL3DiHa8Fy78Q==} + /libphonenumber-js@1.10.53: + resolution: {integrity: sha512-sDTnnqlWK4vH4AlDQuswz3n4Hx7bIQWTpIcScJX+Sp7St3LXHmfiax/ZFfyYxHmkdCvydOLSuvtAO/XpXiSySw==} /license-webpack-plugin@4.0.2(webpack@5.89.0): resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} @@ -8470,7 +8835,7 @@ packages: webpack-sources: optional: true dependencies: - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) webpack-sources: 3.2.3 dev: true @@ -8598,6 +8963,7 @@ packages: /lru-cache@10.1.0: resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} engines: {node: 14 || >=16.14} + dev: true /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -8726,7 +9092,7 @@ packages: webpack: ^5.0.0 dependencies: schema-utils: 4.2.0 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true /minimalistic-assert@1.0.1: @@ -8752,18 +9118,12 @@ packages: brace-expansion: 2.0.1 dev: true - /minimatch@9.0.1: - resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: false - /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 + dev: true /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -8771,6 +9131,7 @@ packages: /minipass@7.0.4: resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} + dev: true /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} @@ -8778,8 +9139,8 @@ packages: dependencies: minimist: 1.2.8 - /moment@2.29.4: - resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} + /moment@2.30.1: + resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} dev: false /ms@2.0.0: @@ -8847,7 +9208,7 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true - /next@14.0.4(@babel/core@7.23.6)(react-dom@18.2.0)(react@18.2.0): + /next@14.0.4(@babel/core@7.23.7)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==} engines: {node: '>=18.17.0'} hasBin: true @@ -8865,12 +9226,12 @@ packages: '@next/env': 14.0.4 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001571 + caniuse-lite: 1.0.30001572 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.23.6)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.23.7)(react@18.2.0) watchpack: 2.4.0 optionalDependencies: '@next/swc-darwin-arm64': 14.0.4 @@ -8924,12 +9285,9 @@ packages: /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - /nopt@7.2.0: - resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - dependencies: - abbrev: 2.0.0 + /nodemailer@6.9.8: + resolution: {integrity: sha512-cfrYUk16e67Ks051i4CntM9kshRYei1/o/Gi8K1d+R34OIs21xdFnW7Pt7EucmVKA0LKtqUGNcjMZ7ehjl49mQ==} + engines: {node: '>=6.0.0'} dev: false /normalize-path@3.0.0: @@ -8948,7 +9306,7 @@ packages: dependencies: hosted-git-info: 7.0.1 proc-log: 3.0.0 - semver: 7.5.4 + semver: 7.5.3 validate-npm-package-name: 5.0.0 dev: true @@ -8969,7 +9327,7 @@ packages: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true - /nx@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101): + /nx@17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102): resolution: {integrity: sha512-pf94ri36cAiSzbYcPTJwQzttgAsHSjCLEni0Ilw6aVdjpoV2l6cggYxwddX7pgtCWuokVp/6KhAxVkbzvH65wg==} hasBin: true requiresBuild: true @@ -8982,13 +9340,13 @@ packages: '@swc/core': optional: true dependencies: - '@nrwl/tao': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.101) - '@swc-node/register': 1.6.8(@swc/core@1.3.101)(typescript@5.2.2) - '@swc/core': 1.3.101 + '@nrwl/tao': 17.1.2(@swc-node/register@1.6.8)(@swc/core@1.3.102) + '@swc-node/register': 1.6.8(@swc/core@1.3.102)(typescript@5.2.2) + '@swc/core': 1.3.102 '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.6 - axios: 1.6.2 + axios: 1.6.3 chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 @@ -9034,7 +9392,7 @@ packages: - debug dev: true - /nx@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101): + /nx@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102): resolution: {integrity: sha512-CnssDvDphAgyeoYzdPbz6vA/xac4BQeEiO7R9IBLIm+l1MV7boI4SpCS6abR4dbp4VTwI9uBQ9vgqNwCiEjoWg==} hasBin: true requiresBuild: true @@ -9047,13 +9405,13 @@ packages: '@swc/core': optional: true dependencies: - '@nrwl/tao': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.101) - '@swc-node/register': 1.6.8(@swc/core@1.3.101)(typescript@5.2.2) - '@swc/core': 1.3.101 + '@nrwl/tao': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102) + '@swc-node/register': 1.6.8(@swc/core@1.3.102)(typescript@5.2.2) + '@swc/core': 1.3.102 '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.6 - axios: 1.6.2 + axios: 1.6.3 chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 @@ -9098,6 +9456,70 @@ packages: - debug dev: true + /nx@17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102): + resolution: {integrity: sha512-rM5zXbuXLEuqQqcjVjClyvHwRJwt+NVImR2A6KFNG40Z60HP6X12wAxxeLHF5kXXTDRU0PFhf/yACibrpbPrAw==} + hasBin: true + requiresBuild: true + peerDependencies: + '@swc-node/register': ^1.6.7 + '@swc/core': ^1.3.85 + peerDependenciesMeta: + '@swc-node/register': + optional: true + '@swc/core': + optional: true + dependencies: + '@nrwl/tao': 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102) + '@swc-node/register': 1.6.8(@swc/core@1.3.102)(typescript@5.2.2) + '@swc/core': 1.3.102 + '@yarnpkg/lockfile': 1.1.0 + '@yarnpkg/parsers': 3.0.0-rc.46 + '@zkochan/js-yaml': 0.0.6 + axios: 1.6.3 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + cliui: 8.0.1 + dotenv: 16.3.1 + dotenv-expand: 10.0.0 + enquirer: 2.3.6 + figures: 3.2.0 + flat: 5.0.2 + fs-extra: 11.2.0 + glob: 7.1.4 + ignore: 5.3.0 + jest-diff: 29.7.0 + js-yaml: 4.1.0 + jsonc-parser: 3.2.0 + lines-and-columns: 2.0.4 + minimatch: 3.0.5 + node-machine-id: 1.1.12 + npm-run-path: 4.0.1 + open: 8.4.2 + semver: 7.5.3 + string-width: 4.2.3 + strong-log-transformer: 2.1.0 + tar-stream: 2.2.0 + tmp: 0.2.1 + tsconfig-paths: 4.2.0 + tslib: 2.6.2 + yargs: 17.7.2 + yargs-parser: 21.1.1 + optionalDependencies: + '@nx/nx-darwin-arm64': 17.2.8 + '@nx/nx-darwin-x64': 17.2.8 + '@nx/nx-freebsd-x64': 17.2.8 + '@nx/nx-linux-arm-gnueabihf': 17.2.8 + '@nx/nx-linux-arm64-gnu': 17.2.8 + '@nx/nx-linux-arm64-musl': 17.2.8 + '@nx/nx-linux-x64-gnu': 17.2.8 + '@nx/nx-linux-x64-musl': 17.2.8 + '@nx/nx-win32-arm64-msvc': 17.2.8 + '@nx/nx-win32-x64-msvc': 17.2.8 + transitivePeerDependencies: + - debug + dev: true + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -9346,13 +9768,6 @@ packages: entities: 4.5.0 dev: true - /parseley@0.12.1: - resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} - dependencies: - leac: 0.6.0 - peberminta: 0.9.0 - dev: false - /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -9396,6 +9811,7 @@ packages: /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + dev: true /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -9407,6 +9823,7 @@ packages: dependencies: lru-cache: 10.1.0 minipass: 7.0.4 + dev: true /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} @@ -9423,10 +9840,6 @@ packages: resolution: {integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==} dev: false - /peberminta@0.9.0: - resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} - dev: false - /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -9489,7 +9902,7 @@ packages: postcss: ^8.2.2 dependencies: postcss: 8.4.32 - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.15 postcss-value-parser: 4.2.0 dev: true @@ -9601,7 +10014,7 @@ packages: dependencies: lilconfig: 3.0.0 postcss: 8.4.32 - ts-node: 10.9.1(@swc/core@1.3.101)(@types/node@18.16.9)(typescript@5.2.2) + ts-node: 10.9.1(@swc/core@1.3.102)(@types/node@18.16.9)(typescript@5.2.2) yaml: 2.3.4 dev: true @@ -9616,7 +10029,7 @@ packages: klona: 2.0.6 postcss: 8.4.32 semver: 7.5.4 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true /postcss-merge-longhand@6.0.1(postcss@8.4.32): @@ -9640,7 +10053,7 @@ packages: caniuse-api: 3.0.0 cssnano-utils: 4.0.1(postcss@8.4.32) postcss: 8.4.32 - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.15 dev: true /postcss-minify-font-values@6.0.1(postcss@8.4.32): @@ -9684,7 +10097,7 @@ packages: postcss: ^8.4.31 dependencies: postcss: 8.4.32 - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.15 dev: true /postcss-modules-extract-imports@3.0.0(postcss@8.4.32): @@ -9704,7 +10117,7 @@ packages: dependencies: icss-utils: 5.1.0(postcss@8.4.32) postcss: 8.4.32 - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.15 postcss-value-parser: 4.2.0 dev: true @@ -9715,7 +10128,7 @@ packages: postcss: ^8.1.0 dependencies: postcss: 8.4.32 - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.15 dev: true /postcss-modules-values@4.0.0(postcss@8.4.32): @@ -9735,7 +10148,7 @@ packages: postcss: ^8.2.14 dependencies: postcss: 8.4.32 - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.15 dev: true /postcss-normalize-charset@6.0.1(postcss@8.4.32): @@ -9860,8 +10273,8 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-selector-parser@6.0.13: - resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + /postcss-selector-parser@6.0.15: + resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 @@ -9876,7 +10289,7 @@ packages: dependencies: postcss: 8.4.32 postcss-value-parser: 4.2.0 - svgo: 3.1.0 + svgo: 3.2.0 dev: true /postcss-unique-selectors@6.0.1(postcss@8.4.32): @@ -9886,7 +10299,7 @@ packages: postcss: ^8.4.31 dependencies: postcss: 8.4.32 - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.15 dev: true /postcss-value-parser@4.2.0: @@ -9939,15 +10352,6 @@ packages: react-is: 18.2.0 dev: true - /pretty@2.0.0: - resolution: {integrity: sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==} - engines: {node: '>=0.10.0'} - dependencies: - condense-newlines: 0.2.1 - extend-shallow: 2.0.1 - js-beautify: 1.14.11 - dev: false - /prisma@5.7.1: resolution: {integrity: sha512-ekho7ziH0WEJvC4AxuJz+ewRTMskrebPcrKuBwcNzVDniYxx+dXOGcorNeIb9VEMO5vrKzwNYvhD271Ui2jnNw==} engines: {node: '>=16.13'} @@ -9980,10 +10384,6 @@ packages: react-is: 16.13.1 dev: true - /proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - dev: false - /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -10160,7 +10560,7 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.7 dev: true /regexp.prototype.flags@1.5.1: @@ -10210,13 +10610,6 @@ packages: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true - /resend@2.0.0: - resolution: {integrity: sha512-jAh0DN84ZjjmzGM2vMjJ1hphPBg1mG98dzopF7kJzmin62v8ESg4og2iCKWdkAboGOT2SeO5exbr/8Xh8gLddw==} - engines: {node: '>=18'} - dependencies: - '@react-email/render': 0.0.9 - dev: false - /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} @@ -10288,7 +10681,7 @@ packages: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: - glob: 7.1.4 + glob: 7.2.3 dev: true /run-parallel@1.2.0: @@ -10329,7 +10722,7 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /sass-loader@12.6.0(sass@1.69.5)(webpack@5.89.0): + /sass-loader@12.6.0(sass@1.69.7)(webpack@5.89.0): resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -10350,12 +10743,12 @@ packages: dependencies: klona: 2.0.6 neo-async: 2.6.2 - sass: 1.69.5 - webpack: 5.89.0(@swc/core@1.3.101) + sass: 1.69.7 + webpack: 5.89.0(@swc/core@1.3.102) dev: true - /sass@1.69.5: - resolution: {integrity: sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==} + /sass@1.69.7: + resolution: {integrity: sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -10409,12 +10802,6 @@ packages: resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==} dev: true - /selderee@0.11.0: - resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} - dependencies: - parseley: 0.12.1 - dev: false - /select-hose@2.0.0: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} dev: true @@ -10423,7 +10810,7 @@ packages: resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} engines: {node: '>=10'} dependencies: - '@types/node-forge': 1.3.10 + '@types/node-forge': 1.3.11 node-forge: 1.3.1 dev: true @@ -10542,10 +10929,12 @@ packages: engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 + dev: true /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + dev: true /shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} @@ -10565,6 +10954,7 @@ packages: /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + dev: true /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -10608,7 +10998,7 @@ packages: abab: 2.0.6 iconv-lite: 0.6.3 source-map-js: 1.0.2 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true /source-map-support@0.5.13: @@ -10718,6 +11108,7 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + dev: true /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} @@ -10726,6 +11117,7 @@ packages: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 + dev: true /string.prototype.matchall@4.0.10: resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} @@ -10782,12 +11174,14 @@ packages: engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 + dev: true /strip-ansi@7.1.0: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 + dev: true /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} @@ -10825,10 +11219,10 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true - /styled-jsx@5.1.1(@babel/core@7.23.6)(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.23.7)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -10841,7 +11235,7 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.7 client-only: 0.0.1 react: 18.2.0 @@ -10853,7 +11247,7 @@ packages: dependencies: browserslist: 4.22.2 postcss: 8.4.32 - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.15 dev: true /stylus-loader@7.1.3(stylus@0.59.0)(webpack@5.89.0): @@ -10866,7 +11260,7 @@ packages: fast-glob: 3.3.2 normalize-path: 3.0.0 stylus: 0.59.0 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true /stylus@0.59.0: @@ -10924,8 +11318,8 @@ packages: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} dev: true - /svgo@3.1.0: - resolution: {integrity: sha512-R5SnNA89w1dYgNv570591F66v34b3eQShpIBcQtZtM5trJwm1VvxbIoMpRYY3ybTAutcKTLEmTsdnaknOHbiQA==} + /svgo@3.2.0: + resolution: {integrity: sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -10970,7 +11364,7 @@ packages: postcss-js: 4.0.1(postcss@8.4.32) postcss-load-config: 4.0.2(postcss@8.4.32)(ts-node@10.9.1) postcss-nested: 6.0.1(postcss@8.4.32) - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.15 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: @@ -10993,8 +11387,8 @@ packages: readable-stream: 3.6.2 dev: true - /terser-webpack-plugin@5.3.9(@swc/core@1.3.101)(webpack@5.89.0): - resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + /terser-webpack-plugin@5.3.10(@swc/core@1.3.102)(webpack@5.89.0): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -11010,12 +11404,12 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.20 - '@swc/core': 1.3.101 + '@swc/core': 1.3.102 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.26.0 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true /terser@5.26.0: @@ -11024,7 +11418,7 @@ packages: hasBin: true dependencies: '@jridgewell/source-map': 0.3.5 - acorn: 8.11.2 + acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 dev: true @@ -11122,7 +11516,7 @@ packages: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true - /ts-jest@29.1.1(@babel/core@7.23.6)(babel-jest@29.7.0)(jest@29.7.0)(typescript@5.2.2): + /ts-jest@29.1.1(@babel/core@7.23.7)(babel-jest@29.7.0)(jest@29.7.0)(typescript@5.2.2): resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -11143,8 +11537,8 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.23.6 - babel-jest: 29.7.0(@babel/core@7.23.6) + '@babel/core': 7.23.7 + babel-jest: 29.7.0(@babel/core@7.23.7) bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 jest: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1) @@ -11170,10 +11564,10 @@ packages: semver: 7.5.4 source-map: 0.7.4 typescript: 5.2.2 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true - /ts-node@10.9.1(@swc/core@1.3.101)(@types/node@18.16.9)(typescript@5.2.2): + /ts-node@10.9.1(@swc/core@1.3.102)(@types/node@18.16.9)(typescript@5.2.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -11188,13 +11582,13 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@swc/core': 1.3.101 + '@swc/core': 1.3.102 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 18.16.9 - acorn: 8.11.2 + acorn: 8.11.3 acorn-walk: 8.3.1 arg: 4.1.3 create-require: 1.1.1 @@ -11407,7 +11801,7 @@ packages: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true /url-parse@1.5.10: @@ -11517,7 +11911,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true /webpack-dev-server@4.15.1(webpack@5.89.0): @@ -11541,7 +11935,7 @@ packages: '@types/sockjs': 0.3.36 '@types/ws': 8.5.10 ansi-html-community: 0.0.8 - bonjour-service: 1.1.1 + bonjour-service: 1.2.0 chokidar: 3.5.3 colorette: 2.0.20 compression: 1.7.4 @@ -11561,9 +11955,9 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) webpack-dev-middleware: 5.3.3(webpack@5.89.0) - ws: 8.15.1 + ws: 8.16.0 transitivePeerDependencies: - bufferutil - debug @@ -11601,10 +11995,10 @@ packages: optional: true dependencies: typed-assert: 1.0.9 - webpack: 5.89.0(@swc/core@1.3.101) + webpack: 5.89.0(@swc/core@1.3.102) dev: true - /webpack@5.89.0(@swc/core@1.3.101): + /webpack@5.89.0(@swc/core@1.3.102): resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} engines: {node: '>=10.13.0'} hasBin: true @@ -11619,8 +12013,8 @@ packages: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/wasm-edit': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.11.2 - acorn-import-assertions: 1.9.0(acorn@8.11.2) + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) browserslist: 4.22.2 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 @@ -11635,7 +12029,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(@swc/core@1.3.101)(webpack@5.89.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.3.102)(webpack@5.89.0) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -11738,6 +12132,7 @@ packages: hasBin: true dependencies: isexe: 2.0.0 + dev: true /wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} @@ -11750,6 +12145,7 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: true /wrap-ansi@8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} @@ -11758,6 +12154,7 @@ packages: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 + dev: true /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -11771,8 +12168,8 @@ packages: signal-exit: 3.0.7 dev: true - /ws@8.15.1: - resolution: {integrity: sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==} + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 From 728256d0a4d2f45ba7b805affc408c03228c8c4f Mon Sep 17 00:00:00 2001 From: Lakshay saini Date: Thu, 4 Jan 2024 00:23:53 +0530 Subject: [PATCH 05/15] bug: send email async --- apps/api/src/auth/service/auth.service.ts | 2 +- apps/api/src/mail/services/mail.service.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/api/src/auth/service/auth.service.ts b/apps/api/src/auth/service/auth.service.ts index ef6770a3..8d3d3d4f 100644 --- a/apps/api/src/auth/service/auth.service.ts +++ b/apps/api/src/auth/service/auth.service.ts @@ -56,7 +56,7 @@ export class AuthService { this.OTP_EXPIRY ) - await this.resend.sendOtp(email, otp.code) + this.resend.sendOtp(email, otp.code) this.logger.log(`Login code sent to ${email}: ${otp.code}`) } diff --git a/apps/api/src/mail/services/mail.service.ts b/apps/api/src/mail/services/mail.service.ts index 96aaf7c2..880e6a96 100644 --- a/apps/api/src/mail/services/mail.service.ts +++ b/apps/api/src/mail/services/mail.service.ts @@ -44,7 +44,7 @@ export class MailService implements IMailService { ` - await this.sendEmail(email, subject, body) + this.sendEmail(email, subject, body) } async projectInvitationMailForNonRegisteredUser( @@ -72,7 +72,7 @@ export class MailService implements IMailService { ` - await this.sendEmail(email, subject, body) + this.sendEmail(email, subject, body) } async sendOtp(email: string, otp: string): Promise { @@ -95,7 +95,7 @@ export class MailService implements IMailService { ` - await this.sendEmail(email, subject, body) + this.sendEmail(email, subject, body) } private async sendEmail( @@ -104,7 +104,7 @@ export class MailService implements IMailService { body: string ): Promise { try { - await this.transporter.sendMail({ + this.transporter.sendMail({ from: process.env.FROM_EMAIL, to: email, subject: subject, From 5e1d0f153cda371a415c27e92ac558b770058b3e Mon Sep 17 00:00:00 2001 From: Lakshay saini Date: Thu, 4 Jan 2024 02:37:57 +0530 Subject: [PATCH 06/15] feat: added the auto assign workflow yaml file --- .github/workflows/auto-assign.yaml | 34 ++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/auto-assign.yaml diff --git a/.github/workflows/auto-assign.yaml b/.github/workflows/auto-assign.yaml new file mode 100644 index 00000000..24a8855a --- /dev/null +++ b/.github/workflows/auto-assign.yaml @@ -0,0 +1,34 @@ +name: Auto-assign issue on /attempt comment + +on: + issue_comment: + types: [created] + +jobs: + auto-assign: + runs-on: ubuntu-latest + steps: + - uses: actions/github-script@v7 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const comment = context.payload.comment; + const issue = context.issue; + + if (comment.body.startsWith('/attempt')) { + if (!issue.assignee) { + github.issues.assignees.add({ + issue_number: issue.number, + assignees: [comment.user.login] + }); + await github.issues.createComment({ + issue_number: issue.number, + body: 'Assigned the issue to you!' + }); + } else { + await github.issues.createComment({ + issue_number: issue.number, + body: 'This issue is already assigned. Tag a maintainer if you need to take over.' + }); + } + } From 5ffb54d7c8c584cccebcc71728ec84864a49332a Mon Sep 17 00:00:00 2001 From: Lakshay saini Date: Fri, 5 Jan 2024 01:16:21 +0530 Subject: [PATCH 07/15] chore:create a cron function that will run every hour to clean up expired otps --- .../src/auth/repository/auth.repository.ts | 11 ++++++ .../auth/repository/interface.repository.ts | 6 +++ .../src/auth/repository/mock.repository.ts | 4 ++ apps/api/src/auth/service/auth.service.ts | 11 ++++++ package.json | 1 + pnpm-lock.yaml | 38 +++++++++++++++++++ 6 files changed, 71 insertions(+) diff --git a/apps/api/src/auth/repository/auth.repository.ts b/apps/api/src/auth/repository/auth.repository.ts index 518dd52b..44828159 100644 --- a/apps/api/src/auth/repository/auth.repository.ts +++ b/apps/api/src/auth/repository/auth.repository.ts @@ -55,4 +55,15 @@ export class AuthRepository implements IAuthRepository { } }) } + + async deleteExpiredOtps(): Promise { + const timeNow = new Date() + await this.prisma.otp.deleteMany({ + where: { + expiresAt: { + lte: new Date(timeNow.getTime()) + } + } + }) + } } diff --git a/apps/api/src/auth/repository/interface.repository.ts b/apps/api/src/auth/repository/interface.repository.ts index 32dd3a0e..4d5d5f0c 100644 --- a/apps/api/src/auth/repository/interface.repository.ts +++ b/apps/api/src/auth/repository/interface.repository.ts @@ -34,4 +34,10 @@ export interface IAuthRepository { * @returns {Promise} - A promise that resolves when the OTP is successfully deleted. */ deleteOtp(email: User['email'], otp: string): Promise + + /** + * Cron Job that runs every hours to delete expired otp + * @returns {Promise} - A promise that resolves when the Expired OTPs are successfully deleted. + */ + deleteExpiredOtps(): Promise } diff --git a/apps/api/src/auth/repository/mock.repository.ts b/apps/api/src/auth/repository/mock.repository.ts index e770fdcc..38559ceb 100644 --- a/apps/api/src/auth/repository/mock.repository.ts +++ b/apps/api/src/auth/repository/mock.repository.ts @@ -20,4 +20,8 @@ export class MockAuthRepository implements IAuthRepository { deleteOtp(email: string, otp: string): Promise { throw new Error('Method not implemented.') } + + deleteExpiredOtps(): Promise { + throw new Error('Method not implemented.') + } } diff --git a/apps/api/src/auth/service/auth.service.ts b/apps/api/src/auth/service/auth.service.ts index 8d3d3d4f..901be31a 100644 --- a/apps/api/src/auth/service/auth.service.ts +++ b/apps/api/src/auth/service/auth.service.ts @@ -8,6 +8,7 @@ import { } from '@nestjs/common' import { randomUUID } from 'crypto' import { JwtService } from '@nestjs/jwt' +import { Cron, CronExpression } from '@nestjs/schedule' import { UserAuthenticatedResponse } from '../auth.types' import { IMailService, @@ -84,4 +85,14 @@ export class AuthService { token: await this.jwt.signAsync({ id: user.id }) } } + + @Cron(CronExpression.EVERY_HOUR) + async cleanUpExpiredOtps() { + try { + await this.authRepository.deleteExpiredOtps() + this.logger.log('Expired OTPs cleaned up successfully.') + } catch (error) { + this.logger.error(`Error cleaning up expired OTPs: ${error.message}`) + } + } } diff --git a/package.json b/package.json index 7a85a656..ec57ff45 100644 --- a/package.json +++ b/package.json @@ -95,6 +95,7 @@ "@nestjs/jwt": "^10.2.0", "@nestjs/passport": "^10.0.3", "@nestjs/platform-express": "^10.3.0", + "@nestjs/schedule": "^4.0.0", "@nestjs/swagger": "^7.1.17", "@prisma/client": "^5.7.1", "@supabase/supabase-js": "^2.39.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7d95a482..abc55520 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,6 +26,9 @@ importers: '@nestjs/platform-express': specifier: ^10.3.0 version: 10.3.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0) + '@nestjs/schedule': + specifier: ^4.0.0 + version: 4.0.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(reflect-metadata@0.1.14) '@nestjs/swagger': specifier: ^7.1.17 version: 7.1.17(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.14) @@ -2129,6 +2132,20 @@ packages: transitivePeerDependencies: - supports-color + /@nestjs/schedule@4.0.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-zz4h54m/F/1qyQKvMJCRphmuwGqJltDAkFxUXCVqJBXEs5kbPt93Pza3heCQOcMH22MZNhGlc9DmDMLXVHmgVQ==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 + reflect-metadata: ^0.1.12 + dependencies: + '@nestjs/common': 10.3.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 10.3.0(@nestjs/common@10.3.0)(@nestjs/platform-express@10.3.0)(reflect-metadata@0.1.14)(rxjs@7.8.1) + cron: 3.1.3 + reflect-metadata: 0.1.14 + uuid: 9.0.1 + dev: false + /@nestjs/schematics@10.0.3(typescript@5.2.2): resolution: {integrity: sha512-2BRujK0GqGQ7j1Zpz+obVfskDnnOeVKt5aXoSaVngKo8Oczy8uYCY+R547TQB+Kf35epdfFER2pVnQrX3/It5A==} peerDependencies: @@ -4434,6 +4451,10 @@ packages: dependencies: '@types/node': 18.16.9 + /@types/luxon@3.3.8: + resolution: {integrity: sha512-jYvz8UMLDgy3a5SkGJne8H7VA7zPV2Lwohjx0V8V31+SqAjNmurWMkk9cQhfvlcnXWudBpK9xPM1n4rljOcHYQ==} + dev: false + /@types/mime@1.3.5: resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} dev: true @@ -5907,6 +5928,13 @@ packages: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true + /cron@3.1.3: + resolution: {integrity: sha512-KVxeKTKYj2eNzN4ElnT6nRSbjbfhyxR92O/Jdp6SH3pc05CDJws59jBrZWEMQlxevCiE6QUTrXy+Im3vC3oD3A==} + dependencies: + '@types/luxon': 3.3.8 + luxon: 3.4.4 + dev: false + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -8976,6 +9004,11 @@ packages: dependencies: yallist: 4.0.0 + /luxon@3.4.4: + resolution: {integrity: sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==} + engines: {node: '>=12'} + dev: false + /lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -11828,6 +11861,11 @@ packages: hasBin: true dev: false + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true From 64596226810cf0e6785ece1d022acbce05f8ab5e Mon Sep 17 00:00:00 2001 From: Lakshay saini Date: Fri, 5 Jan 2024 01:41:03 +0530 Subject: [PATCH 08/15] chore: update contribution readme with step to auto assign issue --- CONTRIBUTIONS.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CONTRIBUTIONS.md b/CONTRIBUTIONS.md index eaf78eee..a0941fe2 100644 --- a/CONTRIBUTIONS.md +++ b/CONTRIBUTIONS.md @@ -12,6 +12,15 @@ Before reporting a bug, please check our list of [open issues](https://github.co If you have ideas for improvements or new features we would love to hear them. Please provide as much detail as possible so we can fully understand your ideas. You can [create a new issue](https://github.com/keyshade-xyz/keyshade/issues/new/choose) to share your suggestions. +## Self Assigning Issues + +1. To express interest in working on an issue, simply type `/attempt` at the beginning of a comment. +2. If the issue is unassigned, it will be automatically assigned to you. ✨ +3. If the issue is already assigned, you'll receive a message indicating the need to contact a maintainer to discuss reassignment. + +**Example:** +`/attempt` I'd like to work on this issue. + ## Code Contribution Please ensure your pull request adheres to the following guidelines: From 563f9d2a8275287f2086ae0550cf9d547dff415c Mon Sep 17 00:00:00 2001 From: rajdip-b Date: Fri, 5 Jan 2024 10:49:22 +0530 Subject: [PATCH 09/15] Revert "patch: send email async" This reverts commit 091e49b48cdd66e7d133e8290959989d8453187e, reversing changes made to f0b0887e494f44eeaf01e1ff0945eb2079641683. --- apps/api/src/auth/service/auth.service.ts | 2 +- apps/api/src/mail/services/mail.service.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/api/src/auth/service/auth.service.ts b/apps/api/src/auth/service/auth.service.ts index 8d3d3d4f..ef6770a3 100644 --- a/apps/api/src/auth/service/auth.service.ts +++ b/apps/api/src/auth/service/auth.service.ts @@ -56,7 +56,7 @@ export class AuthService { this.OTP_EXPIRY ) - this.resend.sendOtp(email, otp.code) + await this.resend.sendOtp(email, otp.code) this.logger.log(`Login code sent to ${email}: ${otp.code}`) } diff --git a/apps/api/src/mail/services/mail.service.ts b/apps/api/src/mail/services/mail.service.ts index 880e6a96..96aaf7c2 100644 --- a/apps/api/src/mail/services/mail.service.ts +++ b/apps/api/src/mail/services/mail.service.ts @@ -44,7 +44,7 @@ export class MailService implements IMailService { ` - this.sendEmail(email, subject, body) + await this.sendEmail(email, subject, body) } async projectInvitationMailForNonRegisteredUser( @@ -72,7 +72,7 @@ export class MailService implements IMailService { ` - this.sendEmail(email, subject, body) + await this.sendEmail(email, subject, body) } async sendOtp(email: string, otp: string): Promise { @@ -95,7 +95,7 @@ export class MailService implements IMailService { ` - this.sendEmail(email, subject, body) + await this.sendEmail(email, subject, body) } private async sendEmail( @@ -104,7 +104,7 @@ export class MailService implements IMailService { body: string ): Promise { try { - this.transporter.sendMail({ + await this.transporter.sendMail({ from: process.env.FROM_EMAIL, to: email, subject: subject, From 44dc980610d4b8f47103f4d72d1af1397a15b510 Mon Sep 17 00:00:00 2001 From: rajdip-b Date: Fri, 5 Jan 2024 19:10:40 +0530 Subject: [PATCH 10/15] patch: remove free tier data from migration --- .../migrations/20240102080245_init/migration.sql | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/apps/api/src/prisma/migrations/20240102080245_init/migration.sql b/apps/api/src/prisma/migrations/20240102080245_init/migration.sql index 80eb9670..15a6200a 100644 --- a/apps/api/src/prisma/migrations/20240102080245_init/migration.sql +++ b/apps/api/src/prisma/migrations/20240102080245_init/migration.sql @@ -43,18 +43,6 @@ CREATE TABLE "Subscription" ( CONSTRAINT "Subscription_pkey" PRIMARY KEY ("id") ); --- CreateTable -CREATE TABLE "FreeTierLimit" ( - "id" TEXT NOT NULL, - "maxProjects" INTEGER NOT NULL DEFAULT 5, - "maxEnvironments" INTEGER NOT NULL DEFAULT 3, - "maxApiKeys" INTEGER NOT NULL DEFAULT 3, - "maxSecretsPerProject" INTEGER NOT NULL DEFAULT 10, - "maxMembersPerProject" INTEGER NOT NULL DEFAULT 5, - - CONSTRAINT "FreeTierLimit_pkey" PRIMARY KEY ("id") -); - -- CreateTable CREATE TABLE "Environment" ( "id" TEXT NOT NULL, From aaf67834298bd6b4836686c4342dc75cce63d1cf Mon Sep 17 00:00:00 2001 From: rajdip-b Date: Fri, 5 Jan 2024 21:19:15 +0530 Subject: [PATCH 11/15] feat: finish environment module --- .../controller/environment.controller.spec.ts | 36 ++- .../controller/environment.controller.ts | 111 +++++++- .../create.environment.spec.ts | 0 .../create.environment.ts | 0 .../update.environment.spec.ts | 7 + .../update.environment/update.environment.ts | 4 + .../api/src/environment/environment.module.ts | 10 +- .../repository/environment.repository.ts | 53 +++- .../repository/interface.repository.ts | 31 +++ .../environment/repository/mock.repository.ts | 26 ++ .../service/environment.service.spec.ts | 36 ++- .../service/environment.service.ts | 252 +++++++++++++++++- .../dto/create.project/create.project.ts | 2 +- .../src/project/misc/project.permission.ts | 35 ++- apps/api/src/project/project.module.ts | 1 + 15 files changed, 574 insertions(+), 30 deletions(-) rename apps/api/src/environment/dto/{ => create.environment}/create.environment.spec.ts (100%) rename apps/api/src/environment/dto/{ => create.environment}/create.environment.ts (100%) create mode 100644 apps/api/src/environment/dto/update.environment/update.environment.spec.ts create mode 100644 apps/api/src/environment/dto/update.environment/update.environment.ts diff --git a/apps/api/src/environment/controller/environment.controller.spec.ts b/apps/api/src/environment/controller/environment.controller.spec.ts index 3dfed82a..24d53dc0 100644 --- a/apps/api/src/environment/controller/environment.controller.spec.ts +++ b/apps/api/src/environment/controller/environment.controller.spec.ts @@ -1,18 +1,36 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { EnvironmentController } from './environment.controller'; +import { Test, TestingModule } from '@nestjs/testing' +import { EnvironmentController } from './environment.controller' +import { EnvironmentService } from '../service/environment.service' +import { ENVIRONMENT_REPOSITORY } from '../repository/interface.repository' +import { MockEnvironmentRepository } from '../repository/mock.repository' +import { MockProjectRepository } from '../../project/repository/mock.repository' +import { PROJECT_REPOSITORY } from '../../project/repository/interface.repository' +import { ProjectPermission } from '../../project/misc/project.permission' describe('EnvironmentController', () => { - let controller: EnvironmentController; + let controller: EnvironmentController beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ controllers: [EnvironmentController], - }).compile(); + providers: [ + EnvironmentService, + { + provide: ENVIRONMENT_REPOSITORY, + useClass: MockEnvironmentRepository + }, + { + provide: PROJECT_REPOSITORY, + useClass: MockProjectRepository + }, + ProjectPermission + ] + }).compile() - controller = module.get(EnvironmentController); - }); + controller = module.get(EnvironmentController) + }) it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); + expect(controller).toBeDefined() + }) +}) diff --git a/apps/api/src/environment/controller/environment.controller.ts b/apps/api/src/environment/controller/environment.controller.ts index 0d4e4a1b..8483e236 100644 --- a/apps/api/src/environment/controller/environment.controller.ts +++ b/apps/api/src/environment/controller/environment.controller.ts @@ -1,4 +1,111 @@ -import { Controller } from '@nestjs/common'; +import { + Body, + Controller, + Delete, + Get, + Param, + Post, + Put, + Query, + UseGuards +} from '@nestjs/common' +import { EnvironmentService } from '../service/environment.service' +import { CurrentUser } from '../../decorators/user.decorator' +import { CreateEnvironment } from '../dto/create.environment/create.environment' +import { User } from '@prisma/client' +import { AdminGuard } from '../../auth/guard/admin.guard' +import { UpdateEnvironment } from '../dto/update.environment/update.environment' @Controller('environment') -export class EnvironmentController {} +export class EnvironmentController { + constructor(private readonly environmentService: EnvironmentService) {} + + @Post(':projectId') + async createEnvironment( + @CurrentUser() user: User, + @Body() dto: CreateEnvironment, + @Param('projectId') projectId: string + ) { + return await this.environmentService.createEnvironment(user, dto, projectId) + } + + @Put(':projectId/:environmentId') + async updateEnvironment( + @CurrentUser() user: User, + @Body() dto: UpdateEnvironment, + @Param('projectId') projectId: string, + @Param('environmentId') environmentId: string + ) { + return await this.environmentService.updateEnvironment( + user, + dto, + projectId, + environmentId + ) + } + + @Get(':projectId/:environmentId') + async getEnvironment( + @CurrentUser() user: User, + @Param('projectId') projectId: string, + @Param('environmentId') environmentId: string + ) { + return await this.environmentService.getEnvironmentByProjectIdAndId( + user, + projectId, + environmentId + ) + } + + @Get(':projectId') + async getEnvironmentsOfProject( + @CurrentUser() user: User, + @Param('projectId') projectId: string, + @Query('page') page: number = 1, + @Query('limit') limit: number = 10, + @Query('sort') sort: string = 'name', + @Query('order') order: string = 'asc', + @Query('search') search: string = '' + ) { + return await this.environmentService.getEnvironmentsOfProject( + user, + projectId, + page, + limit, + sort, + order, + search + ) + } + + @Get() + @UseGuards(AdminGuard) + async getAllEnvironments( + @Query('page') page: number = 1, + @Query('limit') limit: number = 10, + @Query('sort') sort: string = 'name', + @Query('order') order: string = 'asc', + @Query('search') search: string = '' + ) { + return await this.environmentService.getAllEnvironments( + page, + limit, + sort, + order, + search + ) + } + + @Delete(':projectId/:environmentId') + async deleteEnvironment( + @CurrentUser() user: User, + @Param('projectId') projectId: string, + @Param('environmentId') environmentId: string + ) { + return await this.environmentService.deleteEnvironment( + user, + projectId, + environmentId + ) + } +} diff --git a/apps/api/src/environment/dto/create.environment.spec.ts b/apps/api/src/environment/dto/create.environment/create.environment.spec.ts similarity index 100% rename from apps/api/src/environment/dto/create.environment.spec.ts rename to apps/api/src/environment/dto/create.environment/create.environment.spec.ts diff --git a/apps/api/src/environment/dto/create.environment.ts b/apps/api/src/environment/dto/create.environment/create.environment.ts similarity index 100% rename from apps/api/src/environment/dto/create.environment.ts rename to apps/api/src/environment/dto/create.environment/create.environment.ts diff --git a/apps/api/src/environment/dto/update.environment/update.environment.spec.ts b/apps/api/src/environment/dto/update.environment/update.environment.spec.ts new file mode 100644 index 00000000..fa14f081 --- /dev/null +++ b/apps/api/src/environment/dto/update.environment/update.environment.spec.ts @@ -0,0 +1,7 @@ +import { UpdateEnvironment } from './update.environment'; + +describe('UpdateEnvironment', () => { + it('should be defined', () => { + expect(new UpdateEnvironment()).toBeDefined(); + }); +}); diff --git a/apps/api/src/environment/dto/update.environment/update.environment.ts b/apps/api/src/environment/dto/update.environment/update.environment.ts new file mode 100644 index 00000000..0b3f96a2 --- /dev/null +++ b/apps/api/src/environment/dto/update.environment/update.environment.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/swagger' +import { CreateEnvironment } from '../create.environment/create.environment' + +export class UpdateEnvironment extends PartialType(CreateEnvironment) {} diff --git a/apps/api/src/environment/environment.module.ts b/apps/api/src/environment/environment.module.ts index 0c3bf082..c7749e4d 100644 --- a/apps/api/src/environment/environment.module.ts +++ b/apps/api/src/environment/environment.module.ts @@ -3,6 +3,9 @@ import { EnvironmentController } from './controller/environment.controller' import { EnvironmentService } from './service/environment.service' import { ENVIRONMENT_REPOSITORY } from './repository/interface.repository' import { EnvironmentRepository } from './repository/environment.repository' +import { PROJECT_REPOSITORY } from '../project/repository/interface.repository' +import { ProjectRepository } from '../project/repository/project.repository' +import { ProjectPermission } from '../project/misc/project.permission' @Module({ controllers: [EnvironmentController], @@ -17,7 +20,12 @@ import { EnvironmentRepository } from './repository/environment.repository' { provide: ENVIRONMENT_REPOSITORY, useClass: EnvironmentRepository - } + }, + { + provide: PROJECT_REPOSITORY, + useClass: ProjectRepository + }, + ProjectPermission ] }) export class EnvironmentModule {} diff --git a/apps/api/src/environment/repository/environment.repository.ts b/apps/api/src/environment/repository/environment.repository.ts index f9f0f5bf..dbaae88c 100644 --- a/apps/api/src/environment/repository/environment.repository.ts +++ b/apps/api/src/environment/repository/environment.repository.ts @@ -1,4 +1,4 @@ -import { Environment } from '@prisma/client' +import { Environment, Project } from '@prisma/client' import { PrismaService } from '../../prisma/prisma.service' import { IEnvironmentRepository } from './interface.repository' import { Injectable } from '@nestjs/common' @@ -16,6 +16,7 @@ export class EnvironmentRepository implements IEnvironmentRepository { data: { name: environment.name, description: environment.description, + isDefault: environment.isDefault, projectId, lastUpdatedById: userId } @@ -42,7 +43,8 @@ export class EnvironmentRepository implements IEnvironmentRepository { ): Promise { return await this.prisma.environment.findUnique({ where: { - id: environmentId + id: environmentId, + projectId }, include: { secrets: true, @@ -67,7 +69,30 @@ export class EnvironmentRepository implements IEnvironmentRepository { } }, include: { - secrets: true, + lastUpdatedBy: true + }, + skip: (page - 1) * limit, + take: limit, + orderBy: { + [sort]: order + } + }) + } + + async getEnvironments( + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise { + return await this.prisma.environment.findMany({ + where: { + name: { + contains: search + } + }, + include: { lastUpdatedBy: true }, skip: (page - 1) * limit, @@ -90,6 +115,7 @@ export class EnvironmentRepository implements IEnvironmentRepository { data: { name: environment.name, description: environment.description, + isDefault: environment.isDefault, lastUpdatedById: userId }, include: { @@ -99,6 +125,17 @@ export class EnvironmentRepository implements IEnvironmentRepository { }) } + async makeAllNonDefault(projectId: Project['id']): Promise { + await this.prisma.environment.updateMany({ + where: { + projectId + }, + data: { + isDefault: false + } + }) + } + async deleteEnvironment(environmentId: string): Promise { await this.prisma.environment.delete({ where: { @@ -106,4 +143,14 @@ export class EnvironmentRepository implements IEnvironmentRepository { } }) } + + async countTotalEnvironmentsInProject( + projectId: Project['id'] + ): Promise { + return await this.prisma.environment.count({ + where: { + projectId + } + }) + } } diff --git a/apps/api/src/environment/repository/interface.repository.ts b/apps/api/src/environment/repository/interface.repository.ts index f65858e9..c4d75e9c 100644 --- a/apps/api/src/environment/repository/interface.repository.ts +++ b/apps/api/src/environment/repository/interface.repository.ts @@ -60,6 +60,23 @@ export interface IEnvironmentRepository { search: string ): Promise + /** + * Retrieves all environments with optional pagination, sorting, and search. + * @param {number} page - The page number for pagination. + * @param {number} limit - The number of environments per page. + * @param {string} sort - The field to sort by. + * @param {string} order - The sort order ('asc' or 'desc'). + * @param {string} search - The search term for environment names. + * @returns {Promise} - A promise that resolves to an array of environments. + */ + getEnvironments( + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise + /** * Updates an existing environment. * @param {Environment['id']} environmentId - The ID of the environment to update. @@ -73,10 +90,24 @@ export interface IEnvironmentRepository { userId: User['id'] ): Promise + /** + * Makes all the environments in this project non-default + * @param {Project['id']} projectId - The ID of the project. + * @returns {Promise} - A promise that resolves to the default environment or null if not found. + */ + makeAllNonDefault(projectId: Project['id']): Promise + /** * Deletes an environment. * @param {Environment['id']} environmentId - The ID of the environment to delete. * @returns {Promise} - A promise that resolves when the environment is successfully deleted. */ deleteEnvironment(environmentId: Environment['id']): Promise + + /** + * Get the total number of environments in a project. + * @param {Project['id']} projectId - The ID of the project. + * @returns {Promise} - A promise that resolves when the total environments are fetched. + */ + countTotalEnvironmentsInProject(projectId: Project['id']): Promise } diff --git a/apps/api/src/environment/repository/mock.repository.ts b/apps/api/src/environment/repository/mock.repository.ts index 64e50850..7e2a8d83 100644 --- a/apps/api/src/environment/repository/mock.repository.ts +++ b/apps/api/src/environment/repository/mock.repository.ts @@ -3,6 +3,32 @@ import { Environment } from '@prisma/client' import { IEnvironmentRepository } from './interface.repository' export class MockEnvironmentRepository implements IEnvironmentRepository { + countTotalEnvironmentsInProject(projectId: string): Promise { + throw new Error('Method not implemented.') + } + getEnvironments( + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise< + { + id: string + name: string + description: string + createdAt: Date + updatedAt: Date + isDefault: boolean + lastUpdatedById: string + projectId: string + }[] + > { + throw new Error('Method not implemented.') + } + makeAllNonDefault(projectId: string): Promise { + throw new Error('Method not implemented.') + } createEnvironment( environment: Partial, projectId: string, diff --git a/apps/api/src/environment/service/environment.service.spec.ts b/apps/api/src/environment/service/environment.service.spec.ts index cd2ad4bb..7f246c3f 100644 --- a/apps/api/src/environment/service/environment.service.spec.ts +++ b/apps/api/src/environment/service/environment.service.spec.ts @@ -1,18 +1,34 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { EnvironmentService } from './environment.service'; +import { Test, TestingModule } from '@nestjs/testing' +import { EnvironmentService } from './environment.service' +import { ENVIRONMENT_REPOSITORY } from '../repository/interface.repository' +import { MockEnvironmentRepository } from '../repository/mock.repository' +import { PROJECT_REPOSITORY } from '../../project/repository/interface.repository' +import { MockProjectRepository } from '../../project/repository/mock.repository' +import { ProjectPermission } from '../../project/misc/project.permission' describe('EnvironmentService', () => { - let service: EnvironmentService; + let service: EnvironmentService beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ - providers: [EnvironmentService], - }).compile(); + providers: [ + EnvironmentService, + { + provide: ENVIRONMENT_REPOSITORY, + useClass: MockEnvironmentRepository + }, + { + provide: PROJECT_REPOSITORY, + useClass: MockProjectRepository + }, + ProjectPermission + ] + }).compile() - service = module.get(EnvironmentService); - }); + service = module.get(EnvironmentService) + }) it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); + expect(service).toBeDefined() + }) +}) diff --git a/apps/api/src/environment/service/environment.service.ts b/apps/api/src/environment/service/environment.service.ts index 46a89b0a..6d7b3362 100644 --- a/apps/api/src/environment/service/environment.service.ts +++ b/apps/api/src/environment/service/environment.service.ts @@ -1,4 +1,252 @@ -import { Injectable } from '@nestjs/common'; +import { + ConflictException, + Inject, + Injectable, + NotFoundException +} from '@nestjs/common' +import { + ENVIRONMENT_REPOSITORY, + IEnvironmentRepository +} from '../repository/interface.repository' +import { Environment, Project, User } from '@prisma/client' +import { CreateEnvironment } from '../dto/create.environment/create.environment' +import { ProjectPermission } from '../../project/misc/project.permission' +import { + IProjectRepository, + PROJECT_REPOSITORY +} from '../../project/repository/interface.repository' +import { UpdateEnvironment } from '../dto/update.environment/update.environment' @Injectable() -export class EnvironmentService {} +export class EnvironmentService { + constructor( + @Inject(ENVIRONMENT_REPOSITORY) + private readonly environmentRepository: IEnvironmentRepository, + @Inject(PROJECT_REPOSITORY) + private readonly projectRepository: IProjectRepository, + private readonly projectPermissionService: ProjectPermission + ) {} + + async createEnvironment( + user: User, + dto: CreateEnvironment, + projectId: Project['id'] + ) { + // Check if the project exists + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + if (!project) { + throw new NotFoundException('Project not found') + } + + // Check if the user can manage environments of the project + await this.projectPermissionService.canManageEnvironmentsOfProject( + user, + projectId + ) + + // Check if an environment with the same name already exists + if ( + await this.environmentRepository.environmentExists(dto.name, projectId) + ) { + throw new ConflictException('Environment already exists') + } + + // If the current environment needs to be the default one, we will + // need to update the existing default environment to be a regular one + if (dto.isDefault) { + await this.environmentRepository.makeAllNonDefault(projectId) + } + + // Create the environment + return this.environmentRepository.createEnvironment(dto, projectId, user.id) + } + + async updateEnvironment( + user: User, + dto: UpdateEnvironment, + projectId: Project['id'], + environmentId: Environment['id'] + ) { + // Check if the project exists + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + if (!project) { + throw new NotFoundException('Project not found') + } + + // Check if the user can manage environments of the project + await this.projectPermissionService.canManageEnvironmentsOfProject( + user, + projectId + ) + + // Check if the environment exists + const environment = + await this.environmentRepository.getEnvironmentByProjectIdAndId( + projectId, + environmentId + ) + if (!environment) { + throw new NotFoundException('Environment not found') + } + + // Check if an environment with the same name already exists + if ( + dto.name && + (await this.environmentRepository.environmentExists(dto.name, projectId)) + ) { + throw new ConflictException('Environment already exists') + } + + // If the current environment needs to be the default one, we will + // need to update the existing default environment to be a regular one + if (dto.isDefault) { + await this.environmentRepository.makeAllNonDefault(projectId) + } + + // Update the environment + return this.environmentRepository.updateEnvironment( + environmentId, + dto, + user.id + ) + } + + async getEnvironmentByProjectIdAndId( + user: User, + projectId: Project['id'], + environmentId: Environment['id'] + ) { + // Check if the project exists + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + if (!project) { + throw new NotFoundException('Project not found') + } + + // Check if the user can manage environments of the project + await this.projectPermissionService.canManageEnvironmentsOfProject( + user, + projectId + ) + + // Check if the environment exists + const environment = + await this.environmentRepository.getEnvironmentByProjectIdAndId( + projectId, + environmentId + ) + if (!environment) { + throw new NotFoundException('Environment not found') + } + + return environment + } + + async getEnvironmentsOfProject( + user: User, + projectId: Project['id'], + page: number, + limit: number, + sort: string, + order: string, + search: string + ) { + // Check if the project exists + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + if (!project) { + throw new NotFoundException('Project not found') + } + + // Check if the user can manage environments of the project + await this.projectPermissionService.canManageEnvironmentsOfProject( + user, + projectId + ) + + // Get the environments + return this.environmentRepository.getEnvironmentsOfProject( + projectId, + page, + limit, + sort, + order, + search + ) + } + + async getAllEnvironments( + page: number, + limit: number, + sort: string, + order: string, + search: string + ) { + // Get the environments + return this.environmentRepository.getEnvironments( + page, + limit, + sort, + order, + search + ) + } + + async deleteEnvironment( + user: User, + projectId: Project['id'], + environmentId: Environment['id'] + ) { + // Check if the project exists + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + if (!project) { + throw new NotFoundException('Project not found') + } + + // Check if the user can manage environments of the project + await this.projectPermissionService.canManageEnvironmentsOfProject( + user, + projectId + ) + + // Check if the environment exists + const environment = + await this.environmentRepository.getEnvironmentByProjectIdAndId( + projectId, + environmentId + ) + if (!environment) { + throw new NotFoundException('Environment not found') + } + + // Check if the environment is the default one + if (environment.isDefault) { + throw new ConflictException('Cannot delete the default environment') + } + + // Check if this is the last environment + if ( + (await this.environmentRepository.countTotalEnvironmentsInProject( + projectId + )) === 1 + ) { + throw new ConflictException('Cannot delete the last environment') + } + + // Delete the environment + return this.environmentRepository.deleteEnvironment(environmentId) + } +} diff --git a/apps/api/src/project/dto/create.project/create.project.ts b/apps/api/src/project/dto/create.project/create.project.ts index 342ae719..0741bce7 100644 --- a/apps/api/src/project/dto/create.project/create.project.ts +++ b/apps/api/src/project/dto/create.project/create.project.ts @@ -1,5 +1,5 @@ import { ProjectRole } from '@prisma/client' -import { CreateEnvironment } from '../../../environment/dto/create.environment' +import { CreateEnvironment } from '../../../environment/dto/create.environment/create.environment' import { IsArray, IsBoolean, diff --git a/apps/api/src/project/misc/project.permission.ts b/apps/api/src/project/misc/project.permission.ts index 4fab02d5..3eba0d99 100644 --- a/apps/api/src/project/misc/project.permission.ts +++ b/apps/api/src/project/misc/project.permission.ts @@ -1,8 +1,9 @@ -import { Inject, UnauthorizedException } from '@nestjs/common' +import { Inject, Injectable, UnauthorizedException } from '@nestjs/common' import { Project, ProjectRole, User } from '@prisma/client' import { ProjectRepository } from '../repository/project.repository' import { PROJECT_REPOSITORY } from '../repository/interface.repository' +@Injectable() export class ProjectPermission { constructor( @Inject(PROJECT_REPOSITORY) private readonly repository: ProjectRepository @@ -50,6 +51,13 @@ export class ProjectPermission { await this.isProjectAdmin(user, projectId) } + async canManageEnvironmentsOfProject( + user: User, + projectId: Project['id'] + ): Promise { + await this.isProjectMaintainer(user, projectId) + } + async isProjectAdmin(user: User, projectId: Project['id']): Promise { // Admins can do everything if (user.isAdmin) Promise.resolve() @@ -63,7 +71,30 @@ export class ProjectPermission { throw new UnauthorizedException('User is not a member of the project') } if (membership.role !== ProjectRole.OWNER) { - throw new UnauthorizedException('OWNER role is required') + throw new UnauthorizedException('Atleast OWNER role is required') + } + } + + async isProjectMaintainer( + user: User, + projectId: Project['id'] + ): Promise { + // Admins can do everything + if (user.isAdmin) Promise.resolve() + + // Else, check if the user is a project admin + const memberships = await this.resolveProjectsOfUser(user) + const membership = memberships.find( + (membership) => membership.projectId === projectId + ) + if (!membership) { + throw new UnauthorizedException('User is not a member of the project') + } + if ( + membership.role !== ProjectRole.OWNER && + membership.role !== ProjectRole.MAINTAINER + ) { + throw new UnauthorizedException('Atleast MAINTAINER role is required') } } diff --git a/apps/api/src/project/project.module.ts b/apps/api/src/project/project.module.ts index 1d08a1c4..6d431254 100644 --- a/apps/api/src/project/project.module.ts +++ b/apps/api/src/project/project.module.ts @@ -17,6 +17,7 @@ import { UserModule } from '../user/user.module' ProjectPermission ], controllers: [ProjectController], + exports: [ProjectPermission], imports: [UserModule, EnvironmentModule] }) export class ProjectModule {} From 0ecc7494dade74d8ad59da25a73430564808f013 Mon Sep 17 00:00:00 2001 From: Lakshay saini Date: Sat, 6 Jan 2024 02:52:48 +0530 Subject: [PATCH 12/15] fix: issue auto assign cannot read properties of undefined assignees --- .github/workflows/auto-assign.yaml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/auto-assign.yaml b/.github/workflows/auto-assign.yaml index 24a8855a..dea0e974 100644 --- a/.github/workflows/auto-assign.yaml +++ b/.github/workflows/auto-assign.yaml @@ -14,19 +14,27 @@ jobs: script: | const comment = context.payload.comment; const issue = context.issue; + const owner = "keyshade-xyz"; + const repo = "keyshade if (comment.body.startsWith('/attempt')) { if (!issue.assignee) { - github.issues.assignees.add({ + await github.rest.issues.addAssignees({ + owner, + repo, issue_number: issue.number, assignees: [comment.user.login] }); - await github.issues.createComment({ + await github.rest.issues.createComment({ + owner, + repo, issue_number: issue.number, body: 'Assigned the issue to you!' }); } else { - await github.issues.createComment({ + await github.rest.issues.createComment({ + owner, + repo, issue_number: issue.number, body: 'This issue is already assigned. Tag a maintainer if you need to take over.' }); From e59d410f714d89daf53f7e99fd7b1ce30a67e059 Mon Sep 17 00:00:00 2001 From: Rajdip Bhattacharya Date: Sat, 6 Jan 2024 15:53:26 +0530 Subject: [PATCH 13/15] fix: fix syntax error in auto-assign.yaml --- .github/workflows/auto-assign.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-assign.yaml b/.github/workflows/auto-assign.yaml index dea0e974..7ac60a42 100644 --- a/.github/workflows/auto-assign.yaml +++ b/.github/workflows/auto-assign.yaml @@ -15,7 +15,7 @@ jobs: const comment = context.payload.comment; const issue = context.issue; const owner = "keyshade-xyz"; - const repo = "keyshade + const repo = "keyshade" if (comment.body.startsWith('/attempt')) { if (!issue.assignee) { From cd79172ca33aa5c6c72b7859acdeaa2bb5b10970 Mon Sep 17 00:00:00 2001 From: rajdip-b Date: Mon, 8 Jan 2024 00:05:27 +0530 Subject: [PATCH 14/15] feat: add secret module --- .../repository/environment.repository.ts | 20 + .../repository/interface.repository.ts | 9 + .../environment/repository/mock.repository.ts | 14 + .../service/environment.service.ts | 26 +- .../migration.sql | 5 + apps/api/src/prisma/schema.prisma | 5 + .../controller/project.controller.spec.ts | 3 + .../src/project/misc/project.permission.ts | 55 +-- apps/api/src/project/project.module.ts | 3 +- apps/api/src/project/project.types.ts | 30 ++ .../repository/interface.repository.ts | 17 +- .../src/project/repository/mock.repository.ts | 21 +- .../project/repository/project.repository.ts | 38 +- .../project/service/project.service.spec.ts | 3 + .../src/project/service/project.service.ts | 71 +-- .../controller/secret.controller.spec.ts | 58 +++ .../secret/controller/secret.controller.ts | 149 ++++++ .../dto/create.secret/create.secret.spec.ts | 7 + .../secret/dto/create.secret/create.secret.ts | 13 + .../dto/update.secret/update.secret.spec.ts | 7 + .../secret/dto/update.secret/update.secret.ts | 4 + .../secret/repository/interface.repository.ts | 70 +++ .../src/secret/repository/mock.repository.ts | 167 +++++++ .../secret/repository/secret.repository.ts | 272 +++++++++++ apps/api/src/secret/secret.module.ts | 36 ++ apps/api/src/secret/secret.types.ts | 9 + .../src/secret/service/secret.service.spec.ts | 56 +++ apps/api/src/secret/service/secret.service.ts | 432 ++++++++++++++++++ 28 files changed, 1475 insertions(+), 125 deletions(-) rename apps/api/src/prisma/migrations/{20240102080245_init => 20240107183040_init}/migration.sql (96%) create mode 100644 apps/api/src/project/project.types.ts create mode 100644 apps/api/src/secret/controller/secret.controller.spec.ts create mode 100644 apps/api/src/secret/controller/secret.controller.ts create mode 100644 apps/api/src/secret/dto/create.secret/create.secret.spec.ts create mode 100644 apps/api/src/secret/dto/create.secret/create.secret.ts create mode 100644 apps/api/src/secret/dto/update.secret/update.secret.spec.ts create mode 100644 apps/api/src/secret/dto/update.secret/update.secret.ts create mode 100644 apps/api/src/secret/repository/interface.repository.ts create mode 100644 apps/api/src/secret/repository/mock.repository.ts create mode 100644 apps/api/src/secret/repository/secret.repository.ts create mode 100644 apps/api/src/secret/secret.module.ts create mode 100644 apps/api/src/secret/secret.types.ts create mode 100644 apps/api/src/secret/service/secret.service.spec.ts create mode 100644 apps/api/src/secret/service/secret.service.ts diff --git a/apps/api/src/environment/repository/environment.repository.ts b/apps/api/src/environment/repository/environment.repository.ts index dbaae88c..7ae9fb84 100644 --- a/apps/api/src/environment/repository/environment.repository.ts +++ b/apps/api/src/environment/repository/environment.repository.ts @@ -37,6 +37,26 @@ export class EnvironmentRepository implements IEnvironmentRepository { .then((count) => count > 0) } + async getDefaultEnvironmentOfProject( + projectId: string + ): Promise<{ + id: string + name: string + description: string + createdAt: Date + updatedAt: Date + isDefault: boolean + lastUpdatedById: string + projectId: string + }> { + return await this.prisma.environment.findFirst({ + where: { + projectId, + isDefault: true + } + }) + } + async getEnvironmentByProjectIdAndId( projectId: string, environmentId: string diff --git a/apps/api/src/environment/repository/interface.repository.ts b/apps/api/src/environment/repository/interface.repository.ts index c4d75e9c..c79ff918 100644 --- a/apps/api/src/environment/repository/interface.repository.ts +++ b/apps/api/src/environment/repository/interface.repository.ts @@ -30,6 +30,15 @@ export interface IEnvironmentRepository { projectId: Project['id'] ): Promise + /** + * Retrieves the default environment of a project. + * @param {Project['id']} projectId - The ID of the project. + * @returns {Promise} - A promise that resolves to the default environment or null if not found. + */ + getDefaultEnvironmentOfProject( + projectId: Project['id'] + ): Promise + /** * Retrieves an environment by project ID and environment ID. * @param {Project['id']} projectId - The ID of the project. diff --git a/apps/api/src/environment/repository/mock.repository.ts b/apps/api/src/environment/repository/mock.repository.ts index 7e2a8d83..7e75f18b 100644 --- a/apps/api/src/environment/repository/mock.repository.ts +++ b/apps/api/src/environment/repository/mock.repository.ts @@ -3,6 +3,20 @@ import { Environment } from '@prisma/client' import { IEnvironmentRepository } from './interface.repository' export class MockEnvironmentRepository implements IEnvironmentRepository { + getDefaultEnvironmentOfProject( + projectId: string + ): Promise<{ + id: string + name: string + description: string + createdAt: Date + updatedAt: Date + isDefault: boolean + lastUpdatedById: string + projectId: string + }> { + throw new Error('Method not implemented.') + } countTotalEnvironmentsInProject(projectId: string): Promise { throw new Error('Method not implemented.') } diff --git a/apps/api/src/environment/service/environment.service.ts b/apps/api/src/environment/service/environment.service.ts index 6d7b3362..eee5e197 100644 --- a/apps/api/src/environment/service/environment.service.ts +++ b/apps/api/src/environment/service/environment.service.ts @@ -42,10 +42,7 @@ export class EnvironmentService { } // Check if the user can manage environments of the project - await this.projectPermissionService.canManageEnvironmentsOfProject( - user, - projectId - ) + await this.projectPermissionService.isProjectMaintainer(user, projectId) // Check if an environment with the same name already exists if ( @@ -80,10 +77,7 @@ export class EnvironmentService { } // Check if the user can manage environments of the project - await this.projectPermissionService.canManageEnvironmentsOfProject( - user, - projectId - ) + await this.projectPermissionService.isProjectMaintainer(user, projectId) // Check if the environment exists const environment = @@ -132,10 +126,7 @@ export class EnvironmentService { } // Check if the user can manage environments of the project - await this.projectPermissionService.canManageEnvironmentsOfProject( - user, - projectId - ) + await this.projectPermissionService.isProjectMaintainer(user, projectId) // Check if the environment exists const environment = @@ -168,12 +159,6 @@ export class EnvironmentService { throw new NotFoundException('Project not found') } - // Check if the user can manage environments of the project - await this.projectPermissionService.canManageEnvironmentsOfProject( - user, - projectId - ) - // Get the environments return this.environmentRepository.getEnvironmentsOfProject( projectId, @@ -217,10 +202,7 @@ export class EnvironmentService { } // Check if the user can manage environments of the project - await this.projectPermissionService.canManageEnvironmentsOfProject( - user, - projectId - ) + await this.projectPermissionService.isProjectMaintainer(user, projectId) // Check if the environment exists const environment = diff --git a/apps/api/src/prisma/migrations/20240102080245_init/migration.sql b/apps/api/src/prisma/migrations/20240107183040_init/migration.sql similarity index 96% rename from apps/api/src/prisma/migrations/20240102080245_init/migration.sql rename to apps/api/src/prisma/migrations/20240107183040_init/migration.sql index 15a6200a..61ccb498 100644 --- a/apps/api/src/prisma/migrations/20240102080245_init/migration.sql +++ b/apps/api/src/prisma/migrations/20240107183040_init/migration.sql @@ -101,6 +101,8 @@ CREATE TABLE "SecretVersion" ( "value" TEXT NOT NULL, "version" INTEGER NOT NULL DEFAULT 1, "secretId" TEXT NOT NULL, + "createdOn" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "createdById" TEXT NOT NULL, CONSTRAINT "SecretVersion_pkey" PRIMARY KEY ("id") ); @@ -180,6 +182,9 @@ ALTER TABLE "ApiKeyScope" ADD CONSTRAINT "ApiKeyScope_projectId_fkey" FOREIGN KE -- AddForeignKey ALTER TABLE "SecretVersion" ADD CONSTRAINT "SecretVersion_secretId_fkey" FOREIGN KEY ("secretId") REFERENCES "Secret"("id") ON DELETE CASCADE ON UPDATE CASCADE; +-- AddForeignKey +ALTER TABLE "SecretVersion" ADD CONSTRAINT "SecretVersion_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + -- AddForeignKey ALTER TABLE "Secret" ADD CONSTRAINT "Secret_lastUpdatedById_fkey" FOREIGN KEY ("lastUpdatedById") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/apps/api/src/prisma/schema.prisma b/apps/api/src/prisma/schema.prisma index 01c6d73c..237c6b7e 100644 --- a/apps/api/src/prisma/schema.prisma +++ b/apps/api/src/prisma/schema.prisma @@ -79,6 +79,7 @@ model User { Secret Secret[] // Stores the secrets the user updated project Project[] // Stores the projects the user updated environments Environment[] // Stores the environments the user updated + SecretVersion SecretVersion[] } model Subscription { @@ -158,6 +159,10 @@ model SecretVersion { secretId String secret Secret @relation(fields: [secretId], references: [id], onDelete: Cascade, onUpdate: Cascade) + + createdOn DateTime @default(now()) + createdBy User @relation(fields: [createdById], references: [id], onDelete: Cascade, onUpdate: Cascade) + createdById String } model Secret { diff --git a/apps/api/src/project/controller/project.controller.spec.ts b/apps/api/src/project/controller/project.controller.spec.ts index 67aa0a32..9cba939f 100644 --- a/apps/api/src/project/controller/project.controller.spec.ts +++ b/apps/api/src/project/controller/project.controller.spec.ts @@ -11,6 +11,8 @@ import { MAIL_SERVICE } from '../../mail/services/interface.service' import { MockMailService } from '../../mail/services/mock.service' import { JwtService } from '@nestjs/jwt' import { ProjectPermission } from '../misc/project.permission' +import { SECRET_REPOSITORY } from '../../secret/repository/interface.repository' +import { MockSecretRepository } from '../../secret/repository/mock.repository' describe('ProjectController', () => { let controller: ProjectController @@ -27,6 +29,7 @@ describe('ProjectController', () => { }, { provide: USER_REPOSITORY, useClass: MockUserRepository }, { provide: MAIL_SERVICE, useClass: MockMailService }, + { provide: SECRET_REPOSITORY, useClass: MockSecretRepository }, JwtService, ProjectPermission ] diff --git a/apps/api/src/project/misc/project.permission.ts b/apps/api/src/project/misc/project.permission.ts index 3eba0d99..76dc6416 100644 --- a/apps/api/src/project/misc/project.permission.ts +++ b/apps/api/src/project/misc/project.permission.ts @@ -9,7 +9,7 @@ export class ProjectPermission { @Inject(PROJECT_REPOSITORY) private readonly repository: ProjectRepository ) {} - async canUpdateProject(user: User, projectId: Project['id']): Promise { + async isProjectAdmin(user: User, projectId: Project['id']): Promise { // Admins can do everything if (user.isAdmin) Promise.resolve() @@ -21,44 +21,15 @@ export class ProjectPermission { if (!membership) { throw new UnauthorizedException('User is not a member of the project') } - if (membership.role === ProjectRole.VIEWER) { - throw new UnauthorizedException('OWNER or MAINTAINER role is required') + if (membership.role !== ProjectRole.OWNER) { + throw new UnauthorizedException('Atleast OWNER role is required') } } - async canDeleteProject(user: User, projectId: Project['id']): Promise { - await this.isProjectAdmin(user, projectId) - } - - async canAddUserToProject( - user: User, - projectId: Project['id'] - ): Promise { - await this.isProjectAdmin(user, projectId) - } - - async canRemoveUserFromProject( - user: User, - projectId: Project['id'] - ): Promise { - await this.isProjectAdmin(user, projectId) - } - - async canUpdateUserPermissionsOfProject( - user: User, - projectId: Project['id'] - ): Promise { - await this.isProjectAdmin(user, projectId) - } - - async canManageEnvironmentsOfProject( + async isProjectMaintainer( user: User, projectId: Project['id'] ): Promise { - await this.isProjectMaintainer(user, projectId) - } - - async isProjectAdmin(user: User, projectId: Project['id']): Promise { // Admins can do everything if (user.isAdmin) Promise.resolve() @@ -70,15 +41,15 @@ export class ProjectPermission { if (!membership) { throw new UnauthorizedException('User is not a member of the project') } - if (membership.role !== ProjectRole.OWNER) { - throw new UnauthorizedException('Atleast OWNER role is required') + if ( + membership.role !== ProjectRole.OWNER && + membership.role !== ProjectRole.MAINTAINER + ) { + throw new UnauthorizedException('Atleast MAINTAINER role is required') } } - async isProjectMaintainer( - user: User, - projectId: Project['id'] - ): Promise { + async isProjectMember(user: User, projectId: Project['id']): Promise { // Admins can do everything if (user.isAdmin) Promise.resolve() @@ -90,12 +61,6 @@ export class ProjectPermission { if (!membership) { throw new UnauthorizedException('User is not a member of the project') } - if ( - membership.role !== ProjectRole.OWNER && - membership.role !== ProjectRole.MAINTAINER - ) { - throw new UnauthorizedException('Atleast MAINTAINER role is required') - } } private async resolveProjectsOfUser( diff --git a/apps/api/src/project/project.module.ts b/apps/api/src/project/project.module.ts index 6d431254..6de23038 100644 --- a/apps/api/src/project/project.module.ts +++ b/apps/api/src/project/project.module.ts @@ -6,6 +6,7 @@ import { PROJECT_REPOSITORY } from './repository/interface.repository' import { ProjectPermission } from './misc/project.permission' import { EnvironmentModule } from '../environment/environment.module' import { UserModule } from '../user/user.module' +import { SecretModule } from '../secret/secret.module' @Module({ providers: [ @@ -18,6 +19,6 @@ import { UserModule } from '../user/user.module' ], controllers: [ProjectController], exports: [ProjectPermission], - imports: [UserModule, EnvironmentModule] + imports: [UserModule, EnvironmentModule, SecretModule] }) export class ProjectModule {} diff --git a/apps/api/src/project/project.types.ts b/apps/api/src/project/project.types.ts new file mode 100644 index 00000000..a6c14874 --- /dev/null +++ b/apps/api/src/project/project.types.ts @@ -0,0 +1,30 @@ +import { + Project, + ProjectMember, + ProjectRole, + Secret, + User +} from '@prisma/client' + +export interface ProjectWithMembers extends Project { + members: ProjectMember[] +} + +export interface ProjectWithUserRole extends Project { + role: ProjectMember['role'] +} + +export interface ProjectWithSecrets extends Project { + secrets: Secret[] +} + +export interface ProjectWithMembersAndSecrets + extends ProjectWithMembers, + ProjectWithSecrets {} + +export interface ProjectMembership { + id: string + role: ProjectRole + user: User + invitationAccepted: boolean +} diff --git a/apps/api/src/project/repository/interface.repository.ts b/apps/api/src/project/repository/interface.repository.ts index b1cc001c..933c7341 100644 --- a/apps/api/src/project/repository/interface.repository.ts +++ b/apps/api/src/project/repository/interface.repository.ts @@ -1,4 +1,9 @@ import { Project, ProjectMember, ProjectRole, User } from '@prisma/client' +import { + ProjectWithMembersAndSecrets, + ProjectWithSecrets, + ProjectWithUserRole +} from '../project.types' export const PROJECT_REPOSITORY = 'PROJECT_REPOSITORY' @@ -113,19 +118,19 @@ export interface IProjectRepository { * Retrieves a project by user ID and project ID. * @param {User['id']} userId - The ID of the user. * @param {Project['id']} projectId - The ID of the project. - * @returns {Promise} - A promise that resolves to the project or null if not found. + * @returns {Promise} - A promise that resolves to the project or null if not found. */ getProjectByUserIdAndId( userId: User['id'], projectId: Project['id'] - ): Promise + ): Promise /** * Retrieves a project by ID. * @param {Project['id']} projectId - The ID of the project. - * @returns {Promise} - A promise that resolves to the project or null if not found. + * @returns {Promise} - A promise that resolves to the project or null if not found. */ - getProjectById(projectId: Project['id']): Promise + getProjectById(projectId: Project['id']): Promise /** * Retrieves projects of a user with optional pagination, sorting, and search. @@ -135,7 +140,7 @@ export interface IProjectRepository { * @param {string} sort - The field to sort by. * @param {string} order - The sort order ('asc' or 'desc'). * @param {string} search - The search term for project names or descriptions. - * @returns {Promise>} - A promise that resolves to an array of projects and permission. + * @returns {Promise>} - A promise that resolves to an array of projects and permission. */ getProjectsOfUser( userId: User['id'], @@ -144,7 +149,7 @@ export interface IProjectRepository { sort: string, order: string, search: string - ): Promise> + ): Promise> /** * Retrieves projects with optional pagination, sorting, and search. diff --git a/apps/api/src/project/repository/mock.repository.ts b/apps/api/src/project/repository/mock.repository.ts index c74295f7..5d910263 100644 --- a/apps/api/src/project/repository/mock.repository.ts +++ b/apps/api/src/project/repository/mock.repository.ts @@ -7,8 +7,21 @@ import { User } from '@prisma/client' import { IProjectRepository } from './interface.repository' +import { + ProjectWithMembersAndSecrets, + ProjectWithSecrets +} from '../project.types' export class MockProjectRepository implements IProjectRepository { + getProjectByUserIdAndId( + userId: string, + projectId: string + ): Promise { + throw new Error('Method not implemented.') + } + getProjectById(projectId: string): Promise { + throw new Error('Method not implemented.') + } deleteMembership(projectId: string, userId: string): Promise { throw new Error('Method not implemented.') } @@ -92,14 +105,6 @@ export class MockProjectRepository implements IProjectRepository { throw new Error('Method not implemented.') } - getProjectByUserIdAndId(userId: string, projectId: string): Promise { - throw new Error('Method not implemented.') - } - - getProjectById(projectId: string): Promise { - throw new Error('Method not implemented.') - } - getProjectsOfUser( userId: User['id'], page: number, diff --git a/apps/api/src/project/repository/project.repository.ts b/apps/api/src/project/repository/project.repository.ts index 6ef1626b..6f04b318 100644 --- a/apps/api/src/project/repository/project.repository.ts +++ b/apps/api/src/project/repository/project.repository.ts @@ -2,6 +2,7 @@ import { Project, ProjectMember, ProjectRole, User } from '@prisma/client' import { PrismaService } from '../../prisma/prisma.service' import { IProjectRepository } from './interface.repository' import { Injectable } from '@nestjs/common' +import { ProjectMembership, ProjectWithUserRole } from '../project.types' @Injectable() export class ProjectRepository implements IProjectRepository { @@ -183,10 +184,18 @@ export class ProjectRepository implements IProjectRepository { }, include: { members: { - select: { - user: true, - invitationAccepted: true, - role: true + include: { + user: true + } + }, + secrets: { + include: { + versions: { + orderBy: { + version: 'desc' + }, + take: 1 + } } } } @@ -205,6 +214,16 @@ export class ProjectRepository implements IProjectRepository { invitationAccepted: true, role: true } + }, + secrets: { + include: { + versions: { + orderBy: { + version: 'desc' + }, + take: 1 + } + } } } }) @@ -217,7 +236,7 @@ export class ProjectRepository implements IProjectRepository { sort: string, order: string, search: string - ): Promise> { + ): Promise> { const memberships = await this.prisma.projectMember.findMany({ skip: (page - 1) * limit, orderBy: { @@ -299,14 +318,7 @@ export class ProjectRepository implements IProjectRepository { sort: string, order: string, search: string - ): Promise< - { - id: string - role: ProjectRole - user: User - invitationAccepted: boolean - }[] - > { + ): Promise { return await this.prisma.projectMember.findMany({ skip: (page - 1) * limit, take: limit, diff --git a/apps/api/src/project/service/project.service.spec.ts b/apps/api/src/project/service/project.service.spec.ts index 537ff262..d1e34291 100644 --- a/apps/api/src/project/service/project.service.spec.ts +++ b/apps/api/src/project/service/project.service.spec.ts @@ -10,6 +10,8 @@ import { MockMailService } from '../../mail/services/mock.service' import { MAIL_SERVICE } from '../../mail/services/interface.service' import { JwtService } from '@nestjs/jwt' import { ProjectPermission } from '../misc/project.permission' +import { SECRET_REPOSITORY } from '../../secret/repository/interface.repository' +import { MockSecretRepository } from '../../secret/repository/mock.repository' describe('ProjectService', () => { let service: ProjectService @@ -25,6 +27,7 @@ describe('ProjectService', () => { }, { provide: USER_REPOSITORY, useClass: MockUserRepository }, { provide: MAIL_SERVICE, useClass: MockMailService }, + { provide: SECRET_REPOSITORY, useClass: MockSecretRepository }, ProjectPermission, JwtService ] diff --git a/apps/api/src/project/service/project.service.ts b/apps/api/src/project/service/project.service.ts index 9bcb93c7..369213ca 100644 --- a/apps/api/src/project/service/project.service.ts +++ b/apps/api/src/project/service/project.service.ts @@ -5,7 +5,7 @@ import { Logger, NotFoundException } from '@nestjs/common' -import { Project, ProjectRole, User } from '@prisma/client' +import { Project, ProjectRole, SecretVersion, User } from '@prisma/client' import { CreateProject, ProjectMemberDTO @@ -32,6 +32,14 @@ import { CurrentUser } from '../../decorators/user.decorator' import { JwtService } from '@nestjs/jwt' import { createKeyPair } from '../../common/create-key-pair' import { excludeFields } from '../../common/exclude-fields' +import { + ProjectWithMembersAndSecrets, + ProjectWithSecrets +} from '../project.types' +import { + ISecretRepository, + SECRET_REPOSITORY +} from '../../secret/repository/interface.repository' @Injectable() export class ProjectService { @@ -43,6 +51,8 @@ export class ProjectService { @Inject(ENVIRONMENT_REPOSITORY) private readonly environmentRepository: IEnvironmentRepository, @Inject(USER_REPOSITORY) private readonly userRepository: IUserRepository, + @Inject(SECRET_REPOSITORY) + private readonly secretRepository: ISecretRepository, @Inject(MAIL_SERVICE) private readonly resendService: IMailService, private readonly jwt: JwtService, private readonly permission: ProjectPermission @@ -127,10 +137,10 @@ export class ProjectService { projectId: Project['id'], dto: UpdateProject ): Promise { - const project = await this.projectRepository.getProjectByUserIdAndId( + const project = (await this.projectRepository.getProjectByUserIdAndId( user.id, projectId - ) + )) as ProjectWithSecrets // Check if the project exists or not if (!project) @@ -146,7 +156,7 @@ export class ProjectService { ) // Check if the user has the permission to update the project - this.permission.canUpdateProject(user, projectId) + this.permission.isProjectMaintainer(user, projectId) const data: Partial = { name: dto.name, @@ -174,7 +184,23 @@ export class ProjectService { // Check if the private key should be stored data.privateKey = dto.storePrivateKey ? privateKey : null - // TODO: Re-hash all secrets + // Re-hash all secrets + for (const secret of project.secrets) { + const versions = await this.secretRepository.getAllVersionsOfSecret( + secret.id + ) + + const updatedVersions: Partial[] = [] + for (const version of versions) { + updatedVersions.push({ + id: version.id, + value: version.value, + version: version.version + 1 + }) + } + + await this.secretRepository.updateVersions(secret.id, updatedVersions) + } } // Update and return the project @@ -202,7 +228,7 @@ export class ProjectService { throw new NotFoundException(`Project with id ${projectId} not found`) // Check if the user has the permission to delete the project - this.permission.canDeleteProject(user, projectId) + this.permission.isProjectAdmin(user, projectId) // Delete the project await this.projectRepository.deleteProject(projectId) @@ -224,7 +250,7 @@ export class ProjectService { throw new NotFoundException(`Project with id ${projectId} not found`) // Check if the user has the permission to add users to the project - this.permission.canAddUserToProject(user, projectId) + this.permission.isProjectAdmin(user, projectId) // Add users to the project if any if (members && members.length > 0) { @@ -247,7 +273,7 @@ export class ProjectService { throw new NotFoundException(`Project with id ${projectId} not found`) // Check if the user has the permission to remove users from the project - this.permission.canRemoveUserFromProject(user, projectId) + this.permission.isProjectAdmin(user, projectId) // Check if the user is already a member of the project if ( @@ -290,7 +316,7 @@ export class ProjectService { throw new NotFoundException(`Project with id ${projectId} not found`) // Check if the user has the permission to update the role of the user - this.permission.canUpdateUserPermissionsOfProject(user, projectId) + this.permission.isProjectAdmin(user, projectId) // Check if the member in concern is a part of the project or not if ( @@ -324,9 +350,6 @@ export class ProjectService { if (!project) throw new NotFoundException(`Project with id ${projectId} not found`) - // Check if the user has maintainer or owner role in the project - this.permission.canUpdateUserPermissionsOfProject(user, projectId) - return await this.projectRepository.memberExistsInProject( projectId, otherUserId @@ -359,7 +382,7 @@ export class ProjectService { inviteeId: User['id'] ): Promise { // Check if the user has permission to decline the invitation - this.permission.canRemoveUserFromProject(user, projectId) + this.permission.isProjectAdmin(user, projectId) // Check if the user has a pending invitation to the project if (!(await this.projectRepository.invitationPending(projectId, inviteeId))) @@ -398,12 +421,7 @@ export class ProjectService { projectId: Project['id'] ): Promise { // Check if the user is a member of the project - if ( - !(await this.projectRepository.memberExistsInProject(projectId, user.id)) - ) - throw new ConflictException( - `User ${user.name} (${user.id}) is not a member of project ${projectId}` - ) + await this.permission.isProjectMember(user, projectId) // Delete the membership await this.projectRepository.deleteMembership(projectId, user.id) @@ -414,24 +432,17 @@ export class ProjectService { async getProjectByUserAndId( user: User, projectId: Project['id'] - ): Promise { - const project = await this.projectRepository.getProjectByUserIdAndId( + ): Promise { + const project = (await this.projectRepository.getProjectByUserIdAndId( user.id, projectId - ) + )) as ProjectWithMembersAndSecrets // Check if the project exists or not if (!project) throw new NotFoundException(`Project with id ${projectId} not found`) - //@ts-expect-error We know that project.members is not undefined since it is included in the query - const memberCount = project.members.length - - const data = { - ...project, - members: memberCount - } - return data + return project } async getProjectById( diff --git a/apps/api/src/secret/controller/secret.controller.spec.ts b/apps/api/src/secret/controller/secret.controller.spec.ts new file mode 100644 index 00000000..374133ab --- /dev/null +++ b/apps/api/src/secret/controller/secret.controller.spec.ts @@ -0,0 +1,58 @@ +import { Test, TestingModule } from '@nestjs/testing' +import { SecretController } from './secret.controller' +import { PROJECT_REPOSITORY } from '../../project/repository/interface.repository' +import { MockProjectRepository } from '../../project/repository/mock.repository' +import { ENVIRONMENT_REPOSITORY } from '../../environment/repository/interface.repository' +import { MockEnvironmentRepository } from '../../environment/repository/mock.repository' +import { SECRET_REPOSITORY } from '../repository/interface.repository' +import { MockSecretRepository } from '../repository/mock.repository' +import { ProjectPermission } from '../../project/misc/project.permission' +import { ProjectService } from '../../project/service/project.service' +import { USER_REPOSITORY } from '../../user/repository/interface.repository' +import { MockUserRepository } from '../../user/repository/mock.repository' +import { MAIL_SERVICE } from '../../mail/services/interface.service' +import { MockMailService } from '../../mail/services/mock.service' +import { JwtService } from '@nestjs/jwt' +import { SecretService } from '../service/secret.service' + +describe('SecretController', () => { + let controller: SecretController + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [SecretController], + providers: [ + { + provide: PROJECT_REPOSITORY, + useClass: MockProjectRepository + }, + { + provide: ENVIRONMENT_REPOSITORY, + useClass: MockEnvironmentRepository + }, + { + provide: SECRET_REPOSITORY, + useClass: MockSecretRepository + }, + { + provide: USER_REPOSITORY, + useClass: MockUserRepository + }, + { + provide: MAIL_SERVICE, + useClass: MockMailService + }, + ProjectPermission, + ProjectService, + JwtService, + SecretService + ] + }).compile() + + controller = module.get(SecretController) + }) + + it('should be defined', () => { + expect(controller).toBeDefined() + }) +}) diff --git a/apps/api/src/secret/controller/secret.controller.ts b/apps/api/src/secret/controller/secret.controller.ts new file mode 100644 index 00000000..643933bf --- /dev/null +++ b/apps/api/src/secret/controller/secret.controller.ts @@ -0,0 +1,149 @@ +import { + Body, + Controller, + Delete, + Get, + Param, + Post, + Put, + Query, + UseGuards +} from '@nestjs/common' +import { SecretService } from '../service/secret.service' +import { CurrentUser } from '../../decorators/user.decorator' +import { User } from '@prisma/client' +import { CreateSecret } from '../dto/create.secret/create.secret' +import { UpdateSecret } from '../dto/update.secret/update.secret' +import { AdminGuard } from '../../auth/guard/admin.guard' + +@Controller('secret') +export class SecretController { + constructor(private readonly secretService: SecretService) {} + + @Post(':projectId') + async createSecret( + @CurrentUser() user: User, + @Param('projectId') projectId: string, + @Body() dto: CreateSecret + ) { + return await this.secretService.createSecret(user, dto, projectId) + } + + @Put(':projectId/:secretId') + async updateSecret( + @CurrentUser() user: User, + @Param('projectId') projectId: string, + @Param('secretId') secretId: string, + @Body() dto: UpdateSecret + ) { + return await this.secretService.updateSecret(user, secretId, dto, projectId) + } + + @Put(':projectId/:secretId/environment/:environmentId') + async updateSecretEnvironment( + @CurrentUser() user: User, + @Param('projectId') projectId: string, + @Param('secretId') secretId: string, + @Param('environmentId') environmentId: string + ) { + return await this.secretService.updateSecretEnvironment( + user, + secretId, + environmentId, + projectId + ) + } + + @Put(':projectId/:secretId/rollback/:rollbackVersion') + async rollbackSecret( + @CurrentUser() user: User, + @Param('projectId') projectId: string, + @Param('secretId') secretId: string, + @Param('rollbackVersion') rollbackVersion: number + ) { + return await this.secretService.rollbackSecret( + user, + secretId, + rollbackVersion, + projectId + ) + } + + @Delete(':projectId/:secretId') + async deleteSecret( + @CurrentUser() user: User, + @Param('projectId') projectId: string, + @Param('secretId') secretId: string + ) { + return await this.secretService.deleteSecret(user, secretId, projectId) + } + + @Get(':projectId/:secretId') + async getSecret( + @CurrentUser() user: User, + @Param('projectId') projectId: string, + @Param('secretId') secretId: string, + @Query('decryptValue') decryptValue: boolean = false + ) { + return await this.secretService.getSecret( + user, + secretId, + projectId, + decryptValue + ) + } + + @Get(':projectId/:secretId/versions') + async getAllVersionsOfSecret( + @CurrentUser() user: User, + @Param('projectId') projectId: string, + @Param('secretId') secretId: string + ) { + return await this.secretService.getAllVersionsOfSecret( + user, + secretId, + projectId + ) + } + + @Get(':projectId') + async getAllSecretsOfProject( + @CurrentUser() user: User, + @Param('projectId') projectId: string, + @Query('page') page: number = 1, + @Query('limit') limit: number = 10, + @Query('sort') sort: string = 'name', + @Query('order') order: string = 'asc', + @Query('search') search: string = '', + @Query('decryptValue') decryptValue: boolean = false + ) { + return await this.secretService.getAllSecretsOfProject( + user, + projectId, + decryptValue, + page, + limit, + sort, + order, + search + ) + } + + @UseGuards(AdminGuard) + @Get() + async getAllSecrets( + @Query('page') page: number = 1, + @Query('limit') limit: number = 10, + @Query('sort') sort: string = 'name', + @Query('order') order: string = 'asc', + @Query('search') search: string = '' + ) { + return await this.secretService.getAllSecrets( + page, + limit, + sort, + order, + search + ) + } +} diff --git a/apps/api/src/secret/dto/create.secret/create.secret.spec.ts b/apps/api/src/secret/dto/create.secret/create.secret.spec.ts new file mode 100644 index 00000000..e90e3cec --- /dev/null +++ b/apps/api/src/secret/dto/create.secret/create.secret.spec.ts @@ -0,0 +1,7 @@ +import { CreateSecret } from './create.secret'; + +describe('CreateSecret', () => { + it('should be defined', () => { + expect(new CreateSecret()).toBeDefined(); + }); +}); diff --git a/apps/api/src/secret/dto/create.secret/create.secret.ts b/apps/api/src/secret/dto/create.secret/create.secret.ts new file mode 100644 index 00000000..ea2eec2c --- /dev/null +++ b/apps/api/src/secret/dto/create.secret/create.secret.ts @@ -0,0 +1,13 @@ +import { IsNumber, IsOptional, IsString } from 'class-validator' + +export class CreateSecret { + @IsString() + name: string + + @IsString() + value: string + + @IsNumber() + @IsOptional() + environmentId: string +} diff --git a/apps/api/src/secret/dto/update.secret/update.secret.spec.ts b/apps/api/src/secret/dto/update.secret/update.secret.spec.ts new file mode 100644 index 00000000..21548bd5 --- /dev/null +++ b/apps/api/src/secret/dto/update.secret/update.secret.spec.ts @@ -0,0 +1,7 @@ +import { UpdateSecret } from './update.secret'; + +describe('UpdateSecret', () => { + it('should be defined', () => { + expect(new UpdateSecret()).toBeDefined(); + }); +}); diff --git a/apps/api/src/secret/dto/update.secret/update.secret.ts b/apps/api/src/secret/dto/update.secret/update.secret.ts new file mode 100644 index 00000000..31cfd13e --- /dev/null +++ b/apps/api/src/secret/dto/update.secret/update.secret.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/swagger' +import { CreateSecret } from '../create.secret/create.secret' + +export class UpdateSecret extends PartialType(CreateSecret) {} diff --git a/apps/api/src/secret/repository/interface.repository.ts b/apps/api/src/secret/repository/interface.repository.ts new file mode 100644 index 00000000..50c2d53a --- /dev/null +++ b/apps/api/src/secret/repository/interface.repository.ts @@ -0,0 +1,70 @@ +import { + Environment, + Project, + Secret, + SecretVersion, + User +} from '@prisma/client' + +export const SECRET_REPOSITORY = 'SECRET_REPOSITORY' + +export interface ISecretRepository { + secretExists( + secretName: Secret['name'], + environmentId: Environment['id'], + projectId: Project['id'], + userId: User['id'] + ): Promise + + createSecret( + secret: Partial, + projectId: Project['id'], + environmentId: Environment['id'], + userId: User['id'] + ): Promise + + updateSecret( + secretId: Secret['id'], + secret: Partial, + userId: User['id'] + ): Promise + + updateVersions( + secretId: Secret['id'], + versions: Partial[] + ): Promise + + updateSecretEnvironment( + secretId: Secret['id'], + environmentId: Environment['id'], + userId: User['id'] + ): Promise + + rollbackSecret( + secretId: Secret['id'], + rollbackVersion: SecretVersion['version'] + ): Promise + + deleteSecret(secretId: Secret['id'], userId: User['id']): Promise + + getSecret(secretId: Secret['id'], projectId: Project['id']): Promise + + getAllVersionsOfSecret(secretId: string): Promise + + getAllSecretsOfProject( + projectId: Project['id'], + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise + + getAllSecrets( + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise +} diff --git a/apps/api/src/secret/repository/mock.repository.ts b/apps/api/src/secret/repository/mock.repository.ts new file mode 100644 index 00000000..24150d54 --- /dev/null +++ b/apps/api/src/secret/repository/mock.repository.ts @@ -0,0 +1,167 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { ISecretRepository } from './interface.repository' + +export class MockSecretRepository implements ISecretRepository { + secretExists( + secretName: string, + environmentId: string, + projectId: string, + userId: string + ): Promise { + throw new Error('Method not implemented.') + } + createSecret( + secret: Partial<{ + id: string + name: string + createdAt: Date + updatedAt: Date + rotateAt: Date + lastUpdatedById: string + projectId: string + environmentId: string + }>, + projectId: string, + environmentId: string, + userId: string + ): Promise<{ + id: string + name: string + createdAt: Date + updatedAt: Date + rotateAt: Date + lastUpdatedById: string + projectId: string + environmentId: string + }> { + throw new Error('Method not implemented.') + } + updateSecret( + secretId: string, + secret: Partial<{ + id: string + name: string + createdAt: Date + updatedAt: Date + rotateAt: Date + lastUpdatedById: string + projectId: string + environmentId: string + }>, + userId: string + ): Promise<{ + id: string + name: string + createdAt: Date + updatedAt: Date + rotateAt: Date + lastUpdatedById: string + projectId: string + environmentId: string + }> { + throw new Error('Method not implemented.') + } + updateVersions( + secretId: string, + versions: Partial<{ + id: string + value: string + version: number + secretId: string + createdOn: Date + createdById: string + }>[] + ): Promise { + throw new Error('Method not implemented.') + } + updateSecretEnvironment( + secretId: string, + environmentId: string, + userId: string + ): Promise<{ + id: string + name: string + createdAt: Date + updatedAt: Date + rotateAt: Date + lastUpdatedById: string + projectId: string + environmentId: string + }> { + throw new Error('Method not implemented.') + } + rollbackSecret(secretId: string, rollbackVersion: number): Promise { + throw new Error('Method not implemented.') + } + deleteSecret(secretId: string, userId: string): Promise { + throw new Error('Method not implemented.') + } + getSecret( + secretId: string, + projectId: string + ): Promise<{ + id: string + name: string + createdAt: Date + updatedAt: Date + rotateAt: Date + lastUpdatedById: string + projectId: string + environmentId: string + }> { + throw new Error('Method not implemented.') + } + getAllVersionsOfSecret(secretId: string): Promise< + { + id: string + value: string + version: number + secretId: string + createdOn: Date + createdById: string + }[] + > { + throw new Error('Method not implemented.') + } + getAllSecretsOfProject( + projectId: string, + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise< + { + id: string + name: string + createdAt: Date + updatedAt: Date + rotateAt: Date + lastUpdatedById: string + projectId: string + environmentId: string + }[] + > { + throw new Error('Method not implemented.') + } + getAllSecrets( + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise< + { + id: string + name: string + createdAt: Date + updatedAt: Date + rotateAt: Date + lastUpdatedById: string + projectId: string + environmentId: string + }[] + > { + throw new Error('Method not implemented.') + } +} diff --git a/apps/api/src/secret/repository/secret.repository.ts b/apps/api/src/secret/repository/secret.repository.ts new file mode 100644 index 00000000..17074589 --- /dev/null +++ b/apps/api/src/secret/repository/secret.repository.ts @@ -0,0 +1,272 @@ +import { Injectable } from '@nestjs/common' +import { PrismaService } from '../../prisma/prisma.service' +import { ISecretRepository } from './interface.repository' +import { + Environment, + Project, + Secret, + SecretVersion, + User +} from '@prisma/client' +import { SecretWithValue } from '../secret.types' + +@Injectable() +export class SecretRepository implements ISecretRepository { + constructor(private readonly prisma: PrismaService) {} + + async secretExists( + secretName: Secret['name'], + environmentId: Environment['id'], + projectId: Project['id'], + userId: User['id'] + ): Promise { + return ( + (await this.prisma.secret.count({ + where: { + name: secretName, + environment: { + id: environmentId + }, + projectId, + project: { + members: { + some: { + userId + } + } + } + } + })) > 0 + ) + } + + async createSecret( + secret: Partial, // Value comes in hashed + projectId: Project['id'], + environmentId: Environment['id'], + userId: User['id'] + ): Promise { + return await this.prisma.secret.create({ + data: { + name: secret.name, + rotateAt: secret.rotateAt, + versions: { + create: { + value: secret.value, + version: 1, + createdById: userId + } + }, + environmentId, + projectId, + lastUpdatedById: userId + } + }) + } + + async updateSecret( + secretId: Secret['id'], + secret: Partial, // Value comes in hashed + userId: User['id'] + ): Promise { + if (secret.value) { + const previousVersion = await this.prisma.secretVersion.findFirst({ + where: { + secretId + }, + select: { + version: true + }, + orderBy: { + version: 'desc' + }, + take: 1 + }) + + return await this.prisma.secret.update({ + where: { + id: secretId + }, + data: { + name: secret.name, + rotateAt: secret.rotateAt, + lastUpdatedById: userId, + versions: { + create: { + value: secret.value, + version: previousVersion.version + 1, + createdById: userId + } + } + } + }) + } + + return await this.prisma.secret.update({ + where: { + id: secretId + }, + data: { + name: secret.name, + rotateAt: secret.rotateAt, + lastUpdatedById: userId + } + }) + } + + async updateVersions( + secretId: Secret['id'], + versions: Partial[] // Value comes in hashed + ): Promise { + await this.prisma.secret.update({ + where: { + id: secretId + }, + data: { + versions: { + updateMany: { + where: { + id: { + in: versions.map((version) => version.id) + } + }, + data: versions.map((version) => ({ + value: version.value + })) + } + } + } + }) + } + + async updateSecretEnvironment( + secretId: Secret['id'], + environmentId: Environment['id'] + ): Promise { + return await this.prisma.secret.update({ + where: { + id: secretId + }, + data: { + environmentId + } + }) + } + + async rollbackSecret( + secretId: Secret['id'], + rollbackVersion: SecretVersion['version'] + ): Promise { + await this.prisma.secretVersion.deleteMany({ + where: { + secretId, + version: { + gt: rollbackVersion + } + } + }) + } + + async deleteSecret(secretId: Secret['id']): Promise { + await this.prisma.secret.delete({ + where: { + id: secretId + } + }) + return Promise.resolve() + } + + async getSecret( + secretId: Secret['id'], + projectId: Project['id'] + ): Promise { + return await this.prisma.secret.findUnique({ + where: { + id: secretId, + projectId + }, + include: { + versions: { + orderBy: { + version: 'desc' + }, + take: 1 + }, + lastUpdatedBy: true, + environment: true + } + }) + } + + async getAllVersionsOfSecret(secretId: string): Promise { + return await this.prisma.secretVersion.findMany({ + where: { + secretId + } + }) + } + + async getAllSecretsOfProject( + projectId: Project['id'], + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise { + return await this.prisma.secret.findMany({ + where: { + projectId, + name: { + contains: search + } + }, + include: { + versions: { + orderBy: { + version: 'desc' + }, + take: 1 + }, + lastUpdatedBy: true, + environment: true + }, + skip: (page - 1) * limit, + take: limit, + orderBy: { + [sort]: order + } + }) + } + + async getAllSecrets( + page: number, + limit: number, + sort: string, + order: string, + search: string + ): Promise { + return await this.prisma.secret.findMany({ + where: { + name: { + contains: search + } + }, + include: { + versions: { + orderBy: { + version: 'desc' + }, + take: 1 + }, + lastUpdatedBy: true, + environment: true + }, + skip: (page - 1) * limit, + take: limit, + orderBy: { + [sort]: order + } + }) + } +} diff --git a/apps/api/src/secret/secret.module.ts b/apps/api/src/secret/secret.module.ts new file mode 100644 index 00000000..8c3ed38c --- /dev/null +++ b/apps/api/src/secret/secret.module.ts @@ -0,0 +1,36 @@ +import { Module } from '@nestjs/common' +import { SecretController } from './controller/secret.controller' +import { SecretService } from './service/secret.service' +import { SECRET_REPOSITORY } from './repository/interface.repository' +import { SecretRepository } from './repository/secret.repository' +import { PROJECT_REPOSITORY } from '../project/repository/interface.repository' +import { ProjectPermission } from '../project/misc/project.permission' +import { ENVIRONMENT_REPOSITORY } from '../environment/repository/interface.repository' +import { EnvironmentRepository } from '../environment/repository/environment.repository' + +@Module({ + controllers: [SecretController], + providers: [ + SecretService, + { + provide: SECRET_REPOSITORY, + useClass: SecretRepository + }, + { + provide: PROJECT_REPOSITORY, + useClass: SecretRepository + }, + { + provide: ENVIRONMENT_REPOSITORY, + useClass: EnvironmentRepository + }, + ProjectPermission + ], + exports: [ + { + provide: SECRET_REPOSITORY, + useClass: SecretRepository + } + ] +}) +export class SecretModule {} diff --git a/apps/api/src/secret/secret.types.ts b/apps/api/src/secret/secret.types.ts new file mode 100644 index 00000000..a1f05d7f --- /dev/null +++ b/apps/api/src/secret/secret.types.ts @@ -0,0 +1,9 @@ +import { Secret, SecretVersion } from '@prisma/client' + +export interface SecretWithValue extends Secret { + value: string +} + +export interface SecretWithVersion extends Secret { + versions: SecretVersion[] +} diff --git a/apps/api/src/secret/service/secret.service.spec.ts b/apps/api/src/secret/service/secret.service.spec.ts new file mode 100644 index 00000000..e89299e6 --- /dev/null +++ b/apps/api/src/secret/service/secret.service.spec.ts @@ -0,0 +1,56 @@ +import { Test, TestingModule } from '@nestjs/testing' +import { SecretService } from './secret.service' +import { PROJECT_REPOSITORY } from '../../project/repository/interface.repository' +import { MockProjectRepository } from '../../project/repository/mock.repository' +import { ENVIRONMENT_REPOSITORY } from '../../environment/repository/interface.repository' +import { MockEnvironmentRepository } from '../../environment/repository/mock.repository' +import { SECRET_REPOSITORY } from '../repository/interface.repository' +import { MockSecretRepository } from '../repository/mock.repository' +import { ProjectPermission } from '../../project/misc/project.permission' +import { ProjectService } from '../../project/service/project.service' +import { USER_REPOSITORY } from '../../user/repository/interface.repository' +import { MockUserRepository } from '../../user/repository/mock.repository' +import { MAIL_SERVICE } from '../../mail/services/interface.service' +import { MockMailService } from '../../mail/services/mock.service' +import { JwtService } from '@nestjs/jwt' + +describe('SecretService', () => { + let service: SecretService + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + { + provide: PROJECT_REPOSITORY, + useClass: MockProjectRepository + }, + { + provide: ENVIRONMENT_REPOSITORY, + useClass: MockEnvironmentRepository + }, + { + provide: SECRET_REPOSITORY, + useClass: MockSecretRepository + }, + { + provide: USER_REPOSITORY, + useClass: MockUserRepository + }, + { + provide: MAIL_SERVICE, + useClass: MockMailService + }, + ProjectPermission, + ProjectService, + JwtService, + SecretService + ] + }).compile() + + service = module.get(SecretService) + }) + + it('should be defined', () => { + expect(service).toBeDefined() + }) +}) diff --git a/apps/api/src/secret/service/secret.service.ts b/apps/api/src/secret/service/secret.service.ts new file mode 100644 index 00000000..ac92cda6 --- /dev/null +++ b/apps/api/src/secret/service/secret.service.ts @@ -0,0 +1,432 @@ +import { + BadRequestException, + ConflictException, + Inject, + Injectable, + NotFoundException +} from '@nestjs/common' +import { + IProjectRepository, + PROJECT_REPOSITORY +} from '../../project/repository/interface.repository' +import { + ISecretRepository, + SECRET_REPOSITORY +} from '../repository/interface.repository' +import { + Environment, + Project, + Secret, + SecretVersion, + User +} from '@prisma/client' +import { CreateSecret } from '../dto/create.secret/create.secret' +import { ProjectPermission } from '../../project/misc/project.permission' +import { + ENVIRONMENT_REPOSITORY, + IEnvironmentRepository +} from '../../environment/repository/interface.repository' +import { UpdateSecret } from '../dto/update.secret/update.secret' +import { decrypt } from '../../common/decrypt' +import { SecretWithVersion } from '../secret.types' + +@Injectable() +export class SecretService { + constructor( + @Inject(PROJECT_REPOSITORY) + private readonly projectRepository: IProjectRepository, + @Inject(SECRET_REPOSITORY) + private readonly secretReposiotory: ISecretRepository, + @Inject(ENVIRONMENT_REPOSITORY) + private readonly environmentRepository: IEnvironmentRepository, + private readonly projectPermission: ProjectPermission + ) {} + + private async secretExists( + user: User, + secretName: Secret['name'], + environmentId: Environment['name'], + projectId: Project['id'] + ) { + return await this.secretReposiotory.secretExists( + user.id, + secretName, + environmentId, + projectId + ) + } + + async createSecret(user: User, dto: CreateSecret, projectId: Project['id']) { + const environmentId = dto.environmentId + // Fetch the project + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + if (!project) { + throw new NotFoundException(`Project not found: ${projectId}`) + } + + // Check if the project can create secrets in the project + await this.projectPermission.isProjectMaintainer(user, projectId) + + // Check if the environment exists + let environment: Environment | null = null + if (environmentId) { + environment = + await this.environmentRepository.getEnvironmentByProjectIdAndId( + projectId, + environmentId + ) + if (!environment) { + throw new NotFoundException( + `Environment not found: ${environmentId} in project ${projectId}` + ) + } + } + if (!environment) { + environment = + await this.environmentRepository.getDefaultEnvironmentOfProject( + projectId + ) + } + + // If any default environment was not found, throw an error + if (!environment) { + throw new NotFoundException( + `No default environment found for project: ${projectId}` + ) + } + + // Check if the secret already exists in the environment + if (await this.secretExists(user, dto.name, environment.id, projectId)) { + throw new ConflictException( + `Secret already exists: ${dto.name} in environment ${environment.name} in project ${projectId}` + ) + } + + // Create the secret + return await this.secretReposiotory.createSecret( + dto, + projectId, + environment.id, + user.id + ) + } + + async updateSecret( + user: User, + secretId: Secret['id'], + dto: UpdateSecret, + projectId: Project['id'] + ) { + // Fetch the project + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + if (!project) { + throw new NotFoundException(`Project not found: ${projectId}`) + } + + // Check if the project can create secrets in the project + await this.projectPermission.isProjectMaintainer(user, projectId) + + // Check if the secret exists + const secret = await this.secretReposiotory.getSecret(secretId, projectId) + if (!secret) { + throw new NotFoundException(`Secret not found: ${secretId}`) + } + + // Check if the secret already exists in the environment + if ( + dto.name && + (await this.secretExists( + user, + dto.name, + secret.environmentId, + projectId + )) && + secret.name !== dto.name + ) { + throw new ConflictException( + `Secret already exists: ${dto.name} in environment ${secret.environmentId} in project ${projectId}` + ) + } + + // Update the secret + return await this.secretReposiotory.updateSecret(secretId, dto, user.id) + } + + async updateSecretEnvironment( + user: User, + secretId: Secret['id'], + environmentId: Environment['id'], + projectId: Project['id'] + ) { + // Fetch the project + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + if (!project) { + throw new NotFoundException(`Project not found: ${projectId}`) + } + + // Check if the project can create secrets in the project + await this.projectPermission.isProjectMaintainer(user, projectId) + + // Check if the secret exists + const secret = await this.secretReposiotory.getSecret(secretId, projectId) + if (!secret) { + throw new NotFoundException(`Secret not found: ${secretId}`) + } + + // Check if the environment exists + const environment = + await this.environmentRepository.getEnvironmentByProjectIdAndId( + projectId, + environmentId + ) + if (!environment) { + throw new NotFoundException( + `Environment not found: ${environmentId} in project ${projectId}` + ) + } + + // Check if the secret already exists in the environment + if ( + (await this.secretExists(user, secret.name, environment.id, projectId)) && + secret.environmentId !== environment.id + ) { + throw new ConflictException( + `Secret already exists: ${secret.name} in environment ${environment.id} in project ${projectId}` + ) + } + + // Update the secret + return await this.secretReposiotory.updateSecretEnvironment( + secretId, + environmentId, + user.id + ) + } + + async rollbackSecret( + user: User, + secretId: Secret['id'], + rollbackVersion: SecretVersion['version'], + projectId: Project['id'] + ) { + // Fetch the project + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + if (!project) { + throw new NotFoundException(`Project not found: ${projectId}`) + } + + // Check if the project can create secrets in the project + await this.projectPermission.isProjectMaintainer(user, projectId) + + // Check if the secret exists + const secret = (await this.secretReposiotory.getSecret( + secretId, + projectId + )) as SecretWithVersion + if (!secret) { + throw new NotFoundException(`Secret not found: ${secretId}`) + } + + // Check if the rollback version is valid + if (rollbackVersion <= 1 || rollbackVersion > secret.versions[0].version) { + throw new NotFoundException( + `Invalid rollback version: ${rollbackVersion} for secret: ${secretId}` + ) + } + + // Rollback the secret + return await this.secretReposiotory.rollbackSecret( + secretId, + rollbackVersion + ) + } + + async deleteSecret( + user: User, + secretId: Secret['id'], + projectId: Project['id'] + ) { + // Fetch the project + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + if (!project) { + throw new NotFoundException(`Project not found: ${projectId}`) + } + + // Check if the project can create secrets in the project + await this.projectPermission.isProjectMaintainer(user, projectId) + + // Check if the secret exists + const secret = await this.secretReposiotory.getSecret(secretId, projectId) + if (!secret) { + throw new NotFoundException(`Secret not found: ${secretId}`) + } + + // Delete the secret + return await this.secretReposiotory.deleteSecret(secretId, user.id) + } + + async getSecret( + user: User, + secretId: Secret['id'], + projectId: Project['id'], + decryptValue: boolean + ) { + // Fetch the project + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + if (!project) { + throw new NotFoundException(`Project not found: ${projectId}`) + } + + // Fetch the secret + const secret = (await this.secretReposiotory.getSecret( + secretId, + projectId + )) as SecretWithVersion + if (!secret) { + throw new NotFoundException(`Secret not found: ${secretId}`) + } + + // Check if the project is allowed to store the private key + if (decryptValue && !project.storePrivateKey) { + throw new BadRequestException( + `Cannot decrypt secret value: ${secretId} as the project does not store the private key` + ) + } + + // Check if the project has a private key. This is just to ensure that we don't run into any + // problems while decrypting the secret + if (decryptValue && !project.privateKey) { + throw new NotFoundException( + `Cannot decrypt secret value: ${secretId} as the project does not have a private key` + ) + } + + if (decryptValue) { + // Decrypt the secret value + const decryptedValue = decrypt( + project.privateKey, + secret.versions[0].value + ) + secret.versions[0].value = decryptedValue + } + + // Return the secret + return secret + } + + async getAllVersionsOfSecret( + user: User, + secretId: Secret['id'], + projectId: Project['id'] + ) { + // Fetch the project + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + if (!project) { + throw new NotFoundException(`Project not found: ${projectId}`) + } + + // Fetch the secret + const secret = await this.secretReposiotory.getSecret(secretId, projectId) + if (!secret) { + throw new NotFoundException(`Secret not found: ${secretId}`) + } + + // Return the secret versions + return await this.secretReposiotory.getAllVersionsOfSecret(secretId) + } + + async getAllSecretsOfProject( + user: User, + projectId: Project['id'], + decryptValue: boolean, + page: number, + limit: number, + sort: string, + order: string, + search: string + ) { + // Fetch the project + const project = await this.projectRepository.getProjectByUserIdAndId( + user.id, + projectId + ) + if (!project) { + throw new NotFoundException(`Project not found: ${projectId}`) + } + + // Check if the project is allowed to store the private key + if (decryptValue && !project.storePrivateKey) { + throw new BadRequestException( + `Cannot decrypt secret values as the project does not store the private key` + ) + } + + // Check if the project has a private key. This is just to ensure that we don't run into any + // problems while decrypting the secret + if (decryptValue && !project.privateKey) { + throw new NotFoundException( + `Cannot decrypt secret values as the project does not have a private key` + ) + } + + const secrets = (await this.secretReposiotory.getAllSecretsOfProject( + projectId, + page, + limit, + sort, + order, + search + )) as SecretWithVersion[] + + // Return the secrets + return secrets.map((secret) => { + if (decryptValue) { + // Decrypt the secret value + const decryptedValue = decrypt( + project.privateKey, + secret.versions[0].value + ) + secret.versions[0].value = decryptedValue + } + return secret + }) + } + + async getAllSecrets( + page: number, + limit: number, + sort: string, + order: string, + search: string + ) { + // Return the secrets + return await this.secretReposiotory.getAllSecrets( + page, + limit, + sort, + order, + search + ) + } +} From b15dbb05b3d2dae83d7250437dfa82077fd31ae4 Mon Sep 17 00:00:00 2001 From: rajdip-b Date: Mon, 8 Jan 2024 00:42:04 +0530 Subject: [PATCH 15/15] feat: add swagger --- apps/api/src/app/app.controller.ts | 2 + .../src/auth/controller/auth.controller.ts | 54 +- .../controller/environment.controller.ts | 2 + apps/api/src/main.ts | 8 + .../project/controller/project.controller.ts | 2 + .../secret/controller/secret.controller.ts | 2 + .../src/user/controller/user.controller.ts | 2 + package.json | 10 +- pnpm-lock.yaml | 490 +++++++++--------- 9 files changed, 320 insertions(+), 252 deletions(-) diff --git a/apps/api/src/app/app.controller.ts b/apps/api/src/app/app.controller.ts index ace249fd..5ff1a384 100644 --- a/apps/api/src/app/app.controller.ts +++ b/apps/api/src/app/app.controller.ts @@ -1,6 +1,8 @@ import { Controller, Get } from '@nestjs/common' import { Public } from '../decorators/public.decorator' +import { ApiTags } from '@nestjs/swagger' +@ApiTags('App Controller') @Controller() export class AppController { constructor() {} diff --git a/apps/api/src/auth/controller/auth.controller.ts b/apps/api/src/auth/controller/auth.controller.ts index 591c4236..9ef327b2 100644 --- a/apps/api/src/auth/controller/auth.controller.ts +++ b/apps/api/src/auth/controller/auth.controller.ts @@ -1,20 +1,70 @@ -import { Controller, Param, Post, Query } from '@nestjs/common' +import { Controller, HttpStatus, Param, Post, Query } from '@nestjs/common' import { AuthService } from '../service/auth.service' import { UserAuthenticatedResponse } from '../auth.types' import { Public } from '../../decorators/public.decorator' +import { ApiOperation, ApiParam, ApiResponse, ApiTags } from '@nestjs/swagger' +@ApiTags('Auth Controller') @Controller('auth') export class AuthController { constructor(private authService: AuthService) {} @Public() @Post('send-otp/:email') - async sendOtp(@Param('email') email: string): Promise { + @ApiOperation({ + summary: 'Send OTP', + description: + 'This endpoint sends OTPs to an email address. The OTP can then be used to generate valid tokens' + }) + @ApiParam({ + name: 'email', + description: 'Email to send OTP', + required: true + }) + @ApiResponse({ + status: HttpStatus.OK, + description: 'Send OTP successfully' + }) + @ApiResponse({ + status: HttpStatus.BAD_REQUEST, + description: 'Email is invalid' + }) + async sendOtp( + @Param('email') + email: string + ): Promise { await this.authService.sendOtp(email) } @Public() @Post('validate-otp') + @ApiOperation({ + summary: 'Validate OTP', + description: + 'This endpoint validates OTPs. If the OTP is valid, it returns a valid token along with the user details' + }) + @ApiParam({ + name: 'email', + description: 'Email to send OTP', + required: true + }) + @ApiParam({ + name: 'otp', + description: 'OTP to validate', + required: true + }) + @ApiResponse({ + status: HttpStatus.OK, + description: 'Validate OTP successfully' + }) + @ApiResponse({ + status: HttpStatus.NOT_FOUND, + description: 'Email not found' + }) + @ApiResponse({ + status: HttpStatus.UNAUTHORIZED, + description: 'OTP is invalid' + }) async validateOtp( @Query('email') email: string, @Query('otp') otp: string diff --git a/apps/api/src/environment/controller/environment.controller.ts b/apps/api/src/environment/controller/environment.controller.ts index 8483e236..c48ef665 100644 --- a/apps/api/src/environment/controller/environment.controller.ts +++ b/apps/api/src/environment/controller/environment.controller.ts @@ -15,7 +15,9 @@ import { CreateEnvironment } from '../dto/create.environment/create.environment' import { User } from '@prisma/client' import { AdminGuard } from '../../auth/guard/admin.guard' import { UpdateEnvironment } from '../dto/update.environment/update.environment' +import { ApiTags } from '@nestjs/swagger' +@ApiTags('Environment Controller') @Controller('environment') export class EnvironmentController { constructor(private readonly environmentService: EnvironmentService) {} diff --git a/apps/api/src/main.ts b/apps/api/src/main.ts index a9bb1180..2bae2f15 100644 --- a/apps/api/src/main.ts +++ b/apps/api/src/main.ts @@ -10,6 +10,7 @@ import { AppModule } from './app/app.module' import chalk from 'chalk' import moment from 'moment' import { QueryTransformPipe } from './common/query.transform.pipe' +import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger' class CustomLogger implements LoggerService { log(message: string) { @@ -56,6 +57,13 @@ async function bootstrap() { new QueryTransformPipe() ) const port = 4200 + const swaggerConfig = new DocumentBuilder() + .setTitle('keyshade') + .setDescription('The keyshade API description') + .setVersion('1.0') + .build() + const document = SwaggerModule.createDocument(app, swaggerConfig) + SwaggerModule.setup('docs', app, document) await app.listen(port) logger.log( `🚀 Application is running on: http://localhost:${port}/${globalPrefix}` diff --git a/apps/api/src/project/controller/project.controller.ts b/apps/api/src/project/controller/project.controller.ts index bf2e0a23..e5b3138f 100644 --- a/apps/api/src/project/controller/project.controller.ts +++ b/apps/api/src/project/controller/project.controller.ts @@ -18,7 +18,9 @@ import { } from '../dto/create.project/create.project' import { UpdateProject } from '../dto/update.project/update.project' import { AdminGuard } from '../../auth/guard/admin.guard' +import { ApiTags } from '@nestjs/swagger' +@ApiTags('Project Controller') @Controller('project') export class ProjectController { constructor(private readonly service: ProjectService) {} diff --git a/apps/api/src/secret/controller/secret.controller.ts b/apps/api/src/secret/controller/secret.controller.ts index 643933bf..0923c248 100644 --- a/apps/api/src/secret/controller/secret.controller.ts +++ b/apps/api/src/secret/controller/secret.controller.ts @@ -15,7 +15,9 @@ import { User } from '@prisma/client' import { CreateSecret } from '../dto/create.secret/create.secret' import { UpdateSecret } from '../dto/update.secret/update.secret' import { AdminGuard } from '../../auth/guard/admin.guard' +import { ApiTags } from '@nestjs/swagger' +@ApiTags('Secret Controller') @Controller('secret') export class SecretController { constructor(private readonly secretService: SecretService) {} diff --git a/apps/api/src/user/controller/user.controller.ts b/apps/api/src/user/controller/user.controller.ts index 8dc0d9de..f7a206bb 100644 --- a/apps/api/src/user/controller/user.controller.ts +++ b/apps/api/src/user/controller/user.controller.ts @@ -12,7 +12,9 @@ import { CurrentUser } from '../../decorators/user.decorator' import { User } from '@prisma/client' import { UpdateUserDto } from '../dto/update.user/update.user' import { AdminGuard } from '../../auth/guard/admin.guard' +import { ApiTags } from '@nestjs/swagger' +@ApiTags('User Controller') @Controller('user') export class UserController { constructor(private readonly userService: UserService) {} diff --git a/package.json b/package.json index ec57ff45..e3339e7e 100644 --- a/package.json +++ b/package.json @@ -63,8 +63,8 @@ "@types/passport-jwt": "^3.0.13", "@types/react": "18.2.33", "@types/react-dom": "18.2.14", - "@typescript-eslint/eslint-plugin": "^6.17.0", - "@typescript-eslint/parser": "^6.17.0", + "@typescript-eslint/eslint-plugin": "^6.18.0", + "@typescript-eslint/parser": "^6.18.0", "autoprefixer": "^10.4.16", "babel-jest": "^29.7.0", "eslint": "~8.48.0", @@ -78,11 +78,11 @@ "jest-environment-jsdom": "^29.7.0", "jest-environment-node": "^29.7.0", "nx": "17.2.7", - "postcss": "^8.4.32", + "postcss": "^8.4.33", "prettier": "^2.8.8", "prisma": "^5.7.1", "react-refresh": "^0.10.0", - "tailwindcss": "^3.4.0", + "tailwindcss": "^3.4.1", "ts-jest": "^29.1.1", "ts-node": "10.9.1", "typescript": "~5.2.2", @@ -99,7 +99,7 @@ "@nestjs/swagger": "^7.1.17", "@prisma/client": "^5.7.1", "@supabase/supabase-js": "^2.39.2", - "axios": "^1.6.3", + "axios": "^1.6.5", "chalk": "4.1.2", "class-transformer": "^0.5.1", "class-validator": "^0.14.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index abc55520..0e8bcb17 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,8 +39,8 @@ importers: specifier: ^2.39.2 version: 2.39.2 axios: - specifier: ^1.6.3 - version: 1.6.3 + specifier: ^1.6.5 + version: 1.6.5 chalk: specifier: 4.1.2 version: 4.1.2 @@ -101,7 +101,7 @@ importers: version: 17.2.8(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(eslint@8.48.0)(nx@17.2.7) '@nx/eslint-plugin': specifier: 17.2.7 - version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(@typescript-eslint/parser@6.17.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2) + version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(@typescript-eslint/parser@6.18.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2) '@nx/jest': specifier: 17.2.7 version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(ts-node@10.9.1)(typescript@5.2.2) @@ -157,14 +157,14 @@ importers: specifier: 18.2.14 version: 18.2.14 '@typescript-eslint/eslint-plugin': - specifier: ^6.17.0 - version: 6.17.0(@typescript-eslint/parser@6.17.0)(eslint@8.48.0)(typescript@5.2.2) + specifier: ^6.18.0 + version: 6.18.0(@typescript-eslint/parser@6.18.0)(eslint@8.48.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: ^6.17.0 - version: 6.17.0(eslint@8.48.0)(typescript@5.2.2) + specifier: ^6.18.0 + version: 6.18.0(eslint@8.48.0)(typescript@5.2.2) autoprefixer: specifier: ^10.4.16 - version: 10.4.16(postcss@8.4.32) + version: 10.4.16(postcss@8.4.33) babel-jest: specifier: ^29.7.0 version: 29.7.0(@babel/core@7.23.7) @@ -179,7 +179,7 @@ importers: version: 9.1.0(eslint@8.48.0) eslint-plugin-import: specifier: 2.27.5 - version: 2.27.5(@typescript-eslint/parser@6.17.0)(eslint@8.48.0) + version: 2.27.5(@typescript-eslint/parser@6.18.0)(eslint@8.48.0) eslint-plugin-jsx-a11y: specifier: 6.7.1 version: 6.7.1(eslint@8.48.0) @@ -202,8 +202,8 @@ importers: specifier: 17.2.7 version: 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102) postcss: - specifier: ^8.4.32 - version: 8.4.32 + specifier: ^8.4.33 + version: 8.4.33 prettier: specifier: ^2.8.8 version: 2.8.8 @@ -214,8 +214,8 @@ importers: specifier: ^0.10.0 version: 0.10.0 tailwindcss: - specifier: ^3.4.0 - version: 3.4.0(ts-node@10.9.1) + specifier: ^3.4.1 + version: 3.4.1(ts-node@10.9.1) ts-jest: specifier: ^29.1.1 version: 29.1.1(@babel/core@7.23.7)(babel-jest@29.7.0)(jest@29.7.0)(typescript@5.2.2) @@ -2349,10 +2349,10 @@ packages: - nx dev: true - /@nrwl/eslint-plugin-nx@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(@typescript-eslint/parser@6.17.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2): + /@nrwl/eslint-plugin-nx@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(@typescript-eslint/parser@6.18.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2): resolution: {integrity: sha512-YGH3FL4Dz+a9r2xmZx/SMUFOUl/An6IsZeTqkG5gC+ErejX9nT1KWOXMNh5bkl+jz0b4NvkiVvgQw+W4q2K9sg==} dependencies: - '@nx/eslint-plugin': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(@typescript-eslint/parser@6.17.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2) + '@nx/eslint-plugin': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(@typescript-eslint/parser@6.18.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -2793,7 +2793,7 @@ packages: tslib: 2.6.2 dev: true - /@nx/eslint-plugin@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(@typescript-eslint/parser@6.17.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2): + /@nx/eslint-plugin@17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(@typescript-eslint/parser@6.18.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2): resolution: {integrity: sha512-emKsCaWDOPekCJvuE6QE6CHwSR4RKULdOHotnSaE3J65cgair9djsR8SNUELsqpTSfEmtfB53Z0oZYw4zdeiFQ==} peerDependencies: '@typescript-eslint/parser': ^6.9.1 @@ -2802,12 +2802,12 @@ packages: eslint-config-prettier: optional: true dependencies: - '@nrwl/eslint-plugin-nx': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(@typescript-eslint/parser@6.17.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2) + '@nrwl/eslint-plugin-nx': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(@typescript-eslint/parser@6.18.0)(eslint-config-prettier@9.1.0)(eslint@8.48.0)(nx@17.2.7)(typescript@5.2.2) '@nx/devkit': 17.2.7(nx@17.2.7) '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) - '@typescript-eslint/parser': 6.17.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/type-utils': 6.17.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.17.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.18.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/type-utils': 6.18.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.18.0(eslint@8.48.0)(typescript@5.2.2) chalk: 4.1.2 confusing-browser-globals: 1.0.11 eslint-config-prettier: 9.1.0(eslint@8.48.0) @@ -3644,7 +3644,7 @@ packages: '@nrwl/webpack': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) '@nx/devkit': 17.2.7(nx@17.2.7) '@nx/js': 17.2.7(@swc-node/register@1.6.8)(@swc/core@1.3.102)(@types/node@18.16.9)(nx@17.2.7)(typescript@5.2.2) - autoprefixer: 10.4.16(postcss@8.4.32) + autoprefixer: 10.4.16(postcss@8.4.33) babel-loader: 9.1.3(@babel/core@7.23.7)(webpack@5.89.0) browserslist: 4.22.2 chalk: 4.1.2 @@ -3658,9 +3658,9 @@ packages: loader-utils: 2.0.4 mini-css-extract-plugin: 2.4.7(webpack@5.89.0) parse5: 4.0.0 - postcss: 8.4.32 - postcss-import: 14.1.0(postcss@8.4.32) - postcss-loader: 6.2.1(postcss@8.4.32)(webpack@5.89.0) + postcss: 8.4.33 + postcss-import: 14.1.0(postcss@8.4.33) + postcss-loader: 6.2.1(postcss@8.4.33)(webpack@5.89.0) rxjs: 7.8.1 sass: 1.69.7 sass-loader: 12.6.0(sass@1.69.7)(webpack@5.89.0) @@ -4599,8 +4599,8 @@ packages: '@types/yargs-parser': 21.0.3 dev: true - /@typescript-eslint/eslint-plugin@6.17.0(@typescript-eslint/parser@6.17.0)(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-Vih/4xLXmY7V490dGwBQJTpIZxH4ZFH6eCVmQ4RFkB+wmaCTDAx4dtgoWwMNGKLkqRY1L6rPqzEbjorRnDo4rQ==} + /@typescript-eslint/eslint-plugin@6.18.0(@typescript-eslint/parser@6.18.0)(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-3lqEvQUdCozi6d1mddWqd+kf8KxmGq2Plzx36BlkjuQe3rSTm/O98cLf0A4uDO+a5N1KD2SeEEl6fW97YHY+6w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -4611,11 +4611,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.17.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.17.0 - '@typescript-eslint/type-utils': 6.17.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.17.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.17.0 + '@typescript-eslint/parser': 6.18.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.18.0 + '@typescript-eslint/type-utils': 6.18.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.18.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.18.0 debug: 4.3.4 eslint: 8.48.0 graphemer: 1.4.0 @@ -4628,8 +4628,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.17.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-C4bBaX2orvhK+LlwrY8oWGmSl4WolCfYm513gEccdWZj0CwGadbIADb0FtVEcI+WzUyjyoBj2JRP8g25E6IB8A==} + /@typescript-eslint/parser@6.18.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-v6uR68SFvqhNQT41frCMCQpsP+5vySy6IdgjlzUWoo7ALCnpaWYcz/Ij2k4L8cEsL0wkvOviCMpjmtRtHNOKzA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4638,10 +4638,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.17.0 - '@typescript-eslint/types': 6.17.0 - '@typescript-eslint/typescript-estree': 6.17.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.17.0 + '@typescript-eslint/scope-manager': 6.18.0 + '@typescript-eslint/types': 6.18.0 + '@typescript-eslint/typescript-estree': 6.18.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.18.0 debug: 4.3.4 eslint: 8.48.0 typescript: 5.2.2 @@ -4649,16 +4649,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.17.0: - resolution: {integrity: sha512-RX7a8lwgOi7am0k17NUO0+ZmMOX4PpjLtLRgLmT1d3lBYdWH4ssBUbwdmc5pdRX8rXon8v9x8vaoOSpkHfcXGA==} + /@typescript-eslint/scope-manager@6.18.0: + resolution: {integrity: sha512-o/UoDT2NgOJ2VfHpfr+KBY2ErWvCySNUIX/X7O9g8Zzt/tXdpfEU43qbNk8LVuWUT2E0ptzTWXh79i74PP0twA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.17.0 - '@typescript-eslint/visitor-keys': 6.17.0 + '@typescript-eslint/types': 6.18.0 + '@typescript-eslint/visitor-keys': 6.18.0 dev: true - /@typescript-eslint/type-utils@6.17.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-hDXcWmnbtn4P2B37ka3nil3yi3VCQO2QEB9gBiHJmQp5wmyQWqnjA85+ZcE8c4FqnaB6lBwMrPkgd4aBYz3iNg==} + /@typescript-eslint/type-utils@6.18.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-ZeMtrXnGmTcHciJN1+u2CigWEEXgy1ufoxtWcHORt5kGvpjjIlK9MUhzHm4RM8iVy6dqSaZA/6PVkX6+r+ChjQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4667,8 +4667,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.17.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.17.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.18.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.18.0(eslint@8.48.0)(typescript@5.2.2) debug: 4.3.4 eslint: 8.48.0 ts-api-utils: 1.0.3(typescript@5.2.2) @@ -4677,13 +4677,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.17.0: - resolution: {integrity: sha512-qRKs9tvc3a4RBcL/9PXtKSehI/q8wuU9xYJxe97WFxnzH8NWWtcW3ffNS+EWg8uPvIerhjsEZ+rHtDqOCiH57A==} + /@typescript-eslint/types@6.18.0: + resolution: {integrity: sha512-/RFVIccwkwSdW/1zeMx3hADShWbgBxBnV/qSrex6607isYjj05t36P6LyONgqdUrNLl5TYU8NIKdHUYpFvExkA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.17.0(typescript@5.2.2): - resolution: {integrity: sha512-gVQe+SLdNPfjlJn5VNGhlOhrXz4cajwFd5kAgWtZ9dCZf4XJf8xmgCTLIqec7aha3JwgLI2CK6GY1043FRxZwg==} + /@typescript-eslint/typescript-estree@6.18.0(typescript@5.2.2): + resolution: {integrity: sha512-klNvl+Ql4NsBNGB4W9TZ2Od03lm7aGvTbs0wYaFYsplVPhr+oeXjlPZCDI4U9jgJIDK38W1FKhacCFzCC+nbIg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -4691,8 +4691,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.17.0 - '@typescript-eslint/visitor-keys': 6.17.0 + '@typescript-eslint/types': 6.18.0 + '@typescript-eslint/visitor-keys': 6.18.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -4704,8 +4704,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.17.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-LofsSPjN/ITNkzV47hxas2JCsNCEnGhVvocfyOcLzT9c/tSZE7SfhS/iWtzP1lKNOEfLhRTZz6xqI8N2RzweSQ==} + /@typescript-eslint/utils@6.18.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-wiKKCbUeDPGaYEYQh1S580dGxJ/V9HI7K5sbGAVklyf+o5g3O+adnS4UNJajplF4e7z2q0uVBaTdT/yLb4XAVA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4713,9 +4713,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.17.0 - '@typescript-eslint/types': 6.17.0 - '@typescript-eslint/typescript-estree': 6.17.0(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.18.0 + '@typescript-eslint/types': 6.18.0 + '@typescript-eslint/typescript-estree': 6.18.0(typescript@5.2.2) eslint: 8.48.0 semver: 7.5.4 transitivePeerDependencies: @@ -4723,11 +4723,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.17.0: - resolution: {integrity: sha512-H6VwB/k3IuIeQOyYczyyKN8wH6ed8EwliaYHLxOIhyF0dYEIsN8+Bk3GE19qafeMKyZJJHP8+O1HiFhFLUNKSg==} + /@typescript-eslint/visitor-keys@6.18.0: + resolution: {integrity: sha512-1wetAlSZpewRDb2h9p/Q8kRjdGuqdTAQbkJIOUMLug2LBLG+QOjiWoSj6/3B/hA9/tVTFFdtiKvAYoYnSRW/RA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.17.0 + '@typescript-eslint/types': 6.18.0 eslint-visitor-keys: 3.4.3 dev: true @@ -5176,7 +5176,7 @@ packages: /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - /autoprefixer@10.4.16(postcss@8.4.32): + /autoprefixer@10.4.16(postcss@8.4.33): resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -5184,11 +5184,11 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.22.2 - caniuse-lite: 1.0.30001572 + caniuse-lite: 1.0.30001575 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 dev: true @@ -5202,8 +5202,8 @@ packages: engines: {node: '>=4'} dev: true - /axios@1.6.3: - resolution: {integrity: sha512-fWyNdeawGam70jXSVlKl+SUNVcL6j6W79CuSIPfi6HnDUmSCH6gyUys/HrqHeA/wU0Az41rRgean494d0Jb+ww==} + /axios@1.6.5: + resolution: {integrity: sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==} dependencies: follow-redirects: 1.15.4 form-data: 4.0.0 @@ -5482,8 +5482,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001572 - electron-to-chromium: 1.4.617 + caniuse-lite: 1.0.30001575 + electron-to-chromium: 1.4.623 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) @@ -5566,13 +5566,13 @@ packages: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: browserslist: 4.22.2 - caniuse-lite: 1.0.30001572 + caniuse-lite: 1.0.30001575 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: true - /caniuse-lite@1.0.30001572: - resolution: {integrity: sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==} + /caniuse-lite@1.0.30001575: + resolution: {integrity: sha512-VE+TSRJsWdtwTheYnrQikhGWlvJp+4lunXBadY66YIc+itIHm7y9d0NSA150Eh6mNY6d1S/B+fitPr9OzHJc6Q==} /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -5944,13 +5944,13 @@ packages: which: 2.0.2 dev: true - /css-declaration-sorter@7.1.1(postcss@8.4.32): + /css-declaration-sorter@7.1.1(postcss@8.4.33): resolution: {integrity: sha512-dZ3bVTEEc1vxr3Bek9vGwfB5Z6ESPULhcRvO472mfjVnj8jRcTnKO8/JTczlvxM10Myb+wBM++1MtdO76eWcaQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.0.9 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 dev: true /css-loader@6.8.1(webpack@5.89.0): @@ -5959,12 +5959,12 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.32) - postcss: 8.4.32 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.32) - postcss-modules-local-by-default: 4.0.3(postcss@8.4.32) - postcss-modules-scope: 3.1.0(postcss@8.4.32) - postcss-modules-values: 4.0.0(postcss@8.4.32) + icss-utils: 5.1.0(postcss@8.4.33) + postcss: 8.4.33 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.33) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.33) + postcss-modules-scope: 3.1.0(postcss@8.4.33) + postcss-modules-values: 4.0.0(postcss@8.4.33) postcss-value-parser: 4.2.0 semver: 7.5.4 webpack: 5.89.0(@swc/core@1.3.102) @@ -5996,9 +5996,9 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.20 - cssnano: 6.0.2(postcss@8.4.32) + cssnano: 6.0.3(postcss@8.4.33) jest-worker: 29.7.0 - postcss: 8.4.32 + postcss: 8.4.33 schema-utils: 4.2.0 serialize-javascript: 6.0.1 webpack: 5.89.0(@swc/core@1.3.102) @@ -6041,62 +6041,62 @@ packages: hasBin: true dev: true - /cssnano-preset-default@6.0.2(postcss@8.4.32): - resolution: {integrity: sha512-VnZybFeZ63AiVqIUNlxqMxpj9VU8B5j0oKgP7WyVt/7mkyf97KsYkNzsPTV/RVmy54Pg7cBhOK4WATbdCB44gw==} + /cssnano-preset-default@6.0.3(postcss@8.4.33): + resolution: {integrity: sha512-4y3H370aZCkT9Ev8P4SO4bZbt+AExeKhh8wTbms/X7OLDo5E7AYUUy6YPxa/uF5Grf+AJwNcCnxKhZynJ6luBA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - css-declaration-sorter: 7.1.1(postcss@8.4.32) - cssnano-utils: 4.0.1(postcss@8.4.32) - postcss: 8.4.32 - postcss-calc: 9.0.1(postcss@8.4.32) - postcss-colormin: 6.0.1(postcss@8.4.32) - postcss-convert-values: 6.0.1(postcss@8.4.32) - postcss-discard-comments: 6.0.1(postcss@8.4.32) - postcss-discard-duplicates: 6.0.1(postcss@8.4.32) - postcss-discard-empty: 6.0.1(postcss@8.4.32) - postcss-discard-overridden: 6.0.1(postcss@8.4.32) - postcss-merge-longhand: 6.0.1(postcss@8.4.32) - postcss-merge-rules: 6.0.2(postcss@8.4.32) - postcss-minify-font-values: 6.0.1(postcss@8.4.32) - postcss-minify-gradients: 6.0.1(postcss@8.4.32) - postcss-minify-params: 6.0.1(postcss@8.4.32) - postcss-minify-selectors: 6.0.1(postcss@8.4.32) - postcss-normalize-charset: 6.0.1(postcss@8.4.32) - postcss-normalize-display-values: 6.0.1(postcss@8.4.32) - postcss-normalize-positions: 6.0.1(postcss@8.4.32) - postcss-normalize-repeat-style: 6.0.1(postcss@8.4.32) - postcss-normalize-string: 6.0.1(postcss@8.4.32) - postcss-normalize-timing-functions: 6.0.1(postcss@8.4.32) - postcss-normalize-unicode: 6.0.1(postcss@8.4.32) - postcss-normalize-url: 6.0.1(postcss@8.4.32) - postcss-normalize-whitespace: 6.0.1(postcss@8.4.32) - postcss-ordered-values: 6.0.1(postcss@8.4.32) - postcss-reduce-initial: 6.0.1(postcss@8.4.32) - postcss-reduce-transforms: 6.0.1(postcss@8.4.32) - postcss-svgo: 6.0.1(postcss@8.4.32) - postcss-unique-selectors: 6.0.1(postcss@8.4.32) - dev: true - - /cssnano-utils@4.0.1(postcss@8.4.32): + css-declaration-sorter: 7.1.1(postcss@8.4.33) + cssnano-utils: 4.0.1(postcss@8.4.33) + postcss: 8.4.33 + postcss-calc: 9.0.1(postcss@8.4.33) + postcss-colormin: 6.0.2(postcss@8.4.33) + postcss-convert-values: 6.0.2(postcss@8.4.33) + postcss-discard-comments: 6.0.1(postcss@8.4.33) + postcss-discard-duplicates: 6.0.1(postcss@8.4.33) + postcss-discard-empty: 6.0.1(postcss@8.4.33) + postcss-discard-overridden: 6.0.1(postcss@8.4.33) + postcss-merge-longhand: 6.0.2(postcss@8.4.33) + postcss-merge-rules: 6.0.3(postcss@8.4.33) + postcss-minify-font-values: 6.0.1(postcss@8.4.33) + postcss-minify-gradients: 6.0.1(postcss@8.4.33) + postcss-minify-params: 6.0.2(postcss@8.4.33) + postcss-minify-selectors: 6.0.2(postcss@8.4.33) + postcss-normalize-charset: 6.0.1(postcss@8.4.33) + postcss-normalize-display-values: 6.0.1(postcss@8.4.33) + postcss-normalize-positions: 6.0.1(postcss@8.4.33) + postcss-normalize-repeat-style: 6.0.1(postcss@8.4.33) + postcss-normalize-string: 6.0.1(postcss@8.4.33) + postcss-normalize-timing-functions: 6.0.1(postcss@8.4.33) + postcss-normalize-unicode: 6.0.2(postcss@8.4.33) + postcss-normalize-url: 6.0.1(postcss@8.4.33) + postcss-normalize-whitespace: 6.0.1(postcss@8.4.33) + postcss-ordered-values: 6.0.1(postcss@8.4.33) + postcss-reduce-initial: 6.0.2(postcss@8.4.33) + postcss-reduce-transforms: 6.0.1(postcss@8.4.33) + postcss-svgo: 6.0.2(postcss@8.4.33) + postcss-unique-selectors: 6.0.2(postcss@8.4.33) + dev: true + + /cssnano-utils@4.0.1(postcss@8.4.33): resolution: {integrity: sha512-6qQuYDqsGoiXssZ3zct6dcMxiqfT6epy7x4R0TQJadd4LWO3sPR6JH6ZByOvVLoZ6EdwPGgd7+DR1EmX3tiXQQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 dev: true - /cssnano@6.0.2(postcss@8.4.32): - resolution: {integrity: sha512-Tu9wv8UdN6CoiQnIVkCNvi+0rw/BwFWOJBlg2bVfEyKaadSuE3Gq/DD8tniVvggTJGwK88UjqZp7zL5sv6t1aA==} + /cssnano@6.0.3(postcss@8.4.33): + resolution: {integrity: sha512-MRq4CIj8pnyZpcI2qs6wswoYoDD1t0aL28n+41c1Ukcpm56m1h6mCexIHBGjfZfnTqtGSSCP4/fB1ovxgjBOiw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - cssnano-preset-default: 6.0.2(postcss@8.4.32) + cssnano-preset-default: 6.0.3(postcss@8.4.33) lilconfig: 3.0.0 - postcss: 8.4.32 + postcss: 8.4.33 dev: true /csso@5.0.5: @@ -6417,8 +6417,8 @@ packages: jake: 10.8.7 dev: true - /electron-to-chromium@1.4.617: - resolution: {integrity: sha512-sYNE3QxcDS4ANW1k4S/wWYMXjCVcFSOX3Bg8jpuMFaXt/x8JCmp0R1Xe1ZXDX4WXnSRBf+GJ/3eGWicUuQq5cg==} + /electron-to-chromium@1.4.623: + resolution: {integrity: sha512-lKoz10iCYlP1WtRYdh5MvocQPWVRoI7ysp6qf18bmeBgR8abE6+I2CsfyNKztRDZvhdWc+krKT6wS7Neg8sw3A==} /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -6639,11 +6639,11 @@ packages: dependencies: '@next/eslint-plugin-next': 14.0.4 '@rushstack/eslint-patch': 1.6.1 - '@typescript-eslint/parser': 6.17.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.18.0(eslint@8.48.0)(typescript@5.2.2) eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.33.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) @@ -6672,7 +6672,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -6682,8 +6682,8 @@ packages: debug: 4.3.4 enhanced-resolve: 5.15.0 eslint: 8.48.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -6695,7 +6695,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -6716,16 +6716,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.17.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.18.0(eslint@8.48.0)(typescript@5.2.2) debug: 3.2.7 eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.17.0)(eslint@8.48.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.18.0)(eslint@8.48.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -6735,7 +6735,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.17.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.18.0(eslint@8.48.0)(typescript@5.2.2) array-includes: 3.1.7 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 @@ -6743,7 +6743,7 @@ packages: doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) has: 1.0.4 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -6758,7 +6758,7 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -6768,7 +6768,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.17.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.18.0(eslint@8.48.0)(typescript@5.2.2) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -6777,7 +6777,7 @@ packages: doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -7727,13 +7727,13 @@ packages: safer-buffer: 2.1.2 dev: true - /icss-utils@5.1.0(postcss@8.4.32): + /icss-utils@5.1.0(postcss@8.4.33): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 dev: true /identity-obj-proxy@3.0.0: @@ -9259,7 +9259,7 @@ packages: '@next/env': 14.0.4 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001572 + caniuse-lite: 1.0.30001575 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 @@ -9379,7 +9379,7 @@ packages: '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.6 - axios: 1.6.3 + axios: 1.6.5 chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 @@ -9444,7 +9444,7 @@ packages: '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.6 - axios: 1.6.3 + axios: 1.6.5 chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 @@ -9508,7 +9508,7 @@ packages: '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.6 - axios: 1.6.3 + axios: 1.6.5 chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 @@ -9928,19 +9928,19 @@ packages: - supports-color dev: true - /postcss-calc@9.0.1(postcss@8.4.32): + /postcss-calc@9.0.1(postcss@8.4.33): resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.2.2 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-selector-parser: 6.0.15 postcss-value-parser: 4.2.0 dev: true - /postcss-colormin@6.0.1(postcss@8.4.32): - resolution: {integrity: sha512-Tb9aR2wCJCzKuNjIeMzVNd0nXjQy25HDgFmmaRsHnP0eP/k8uQWE4S8voX5S2coO5CeKrp+USFs1Ayv9Tpxx6w==} + /postcss-colormin@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-TXKOxs9LWcdYo5cgmcSHPkyrLAh86hX1ijmyy6J8SbOhyv6ua053M3ZAM/0j44UsnQNIWdl8gb5L7xX2htKeLw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 @@ -9948,92 +9948,92 @@ packages: browserslist: 4.22.2 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 dev: true - /postcss-convert-values@6.0.1(postcss@8.4.32): - resolution: {integrity: sha512-zTd4Vh0HxGkhg5aHtfCogcRHzGkvblfdWlQ53lIh1cJhYcGyIxh2hgtKoVh40AMktRERet+JKdB04nNG19kjmA==} + /postcss-convert-values@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-aeBmaTnGQ+NUSVQT8aY0sKyAD/BaLJenEKZ03YK0JnDE1w1Rr8XShoxdal2V2H26xTJKr3v5haByOhJuyT4UYw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: browserslist: 4.22.2 - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 dev: true - /postcss-discard-comments@6.0.1(postcss@8.4.32): + /postcss-discard-comments@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-f1KYNPtqYLUeZGCHQPKzzFtsHaRuECe6jLakf/RjSRqvF5XHLZnM2+fXLhb8Qh/HBFHs3M4cSLb1k3B899RYIg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 dev: true - /postcss-discard-duplicates@6.0.1(postcss@8.4.32): + /postcss-discard-duplicates@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-1hvUs76HLYR8zkScbwyJ8oJEugfPV+WchpnA+26fpJ7Smzs51CzGBHC32RS03psuX/2l0l0UKh2StzNxOrKCYg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 dev: true - /postcss-discard-empty@6.0.1(postcss@8.4.32): + /postcss-discard-empty@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-yitcmKwmVWtNsrrRqGJ7/C0YRy53i0mjexBDQ9zYxDwTWVBgbU4+C9jIZLmQlTDT9zhml+u0OMFJh8+31krmOg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 dev: true - /postcss-discard-overridden@6.0.1(postcss@8.4.32): + /postcss-discard-overridden@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-qs0ehZMMZpSESbRkw1+inkf51kak6OOzNRaoLd/U7Fatp0aN2HQ1rxGOrJvYcRAN9VpX8kUF13R2ofn8OlvFVA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 dev: true - /postcss-import@14.1.0(postcss@8.4.32): + /postcss-import@14.1.0(postcss@8.4.33): resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} engines: {node: '>=10.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 dev: true - /postcss-import@15.1.0(postcss@8.4.32): + /postcss-import@15.1.0(postcss@8.4.33): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 dev: true - /postcss-js@4.0.1(postcss@8.4.32): + /postcss-js@4.0.1(postcss@8.4.33): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.32 + postcss: 8.4.33 dev: true - /postcss-load-config@4.0.2(postcss@8.4.32)(ts-node@10.9.1): + /postcss-load-config@4.0.2(postcss@8.4.33)(ts-node@10.9.1): resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} peerDependencies: @@ -10046,12 +10046,12 @@ packages: optional: true dependencies: lilconfig: 3.0.0 - postcss: 8.4.32 + postcss: 8.4.33 ts-node: 10.9.1(@swc/core@1.3.102)(@types/node@18.16.9)(typescript@5.2.2) yaml: 2.3.4 dev: true - /postcss-loader@6.2.1(postcss@8.4.32)(webpack@5.89.0): + /postcss-loader@6.2.1(postcss@8.4.33)(webpack@5.89.0): resolution: {integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -10060,249 +10060,249 @@ packages: dependencies: cosmiconfig: 7.1.0 klona: 2.0.6 - postcss: 8.4.32 + postcss: 8.4.33 semver: 7.5.4 webpack: 5.89.0(@swc/core@1.3.102) dev: true - /postcss-merge-longhand@6.0.1(postcss@8.4.32): - resolution: {integrity: sha512-vmr/HZQzaPXc45FRvSctqFTF05UaDnTn5ABX+UtQPJznDWT/QaFbVc/pJ5C2YPxx2J2XcfmWowlKwtCDwiQ5hA==} + /postcss-merge-longhand@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-+yfVB7gEM8SrCo9w2lCApKIEzrTKl5yS1F4yGhV3kSim6JzbfLGJyhR1B6X+6vOT0U33Mgx7iv4X9MVWuaSAfw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 - stylehacks: 6.0.1(postcss@8.4.32) + stylehacks: 6.0.2(postcss@8.4.33) dev: true - /postcss-merge-rules@6.0.2(postcss@8.4.32): - resolution: {integrity: sha512-6lm8bl0UfriSfxI+F/cezrebqqP8w702UC6SjZlUlBYwuRVNbmgcJuQU7yePIvD4MNT53r/acQCUAyulrpgmeQ==} + /postcss-merge-rules@6.0.3(postcss@8.4.33): + resolution: {integrity: sha512-yfkDqSHGohy8sGYIJwBmIGDv4K4/WrJPX355XrxQb/CSsT4Kc/RxDi6akqn5s9bap85AWgv21ArcUWwWdGNSHA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: browserslist: 4.22.2 caniuse-api: 3.0.0 - cssnano-utils: 4.0.1(postcss@8.4.32) - postcss: 8.4.32 + cssnano-utils: 4.0.1(postcss@8.4.33) + postcss: 8.4.33 postcss-selector-parser: 6.0.15 dev: true - /postcss-minify-font-values@6.0.1(postcss@8.4.32): + /postcss-minify-font-values@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-tIwmF1zUPoN6xOtA/2FgVk1ZKrLcCvE0dpZLtzyyte0j9zUeB8RTbCqrHZGjJlxOvNWKMYtunLrrl7HPOiR46w==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 dev: true - /postcss-minify-gradients@6.0.1(postcss@8.4.32): + /postcss-minify-gradients@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-M1RJWVjd6IOLPl1hYiOd5HQHgpp6cvJVLrieQYS9y07Yo8itAr6jaekzJphaJFR0tcg4kRewCk3kna9uHBxn/w==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: colord: 2.9.3 - cssnano-utils: 4.0.1(postcss@8.4.32) - postcss: 8.4.32 + cssnano-utils: 4.0.1(postcss@8.4.33) + postcss: 8.4.33 postcss-value-parser: 4.2.0 dev: true - /postcss-minify-params@6.0.1(postcss@8.4.32): - resolution: {integrity: sha512-eFvGWArqh4khPIgPDu6SZNcaLctx97nO7c59OXnRtGntAp5/VS4gjMhhW9qUFsK6mQ27pEZGt2kR+mPizI+Z9g==} + /postcss-minify-params@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-zwQtbrPEBDj+ApELZ6QylLf2/c5zmASoOuA4DzolyVGdV38iR2I5QRMsZcHkcdkZzxpN8RS4cN7LPskOkTwTZw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: browserslist: 4.22.2 - cssnano-utils: 4.0.1(postcss@8.4.32) - postcss: 8.4.32 + cssnano-utils: 4.0.1(postcss@8.4.33) + postcss: 8.4.33 postcss-value-parser: 4.2.0 dev: true - /postcss-minify-selectors@6.0.1(postcss@8.4.32): - resolution: {integrity: sha512-mfReq5wrS6vkunxvJp6GDuOk+Ak6JV7134gp8L+ANRnV9VwqzTvBtX6lpohooVU750AR0D3pVx2Zn6uCCwOAfQ==} + /postcss-minify-selectors@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-0b+m+w7OAvZejPQdN2GjsXLv5o0jqYHX3aoV0e7RBKPCsB7TYG5KKWBFhGnB/iP3213Ts8c5H4wLPLMm7z28Sg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-selector-parser: 6.0.15 dev: true - /postcss-modules-extract-imports@3.0.0(postcss@8.4.32): + /postcss-modules-extract-imports@3.0.0(postcss@8.4.33): resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 dev: true - /postcss-modules-local-by-default@4.0.3(postcss@8.4.32): + /postcss-modules-local-by-default@4.0.3(postcss@8.4.33): resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.32) - postcss: 8.4.32 + icss-utils: 5.1.0(postcss@8.4.33) + postcss: 8.4.33 postcss-selector-parser: 6.0.15 postcss-value-parser: 4.2.0 dev: true - /postcss-modules-scope@3.1.0(postcss@8.4.32): + /postcss-modules-scope@3.1.0(postcss@8.4.33): resolution: {integrity: sha512-SaIbK8XW+MZbd0xHPf7kdfA/3eOt7vxJ72IRecn3EzuZVLr1r0orzf0MX/pN8m+NMDoo6X/SQd8oeKqGZd8PXg==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-selector-parser: 6.0.15 dev: true - /postcss-modules-values@4.0.0(postcss@8.4.32): + /postcss-modules-values@4.0.0(postcss@8.4.33): resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.32) - postcss: 8.4.32 + icss-utils: 5.1.0(postcss@8.4.33) + postcss: 8.4.33 dev: true - /postcss-nested@6.0.1(postcss@8.4.32): + /postcss-nested@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-selector-parser: 6.0.15 dev: true - /postcss-normalize-charset@6.0.1(postcss@8.4.32): + /postcss-normalize-charset@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-aW5LbMNRZ+oDV57PF9K+WI1Z8MPnF+A8qbajg/T8PP126YrGX1f9IQx21GI2OlGz7XFJi/fNi0GTbY948XJtXg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 dev: true - /postcss-normalize-display-values@6.0.1(postcss@8.4.32): + /postcss-normalize-display-values@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-mc3vxp2bEuCb4LgCcmG1y6lKJu1Co8T+rKHrcbShJwUmKJiEl761qb/QQCfFwlrvSeET3jksolCR/RZuMURudw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-positions@6.0.1(postcss@8.4.32): + /postcss-normalize-positions@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-HRsq8u/0unKNvm0cvwxcOUEcakFXqZ41fv3FOdPn916XFUrympjr+03oaLkuZENz3HE9RrQE9yU0Xv43ThWjQg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-repeat-style@6.0.1(postcss@8.4.32): + /postcss-normalize-repeat-style@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-Gbb2nmCy6tTiA7Sh2MBs3fj9W8swonk6lw+dFFeQT68B0Pzwp1kvisJQkdV6rbbMSd9brMlS8I8ts52tAGWmGQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-string@6.0.1(postcss@8.4.32): + /postcss-normalize-string@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-5Fhx/+xzALJD9EI26Aq23hXwmv97Zfy2VFrt5PLT8lAhnBIZvmaT5pQk+NuJ/GWj/QWaKSKbnoKDGLbV6qnhXg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-timing-functions@6.0.1(postcss@8.4.32): + /postcss-normalize-timing-functions@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-4zcczzHqmCU7L5dqTB9rzeqPWRMc0K2HoR+Bfl+FSMbqGBUcP5LRfgcH4BdRtLuzVQK1/FHdFoGT3F7rkEnY+g==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-unicode@6.0.1(postcss@8.4.32): - resolution: {integrity: sha512-ok9DsI94nEF79MkvmLfHfn8ddnKXA7w+8YuUoz5m7b6TOdoaRCpvu/QMHXQs9+DwUbvp+ytzz04J55CPy77PuQ==} + /postcss-normalize-unicode@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-Ff2VdAYCTGyMUwpevTZPZ4w0+mPjbZzLLyoLh/RMpqUqeQKZ+xMm31hkxBavDcGKcxm6ACzGk0nBfZ8LZkStKA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: browserslist: 4.22.2 - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-url@6.0.1(postcss@8.4.32): + /postcss-normalize-url@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-jEXL15tXSvbjm0yzUV7FBiEXwhIa9H88JOXDGQzmcWoB4mSjZIsmtto066s2iW9FYuIrIF4k04HA2BKAOpbsaQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-whitespace@6.0.1(postcss@8.4.32): + /postcss-normalize-whitespace@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-76i3NpWf6bB8UHlVuLRxG4zW2YykF9CTEcq/9LGAiz2qBuX5cBStadkk0jSkg9a9TCIXbMQz7yzrygKoCW9JuA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 dev: true - /postcss-ordered-values@6.0.1(postcss@8.4.32): + /postcss-ordered-values@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-XXbb1O/MW9HdEhnBxitZpPFbIvDgbo9NK4c/5bOfiKpnIGZDoL2xd7/e6jW5DYLsWxBbs+1nZEnVgnjnlFViaA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - cssnano-utils: 4.0.1(postcss@8.4.32) - postcss: 8.4.32 + cssnano-utils: 4.0.1(postcss@8.4.33) + postcss: 8.4.33 postcss-value-parser: 4.2.0 dev: true - /postcss-reduce-initial@6.0.1(postcss@8.4.32): - resolution: {integrity: sha512-cgzsI2ThG1PMSdSyM9A+bVxiiVgPIVz9f5c6H+TqEv0CA89iCOO81mwLWRWLgOKFtQkKob9nNpnkxG/1RlgFcA==} + /postcss-reduce-initial@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-YGKalhNlCLcjcLvjU5nF8FyeCTkCO5UtvJEt0hrPZVCTtRLSOH4z00T1UntQPj4dUmIYZgMj8qK77JbSX95hSw==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: browserslist: 4.22.2 caniuse-api: 3.0.0 - postcss: 8.4.32 + postcss: 8.4.33 dev: true - /postcss-reduce-transforms@6.0.1(postcss@8.4.32): + /postcss-reduce-transforms@6.0.1(postcss@8.4.33): resolution: {integrity: sha512-fUbV81OkUe75JM+VYO1gr/IoA2b/dRiH6HvMwhrIBSUrxq3jNZQZitSnugcTLDi1KkQh1eR/zi+iyxviUNBkcQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 dev: true @@ -10314,24 +10314,24 @@ packages: util-deprecate: 1.0.2 dev: true - /postcss-svgo@6.0.1(postcss@8.4.32): - resolution: {integrity: sha512-eWV4Rrqa06LzTgqirOv5Ln6WTGyU7Pbeqj9WEyKo9tpnWixNATVJMeaEcOHOW1ZYyjcG8wSJwX/28DvU3oy3HA==} + /postcss-svgo@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-IH5R9SjkTkh0kfFOQDImyy1+mTCb+E830+9SV1O+AaDcoHTvfsvt6WwJeo7KwcHbFnevZVCsXhDmjFiGVuwqFQ==} engines: {node: ^14 || ^16 || >= 18} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-value-parser: 4.2.0 svgo: 3.2.0 dev: true - /postcss-unique-selectors@6.0.1(postcss@8.4.32): - resolution: {integrity: sha512-/KCCEpNNR7oXVJ38/Id7GC9Nt0zxO1T3zVbhVaq6F6LSG+3gU3B7+QuTHfD0v8NPEHlzewAout29S0InmB78EQ==} + /postcss-unique-selectors@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-8IZGQ94nechdG7Y9Sh9FlIY2b4uS8/k8kdKRX040XHsS3B6d1HrJAkXrBSsSu4SuARruSsUjW3nlSw8BHkaAYQ==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 postcss-selector-parser: 6.0.15 dev: true @@ -10347,8 +10347,8 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /postcss@8.4.32: - resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} + /postcss@8.4.33: + resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 @@ -11272,14 +11272,14 @@ packages: client-only: 0.0.1 react: 18.2.0 - /stylehacks@6.0.1(postcss@8.4.32): - resolution: {integrity: sha512-jTqG2aIoX2fYg0YsGvqE4ooE/e75WmaEjnNiP6Ag7irLtHxML8NJRxRxS0HyDpde8DRGuEXTFVHVfR5Tmbxqzg==} + /stylehacks@6.0.2(postcss@8.4.33): + resolution: {integrity: sha512-00zvJGnCu64EpMjX8b5iCZ3us2Ptyw8+toEkb92VdmkEaRaSGBNKAoK6aWZckhXxmQP8zWiTaFaiMGIU8Ve8sg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 dependencies: browserslist: 4.22.2 - postcss: 8.4.32 + postcss: 8.4.33 postcss-selector-parser: 6.0.15 dev: true @@ -11373,8 +11373,8 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /tailwindcss@3.4.0(ts-node@10.9.1): - resolution: {integrity: sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==} + /tailwindcss@3.4.1(ts-node@10.9.1): + resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -11392,11 +11392,11 @@ packages: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.32 - postcss-import: 15.1.0(postcss@8.4.32) - postcss-js: 4.0.1(postcss@8.4.32) - postcss-load-config: 4.0.2(postcss@8.4.32)(ts-node@10.9.1) - postcss-nested: 6.0.1(postcss@8.4.32) + postcss: 8.4.33 + postcss-import: 15.1.0(postcss@8.4.33) + postcss-js: 4.0.1(postcss@8.4.33) + postcss-load-config: 4.0.2(postcss@8.4.33)(ts-node@10.9.1) + postcss-nested: 6.0.1(postcss@8.4.33) postcss-selector-parser: 6.0.15 resolve: 1.22.8 sucrase: 3.35.0