diff --git a/src/Controller/ProjectController.php b/src/Controller/ProjectController.php index bb6eff0..46c2830 100644 --- a/src/Controller/ProjectController.php +++ b/src/Controller/ProjectController.php @@ -48,7 +48,7 @@ public function getAllProjects(): JsonResponse } #[Route('/project/{slug}', name: self::ROUTE_ARCHIVE, methods: Request::METHOD_DELETE)] - public function classeArchive(?Project $project): JsonResponse + public function archiveProject(?Project $project): JsonResponse { return $this->handler->handleArchiveProject($project); } diff --git a/src/Entity/Category.php b/src/Entity/Category.php index 8685670..ed2a441 100644 --- a/src/Entity/Category.php +++ b/src/Entity/Category.php @@ -32,7 +32,7 @@ class Category #[ORM\Column(nullable: true, type: 'datetime_immutable')] private ?\DateTimeImmutable $updatedAt = null; - #[ORM\ManyToMany(targetEntity: Project::class, inversedBy: 'categories', cascade: ['persist'], fetch: 'EAGER', orphanRemoval: true)] + #[ORM\ManyToMany(targetEntity: Project::class, inversedBy: 'categories', fetch: 'EAGER')] private Collection $projects; public function __construct() diff --git a/src/Entity/Project.php b/src/Entity/Project.php index 83c7312..c7dcc2d 100644 --- a/src/Entity/Project.php +++ b/src/Entity/Project.php @@ -35,7 +35,7 @@ class Project #[ORM\Column(nullable: true, type: 'datetime_immutable')] private ?\DateTimeImmutable $updatedAt = null; - #[ORM\ManyToMany(targetEntity: Category::class, mappedBy: 'projects', cascade: ['persist'], fetch: 'EAGER', orphanRemoval: true)] + #[ORM\ManyToMany(targetEntity: Category::class, mappedBy: 'projects', fetch: 'EAGER')] private Collection $categories; public function __construct() diff --git a/src/Service/Category/CategoryArchiver.php b/src/Service/Category/CategoryArchiver.php index c12b3f7..192b504 100644 --- a/src/Service/Category/CategoryArchiver.php +++ b/src/Service/Category/CategoryArchiver.php @@ -14,17 +14,19 @@ final class CategoryArchiver { public function __construct( - private EntityManagerInterface $entityManager, + private EntityManagerInterface $em, private CategoryValidator $validator, private CategoryMapper $mapper, private ExceptionLogger $logger, + private CategoryPersister $persister, ) { } public function softDelete(Category $category): void { - $this->entityManager->persist($category->setArchivedAt(new \DateTimeImmutable())); - $this->entityManager->flush(); + $this->persister->removeCategoryFromProjects($category); + $this->em->persist($category->setArchivedAt(new \DateTimeImmutable())); + $this->em->flush(); } public function process(?Category $category): JsonResponse diff --git a/src/Service/Category/CategoryDTO.php b/src/Service/Category/CategoryDTO.php index b77ab40..ca05447 100644 --- a/src/Service/Category/CategoryDTO.php +++ b/src/Service/Category/CategoryDTO.php @@ -7,6 +7,7 @@ final class CategoryDTO public function __construct( private string $name = '', private ?string $slug = null, + private array $projects = [], ) { } @@ -33,4 +34,16 @@ public function setSlug(string $slug): self return $this; } + + public function getProjects(): array + { + return $this->projects; + } + + public function setProjects(array $projects): self + { + $this->projects = $projects; + + return $this; + } } diff --git a/src/Service/Category/CategoryHandler.php b/src/Service/Category/CategoryHandler.php index 655e749..7c1e50b 100644 --- a/src/Service/Category/CategoryHandler.php +++ b/src/Service/Category/CategoryHandler.php @@ -28,8 +28,9 @@ public function handleGetCategory(?Category $category): JsonResponse null === $category && throw new NotFoundException(ApiMessages::translate(ApiMessages::CATEGORY_NOT_FOUND)); - $result = $this->finder->get($category); - $response = new ApiResponse(CategoryMapper::fromEntityToJson($result)); + $categoryInfos = $this->finder->get($category); + $result = CategoryMapper::fromEntityToJson($categoryInfos); + $response = new ApiResponse($result); } catch (NotFoundException $exception) { $this->logger->logNotice($exception); $response = ApiResponse::createWarningMessage($exception->getMessage()); diff --git a/src/Service/Category/CategoryHelper.php b/src/Service/Category/CategoryHelper.php index 1bc0914..2d8fba8 100644 --- a/src/Service/Category/CategoryHelper.php +++ b/src/Service/Category/CategoryHelper.php @@ -23,7 +23,7 @@ public static function isEditRoute(Request $request): bool return CategoryController::ROUTE_EDIT === $request->get('_route'); } - /** @throws NotFoundException */ + /** @throws NotFoundException */ public function editSlugParamExists(Request $request): ?Category { return isset($request->get('_route_params')['slug']) @@ -38,7 +38,7 @@ public static function generateEditSuccessMessage(Request $request): string : ApiMessages::CATEGORY_CREATE_SUCCESS_MESSAGE; } - /** @throws NotFoundException|BadDataException */ + /** @throws NotFoundException|BadDataException */ public function validateRequestResource(Request $request, category $category): void { (self::isEditRoute($request) && (null === $this->editSlugParamExists($request))) @@ -58,6 +58,17 @@ public static function findNotArchivedFromProject(Project $project): array public static function categoryExists(?Category $category): bool { - return (!$category->isArchived()) && (null !== $category); + return (!$category?->isArchived()) && (null !== $category); + } + + public static function getProjectsArrayFromCategory(Category $category): array + { + return array_map( + static fn (Project $project) => [ + 'name' => $project->getName(), + 'slug' => $project->getSlug(), + ], + $category->getProjects()->toArray() + ); } } diff --git a/src/Service/Category/CategoryMapper.php b/src/Service/Category/CategoryMapper.php index 020c75a..fc0dc92 100644 --- a/src/Service/Category/CategoryMapper.php +++ b/src/Service/Category/CategoryMapper.php @@ -24,6 +24,7 @@ public static function fromEntityToDTO(Category $category): CategoryDTO return new CategoryDTO( $category->getName(), $category->getSlug(), + CategoryHelper::getProjectsArrayFromCategory($category) ); } } diff --git a/src/Service/Category/CategoryPersister.php b/src/Service/Category/CategoryPersister.php index b3d0e3b..07ceb02 100644 --- a/src/Service/Category/CategoryPersister.php +++ b/src/Service/Category/CategoryPersister.php @@ -3,6 +3,7 @@ namespace App\Service\Category; use App\Entity\Category; +use App\Entity\Project; use App\Exception\BadDataException; use App\Exception\NotFoundException; use App\Helper\ApiMessages; @@ -44,12 +45,40 @@ public function processRequest(Category $category, CategoryDTO $dto, Request $re return $response; } - /** @throws NotFoundException */ - public function persist(?Category $project, CategoryDTO $dto): void + /** @throws NotFoundException */ + public function persist(Category $category, CategoryDTO $dto): void { - $project->setName($dto->getName()); + $category->setName($dto->getName()); + + /** @var Project $project */ + foreach ($category->getProjects() as $project) { + $category->removeProject($project); + $project->removeCategory($category); + } + + foreach ($dto->getProjects() as $dtoProject) { + /** @var Project $project */ + $project = $this->em->getRepository(Project::class)->findOneBySlug($dtoProject['slug']); + $category->addProject($project); + $project->addCategory($category); + } + + $this->em->persist($category); + $this->em->flush(); + } + + public function removeCategoryFromProjects(Category $category): void + { + array_map( + function (Project $project) use ($category) { + $project->removeCategory($category); + $category->removeProject($project); + $this->em->persist($project); + $this->em->persist($category); + }, + $category->getProjects()->toArray() + ); - $this->em->persist($project); $this->em->flush(); } } diff --git a/src/Service/Category/CategoryValidator.php b/src/Service/Category/CategoryValidator.php index af6e658..bac879d 100644 --- a/src/Service/Category/CategoryValidator.php +++ b/src/Service/Category/CategoryValidator.php @@ -7,28 +7,101 @@ use App\Exception\NotFoundException; use App\Helper\ApiMessages; use App\Repository\CategoryRepository; +use App\Repository\ProjectRepository; final class CategoryValidator { public const CATEGORY_ALREADY_ARCHIVED = 'La catégorie est inexistante ou a déja été supprimée'; public const NAME_SHOULD_BE_UNIQUE = 'La catégorie doit avoir un nom unique'; public const NAME_SHOULD_NOT_BE_EMPTY = 'Le champ Nom ne peut être vide'; + public const PROJECT_SLUG_INVALID = 'Au moins un des projets est invalide'; public function __construct( private CategoryRepository $categoryRepository, + private ProjectRepository $projectRepository, ) { } - /** @throws BadDataException*/ + /** @throws BadDataException */ public function validate(CategoryDTO $dto, bool $isEditRoute = true): void { - $this->validateNameNotEmpty($dto->getName()); + $this + ->validateNameNotEmpty($dto->getName()) + ->validateProjects($dto) + ; $isEditRoute ? $this->validateEditionName($dto) : $this->validateCreationName($dto); } + /** @throws BadDataException */ + private function validateProjects(CategoryDTO $dto): self + { + foreach ($dto->getProjects() as $project) { + $this->validateProject($project); + } + + return $this; + } + + /** @throws BadDataException */ + private function validateProject(mixed $data): self + { + $this + ->validateProjectFormat($data) + ->validateProjectIsNotEmptyString($data) + ->validateProjectSlugIsValidEntity($data); + + return $this; + } + + private function validateProjectFormat(mixed $data): self + { + (!is_array($data) || !array_key_exists('slug', $data)) + && throw new BadDataException(self::PROJECT_SLUG_INVALID); + + return $this; + } + + private function validateProjectIsNotEmptyString(mixed $projectSlug): self + { + (empty($projectSlug['slug']) || !is_string($projectSlug['slug'])) + && throw new BadDataException(self::PROJECT_SLUG_INVALID); + + return $this; + } + + /** @throws BadDataException */ + private function validateProjectSlugIsValidEntity(mixed $data): self + { + $slug = $data['slug']; + + $this + ->validateProjectExists($slug) + ->validateProjectIsNotArchived($slug); + + return $this; + } + + /** @throws BadDataException */ + private function validateProjectExists(string $slug): self + { + (null === $this->projectRepository->findOneBy(['slug' => $slug])) + && throw new NotFoundException(self::PROJECT_SLUG_INVALID); + + return $this; + } + + /** @throws BadDataException */ + private function validateProjectIsNotArchived(string $slug): self + { + (null !== $this->projectRepository->findOneBy(['slug' => $slug])->getArchivedAt()) + && throw new NotFoundException(self::PROJECT_SLUG_INVALID); + + return $this; + } + /** @throws BadDataException */ public function validateCreationName(CategoryDTO $dto): self { diff --git a/src/Service/Project/ProjectArchiver.php b/src/Service/Project/ProjectArchiver.php index d5eba05..57d6e29 100644 --- a/src/Service/Project/ProjectArchiver.php +++ b/src/Service/Project/ProjectArchiver.php @@ -18,11 +18,13 @@ public function __construct( private ProjectValidator $validator, private ProjectMapper $mapper, private ExceptionLogger $logger, + private ProjectPersister $persister, ) { } public function softDelete(Project $project): void { + $this->persister->removeProjectFromCategories($project); $this->entityManager->persist($project->setArchivedAt(new \DateTimeImmutable())); $this->entityManager->flush(); } diff --git a/src/Service/Project/ProjectDTO.php b/src/Service/Project/ProjectDTO.php index 35d926b..f918c88 100644 --- a/src/Service/Project/ProjectDTO.php +++ b/src/Service/Project/ProjectDTO.php @@ -8,6 +8,7 @@ public function __construct( private string $name = '', private string $description = '', private ?string $slug = null, + private array $categories = [], ) { } @@ -46,4 +47,16 @@ public function setDescription(string $description): self return $this; } + + public function getCategories(): array + { + return $this->categories; + } + + public function setCategories(array $categories): self + { + $this->categories = $categories; + + return $this; + } } diff --git a/src/Service/Project/ProjectHandler.php b/src/Service/Project/ProjectHandler.php index 66574e3..ea98846 100644 --- a/src/Service/Project/ProjectHandler.php +++ b/src/Service/Project/ProjectHandler.php @@ -28,8 +28,9 @@ public function handleGetProject(?Project $project): JsonResponse null === $project && throw new NotFoundException(ApiMessages::translate(ApiMessages::PROJECT_NOT_FOUND)); - $result = $this->finder->get($project); - $response = new ApiResponse(ProjectMapper::fromEntityToJson($result)); + $projectInfos = $this->finder->get($project); + $result = ProjectMapper::fromEntityToJson($projectInfos); + $response = new ApiResponse($result); } catch (NotFoundException $exception) { $this->logger->logNotice($exception); $response = ApiResponse::createWarningMessage($exception->getMessage()); diff --git a/src/Service/Project/ProjectHelper.php b/src/Service/Project/ProjectHelper.php index fd7b2a4..b8fdd02 100644 --- a/src/Service/Project/ProjectHelper.php +++ b/src/Service/Project/ProjectHelper.php @@ -3,6 +3,7 @@ namespace App\Service\Project; use App\Controller\ProjectController; +use App\Entity\Category; use App\Entity\Project; use App\Exception\BadDataException; use App\Exception\NotFoundException; @@ -22,7 +23,7 @@ public static function isEditRoute(Request $request): bool return ProjectController::ROUTE_EDIT === $request->get('_route'); } - /** @throws NotFoundException */ + /** @throws NotFoundException */ public function editSlugParamExists(Request $request): ?Project { return isset($request->get('_route_params')['slug']) @@ -37,7 +38,7 @@ public static function generateEditSuccessMessage(Request $request): string : ApiMessages::PROJECT_CREATE_SUCCESS_MESSAGE; } - /** @throws NotFoundException|BadDataException */ + /** @throws NotFoundException|BadDataException */ public function validateRequestResource(Request $request, Project $project): void { (self::isEditRoute($request) && (null === $this->editSlugParamExists($request))) @@ -49,6 +50,17 @@ public function validateRequestResource(Request $request, Project $project): voi public static function projectExists(?Project $project): bool { - return (!$project->isArchived()) && (null !== $project); + return (!$project?->isArchived()) && (null !== $project); + } + + public static function getCategoriesArrayFromProject(Project $project): array + { + return array_map( + static fn (Category $category) => [ + 'name' => $category->getName(), + 'slug' => $category->getSlug(), + ], + $project->getCategories()->toArray() + ); } } diff --git a/src/Service/Project/ProjectMapper.php b/src/Service/Project/ProjectMapper.php index 4863d69..1df038d 100644 --- a/src/Service/Project/ProjectMapper.php +++ b/src/Service/Project/ProjectMapper.php @@ -24,6 +24,7 @@ public static function fromEntityToDTO(Project $project): ProjectDTO $project->getName(), $project->getDescription(), $project->getSlug(), + ProjectHelper::getCategoriesArrayFromProject($project) ); } } diff --git a/src/Service/Project/ProjectPersister.php b/src/Service/Project/ProjectPersister.php index abf46b7..06589b5 100644 --- a/src/Service/Project/ProjectPersister.php +++ b/src/Service/Project/ProjectPersister.php @@ -2,6 +2,7 @@ namespace App\Service\Project; +use App\Entity\Category; use App\Entity\Project; use App\Exception\BadDataException; use App\Exception\NotFoundException; @@ -11,7 +12,6 @@ use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\Serializer\SerializerInterface; final class ProjectPersister { @@ -20,7 +20,6 @@ public function __construct( private EntityManagerInterface $em, private ProjectHelper $helper, private ExceptionLogger $logger, - private SerializerInterface $serializer, ) { } @@ -46,14 +45,41 @@ public function processRequest(Project $project, ProjectDTO $dto, Request $reque return $response; } - /** @throws NotFoundException */ - public function persist(?Project $project, ProjectDTO $dto): void + public function persist(Project $project, ProjectDTO $dto): void { $project ->setName($dto->getName()) ->setDescription($dto->getDescription()); + /** @var Category $category */ + foreach ($project->getCategories() as $category) { + $project->removeCategory($category); + $category->removeProject($project); + } + + foreach ($dto->getCategories() as $dtoCategory) { + /** @var Category $category */ + $category = $this->em->getRepository(Category::class)->findOneBySlug($dtoCategory['slug']); + $project->addCategory($category); + $category->addProject($project); + } + $this->em->persist($project); $this->em->flush(); } + + public function removeProjectFromCategories(Project $project): void + { + array_map( + function (Category $category) use ($project) { + $category->removeProject($project); + $project->removeCategory($category); + $this->em->persist($category); + $this->em->persist($project); + }, + $project->getCategories()->toArray() + ); + + $this->em->flush(); + } } diff --git a/src/Service/Project/ProjectValidator.php b/src/Service/Project/ProjectValidator.php index 6b3f954..a5dc1d3 100644 --- a/src/Service/Project/ProjectValidator.php +++ b/src/Service/Project/ProjectValidator.php @@ -6,6 +6,7 @@ use App\Exception\BadDataException; use App\Exception\NotFoundException; use App\Helper\ApiMessages; +use App\Repository\CategoryRepository; use App\Repository\ProjectRepository; final class ProjectValidator @@ -14,24 +15,95 @@ final class ProjectValidator public const NAME_SHOULD_BE_UNIQUE = 'Le projet doit avoir un nom unique'; public const NAME_SHOULD_NOT_BE_EMPTY = 'Le champ Nom ne peut être vide'; public const PROJECT_ALREADY_ARCHIVED = 'Le projet est inexistant ou a déja été supprimé'; + public const CATEGORY_SLUG_INVALID = 'Au moins une des catégories est invalide'; public function __construct( private ProjectRepository $projectRepository, + private CategoryRepository $categoryRepository, ) { } - /** @throws BadDataException*/ + /** @throws BadDataException */ public function validate(ProjectDTO $dto, bool $isEditRoute = true): void { $this ->validateName($dto, $isEditRoute) - ->validateDescriptionNotEmpty($dto->getDescription()); + ->validateDescriptionNotEmpty($dto) + ->validateCategories($dto) + ; + } + + /** @throws BadDataException */ + private function validateCategories(ProjectDTO $dto): self + { + foreach ($dto->getCategories() as $category) { + $this->validateCategory($category); + } + + return $this; + } + + /** @throws BadDataException */ + private function validateCategory(mixed $data): self + { + $this + ->validateCategoryFormat($data) + ->validateCategoryIsNotEmptyString($data) + ->validateCategorySlugIsValidEntity($data); + + return $this; + } + + private function validateCategoryFormat(mixed $data): self + { + (!is_array($data) || !array_key_exists('slug', $data)) + && throw new BadDataException(self::CATEGORY_SLUG_INVALID); + + return $this; + } + + private function validateCategoryIsNotEmptyString(mixed $categorySlug): self + { + (empty($categorySlug['slug']) || !is_string($categorySlug['slug'])) + && throw new BadDataException(self::CATEGORY_SLUG_INVALID); + + return $this; } /** @throws BadDataException */ - private function validateDescriptionNotEmpty(string $description): self + private function validateCategorySlugIsValidEntity(mixed $data): self { - empty($description) && throw new BadDataException(self::DESCRIPTION_SHOULD_NOT_BE_EMPTY); + $slug = $data['slug']; + + $this + ->validateCategoryExists($slug) + ->validateCategoryIsNotArchived($slug); + + return $this; + } + + /** @throws BadDataException */ + private function validateCategoryExists(string $slug): self + { + (null === $this->categoryRepository->findOneBy(['slug' => $slug])) + && throw new NotFoundException(self::CATEGORY_SLUG_INVALID); + + return $this; + } + + /** @throws BadDataException */ + private function validateCategoryIsNotArchived(string $slug): self + { + (null !== $this->categoryRepository->findOneBy(['slug' => $slug])->getArchivedAt()) + && throw new NotFoundException(self::CATEGORY_SLUG_INVALID); + + return $this; + } + + /** @throws BadDataException */ + private function validateDescriptionNotEmpty(ProjectDTO $dto): self + { + empty($dto->getDescription()) && throw new BadDataException(self::DESCRIPTION_SHOULD_NOT_BE_EMPTY); return $this; } @@ -77,15 +149,6 @@ public function validateEditionName(ProjectDTO $dto): self return $this; } - /** @throws BadDataException */ - private function validateNameIsUnique(string $name): self - { - $this->projectRepository->findBy(['name' => $name, 'archivedAt' => null]) - && throw new BadDataException(self::NAME_SHOULD_BE_UNIQUE); - - return $this; - } - /** @throws BadDataException|NotFoundException */ public function validateProjectIsArchivable(?Project $project): self { diff --git a/yarn.lock b/yarn.lock index 252dd0e..d8ba316 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,115 +2,115 @@ # yarn lockfile v1 -"@esbuild/android-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" - integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== - -"@esbuild/android-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" - integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== - -"@esbuild/android-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" - integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== - -"@esbuild/darwin-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" - integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== - -"@esbuild/darwin-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" - integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== - -"@esbuild/freebsd-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" - integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== - -"@esbuild/freebsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" - integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== - -"@esbuild/linux-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" - integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== - -"@esbuild/linux-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" - integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== - -"@esbuild/linux-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" - integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== - -"@esbuild/linux-loong64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" - integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== - -"@esbuild/linux-mips64el@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" - integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== - -"@esbuild/linux-ppc64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" - integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== - -"@esbuild/linux-riscv64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" - integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== - -"@esbuild/linux-s390x@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" - integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== - -"@esbuild/linux-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" - integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== - -"@esbuild/netbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" - integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== - -"@esbuild/openbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" - integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== - -"@esbuild/sunos-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" - integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== - -"@esbuild/win32-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" - integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== - -"@esbuild/win32-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" - integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== - -"@esbuild/win32-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" - integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== +"@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + +"@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + +"@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + +"@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + +"@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + +"@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + +"@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + +"@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + +"@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + +"@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + +"@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + +"@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + +"@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + +"@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + +"@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + +"@esbuild/linux-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" + integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== + +"@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + +"@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + +"@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + +"@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== + +"@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== + +"@esbuild/win32-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" + integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== "@octokit/auth-token@^3.0.0": version "3.0.4" @@ -149,9 +149,9 @@ universal-user-agent "^6.0.0" "@octokit/openapi-types@^18.0.0": - version "18.0.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-18.0.0.tgz#f43d765b3c7533fd6fb88f3f25df079c24fccf69" - integrity sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw== + version "18.1.1" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-18.1.1.tgz#09bdfdabfd8e16d16324326da5148010d765f009" + integrity sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw== "@octokit/plugin-paginate-rest@^6.1.2": version "6.1.2" @@ -224,9 +224,9 @@ "@octokit/openapi-types" "^18.0.0" "@polka/url@^1.0.0-next.20": - version "1.0.0-next.21" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" - integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== + version "1.0.0-next.23" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.23.tgz#498e41218ab3b6a1419c735e5c6ae2c5ed609b6c" + integrity sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg== asynckit@^0.4.0: version "0.4.0" @@ -234,9 +234,9 @@ asynckit@^0.4.0: integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== axios@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" - integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== + version "1.5.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.5.1.tgz#11fbaa11fc35f431193a9564109c88c1f27b585f" + integrity sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" @@ -271,38 +271,38 @@ deprecation@^2.0.0: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== -esbuild@^0.17.5: - version "0.17.19" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" - integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== +esbuild@^0.18.10: + version "0.18.20" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" + integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== optionalDependencies: - "@esbuild/android-arm" "0.17.19" - "@esbuild/android-arm64" "0.17.19" - "@esbuild/android-x64" "0.17.19" - "@esbuild/darwin-arm64" "0.17.19" - "@esbuild/darwin-x64" "0.17.19" - "@esbuild/freebsd-arm64" "0.17.19" - "@esbuild/freebsd-x64" "0.17.19" - "@esbuild/linux-arm" "0.17.19" - "@esbuild/linux-arm64" "0.17.19" - "@esbuild/linux-ia32" "0.17.19" - "@esbuild/linux-loong64" "0.17.19" - "@esbuild/linux-mips64el" "0.17.19" - "@esbuild/linux-ppc64" "0.17.19" - "@esbuild/linux-riscv64" "0.17.19" - "@esbuild/linux-s390x" "0.17.19" - "@esbuild/linux-x64" "0.17.19" - "@esbuild/netbsd-x64" "0.17.19" - "@esbuild/openbsd-x64" "0.17.19" - "@esbuild/sunos-x64" "0.17.19" - "@esbuild/win32-arm64" "0.17.19" - "@esbuild/win32-ia32" "0.17.19" - "@esbuild/win32-x64" "0.17.19" + "@esbuild/android-arm" "0.18.20" + "@esbuild/android-arm64" "0.18.20" + "@esbuild/android-x64" "0.18.20" + "@esbuild/darwin-arm64" "0.18.20" + "@esbuild/darwin-x64" "0.18.20" + "@esbuild/freebsd-arm64" "0.18.20" + "@esbuild/freebsd-x64" "0.18.20" + "@esbuild/linux-arm" "0.18.20" + "@esbuild/linux-arm64" "0.18.20" + "@esbuild/linux-ia32" "0.18.20" + "@esbuild/linux-loong64" "0.18.20" + "@esbuild/linux-mips64el" "0.18.20" + "@esbuild/linux-ppc64" "0.18.20" + "@esbuild/linux-riscv64" "0.18.20" + "@esbuild/linux-s390x" "0.18.20" + "@esbuild/linux-x64" "0.18.20" + "@esbuild/netbsd-x64" "0.18.20" + "@esbuild/openbsd-x64" "0.18.20" + "@esbuild/sunos-x64" "0.18.20" + "@esbuild/win32-arm64" "0.18.20" + "@esbuild/win32-ia32" "0.18.20" + "@esbuild/win32-x64" "0.18.20" follow-redirects@^1.15.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + version "1.15.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== form-data@^4.0.0: version "4.0.0" @@ -314,9 +314,9 @@ form-data@^4.0.0: mime-types "^2.1.12" fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== is-plain-object@^5.0.0: version "5.0.0" @@ -351,9 +351,9 @@ nanoid@^3.3.6: integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== node-fetch@^2.6.7: - version "2.6.11" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" - integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" @@ -369,10 +369,10 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -postcss@^8.4.23: - version "8.4.24" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.24.tgz#f714dba9b2284be3cc07dbd2fc57ee4dc972d2df" - integrity sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg== +postcss@^8.4.27: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: nanoid "^3.3.6" picocolors "^1.0.0" @@ -383,10 +383,10 @@ proxy-from-env@^1.1.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== -rollup@^3.21.0: - version "3.25.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.25.1.tgz#9fff79d22ff1a904b2b595a2fb9bc3793cb987d8" - integrity sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ== +rollup@^3.27.1: + version "3.29.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" + integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== optionalDependencies: fsevents "~2.3.2" @@ -420,9 +420,9 @@ universal-user-agent@^6.0.0: integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== vite-plugin-mkcert@^1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/vite-plugin-mkcert/-/vite-plugin-mkcert-1.15.0.tgz#629da7cf77f15af65ebd8d476d1f68af901874d4" - integrity sha512-0Pz7iExvo7pS2HsxMe6Y/HIrsFJidXN8Sju7tsL1XYQdbUKb/D0L5Wkj3UoGQmbbWZUFf8nHHa0XYbd4FH6ZrA== + version "1.16.0" + resolved "https://registry.yarnpkg.com/vite-plugin-mkcert/-/vite-plugin-mkcert-1.16.0.tgz#f02cce5747295dd3d8b1958b920bb6b9b7fdace8" + integrity sha512-5r+g8SB9wZzLNUFekGwZo3e0P6QlS6rbxK5p9z/itxNAimsYohgjK/YfVPVxM9EuglP9hjridq0lUejo9v1nVg== dependencies: "@octokit/rest" "^19.0.5" axios "^1.2.2" @@ -438,13 +438,13 @@ vite-plugin-symfony@^0.7.2: sirv "^2.0.2" vite@^4.0: - version "4.3.9" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.3.9.tgz#db896200c0b1aa13b37cdc35c9e99ee2fdd5f96d" - integrity sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg== + version "4.5.0" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.0.tgz#ec406295b4167ac3bc23e26f9c8ff559287cff26" + integrity sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw== dependencies: - esbuild "^0.17.5" - postcss "^8.4.23" - rollup "^3.21.0" + esbuild "^0.18.10" + postcss "^8.4.27" + rollup "^3.27.1" optionalDependencies: fsevents "~2.3.2"