diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..e8b25b5 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v18.14.2 \ No newline at end of file diff --git a/README.md b/README.md index 67006b4..9ab0224 100644 --- a/README.md +++ b/README.md @@ -15,16 +15,17 @@ Emotions는 자신의 감정을 마크다운 형식으로 기록할 수 있는 5. Nest.js에서 class-transformer, class-validator, plainToInstance를 통해서 dto를 요청과 응답에서 알맞는 타입의 값을 받을 수 있게 했습니다. -6. 댓글을 2단계까지 구성하였고, 그 이후로는 mention으로 처리하였습니다. - 또한 parentId값을 통해서 한 번의 query 요청으로 댓글들을 받아오고, - 이후 Map을 통해 group화하는 방식을 사용했습니다. +6. 댓글을 2단계까지 구성하였고, 그 이후로는 mention으로 처리하였습니다. 또한 parentId값을 통해서 한 번의 query 요청으로 댓글들을 받아오고, 이후 Map을 통해 group화하는 방식을 사용했습니다. + +7. AWS SES(Simple Email Service)를 통해서 댓글이나 답글이 달릴 시, 경우에 따라 Post Author이나 Commenter, Mention User에게 Notification Email을 보냅니다. ## `Sturcture` -- Deploy: AWS EC2 Ubuntu, NGINX, Docker, PM2, Git Actions -- DB: Superbase + Postgresql, AWS S3 -- Client: React + Vite - Server: Nest +- Client: React + Vite +- Deploy: AWS EC2 Ubuntu, NGINX, Docker, PM2, Git Actions +- DB: Superbase + Postgresql +- ETC: AWS S3, AWS SES, Google Analytics ## `Website Link` @@ -42,8 +43,8 @@ Emotions는 자신의 감정을 마크다운 형식으로 기록할 수 있는 - Postgresql - Passport - JWT + Cookie + - AWS S3, AWS SES - PM2 - - AWS - Frontend - React diff --git a/packages/client/src/GlobalStyle.tsx b/packages/client/src/GlobalStyle.tsx index cf132a9..38d5d5a 100644 --- a/packages/client/src/GlobalStyle.tsx +++ b/packages/client/src/GlobalStyle.tsx @@ -37,9 +37,17 @@ export const GlobalStyle = () => { font-weight: normal; font-style: normal; } + @font-face { + font-family: 'Pretendard'; + src: url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.5/dist/web/static/pretendard.css'); + font-weight: normal; + font-style: normal; + } + body { - font-family: 'Roboto', sans-serif; + font-family: 'Pretendard', sans-serif; } + // 모바일에서 tap highlight 제거 // transparent로 하면 안됨 (투명하게 보이는 경우가 있음) * { diff --git a/packages/client/src/components/common/Toggle/Toggle.styles.ts b/packages/client/src/components/common/Toggle/Toggle.styles.ts new file mode 100644 index 0000000..4a2e293 --- /dev/null +++ b/packages/client/src/components/common/Toggle/Toggle.styles.ts @@ -0,0 +1,124 @@ +import { NormalColorType, palette } from '~/lib/styles'; +import styled from '@emotion/styled'; +import { css } from '@emotion/react'; + +export const ToggleLabel = styled.label<{ variant: 'sm' | 'lg' }>` + display: flex; + align-items: center; + + ${({ variant }) => + variant === 'sm' && + css` + gap: 0.5rem; + `} + ${({ variant }) => + variant === 'lg' && + css` + gap: 1rem; + `} +`; + +export const ToggleSwitch = styled.span<{ variant: 'sm' | 'lg' }>` + position: relative; + display: flex; + align-items: center; + background-color: ${palette.gray}; + cursor: pointer; + transition: background-color 0.2s ease; + + ${({ variant }) => + variant === 'sm' && + css` + width: 2.5rem; + height: 1.5rem; + border-radius: 1rem; + `} + ${({ variant }) => + variant === 'lg' && + css` + width: 5rem; + height: 3rem; + border-radius: 2rem; + `} + + &::after { + content: ''; + position: absolute; + display: inline-block; + border-radius: 50%; + background-color: ${palette.white}; + transition: transform 0.2s ease, background-color 0.2s ease; + + ${({ variant }) => + variant === 'sm' && + css` + width: 1rem; + height: 1rem; + `} + ${({ variant }) => + variant === 'lg' && + css` + width: 2rem; + height: 2rem; + `} + } +`; + +export const ToggleText = styled.span<{ variant: 'sm' | 'lg' }>` + user-select: none; + + ${({ variant }) => + variant === 'sm' && + css` + font-size: 1rem; + line-height: 1rem; + `} + ${({ variant }) => + variant === 'lg' && + css` + font-size: 2rem; + line-height: 2rem; + `} +`; + +export const ToggleCheckbox = styled.input<{ + color: NormalColorType; + variant: 'sm' | 'lg'; +}>` + display: none; + + // Switch Off + & ~ ${ToggleSwitch} { + &::after { + ${({ variant }) => + variant === 'sm' && + css` + transform: translateX(0.3rem); + `} + ${({ variant }) => + variant === 'lg' && + css` + transform: translateX(0.6rem); + `} + } + } + + // Switch On + &:checked { + & ~ ${ToggleSwitch} { + background-color: ${({ color }) => palette[color]}; + &::after { + ${({ variant }) => + variant === 'sm' && + css` + transform: translateX(1.2rem); + `} + ${({ variant }) => + variant === 'lg' && + css` + transform: translateX(2.4rem); + `} + } + } + } +`; diff --git a/packages/client/src/components/common/Toggle/Toggle.tsx b/packages/client/src/components/common/Toggle/Toggle.tsx new file mode 100644 index 0000000..ba2aa0f --- /dev/null +++ b/packages/client/src/components/common/Toggle/Toggle.tsx @@ -0,0 +1,48 @@ +import { forwardRef, InputHTMLAttributes } from 'react'; +import { NormalColorType } from '~/lib/styles'; +import * as S from './Toggle.styles'; + +export interface ToggleProps extends InputHTMLAttributes { + labelText?: string; + color?: NormalColorType; + variant?: 'sm' | 'lg'; +} + +/** + * @example + * ```tsx + * + * + * + * + * + * ``` + * @example + * ```tsx + * + * + * + * + * + * ``` + */ +const Toggle = forwardRef(function Toggle( + { labelText = '', color = 'primary', variant = 'sm', ...options }, + ref, +) { + return ( + + {labelText} + + + + ); +}); + +export default Toggle; diff --git a/packages/client/src/components/common/index.ts b/packages/client/src/components/common/index.ts index e9b3ad7..1f47e50 100644 --- a/packages/client/src/components/common/index.ts +++ b/packages/client/src/components/common/index.ts @@ -4,3 +4,4 @@ export { default as LoadingSpinner } from './LoadingSpinner/LoadingSpinner'; export { default as Modal } from './Modal/Modal'; export { default as Avatar } from './Avatar/Avatar'; export { default as ProgressBar } from './ProgressBar/ProgressBar'; +export { default as Toggle } from './Toggle/Toggle'; diff --git a/packages/client/src/components/setting/EmailEditor.tsx b/packages/client/src/components/setting/EmailEditor.tsx new file mode 100644 index 0000000..ced6f06 --- /dev/null +++ b/packages/client/src/components/setting/EmailEditor.tsx @@ -0,0 +1,86 @@ +import styled from '@emotion/styled'; +import { useEffect, useRef } from 'react'; +import { mediaQuery } from '~/lib/styles'; +import { Button } from '../common'; + +interface Props { + isEmailEdit: boolean; + nextEmail: string; + onChangeNextEmail: (e: React.ChangeEvent) => void; + onEdit: () => void; + onCancel: () => void; +} + +const EmailEditor = ({ + isEmailEdit, + nextEmail, + onChangeNextEmail, + onEdit, + onCancel, +}: Props) => { + const inputRef = useRef(null); + useEffect(() => { + if (isEmailEdit) { + inputRef.current?.focus(); + } + }, [isEmailEdit]); + + return ( + + + + + + + + ); +}; + +const Container = styled.div` + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + width: 100%; + gap: 0.5rem; + ${mediaQuery.mobile} { + flex-direction: row; + } +`; + +const ButtonsWrapper = styled.div` + display: flex; + gap: 0.5rem; + width: 100%; + align-items: center; + justify-content: flex-end; + ${mediaQuery.mobile} { + width: auto; + justify-content: center; + } +`; + +const Input = styled.input` + width: 100%; + height: 100%; + padding: 0.5rem; + background: transparent; + border-bottom: 2px solid #b4b4b4; + outline: none; + font-size: 1rem; + transition: border-bottom 0.1s ease-in-out; + &:focus { + border-bottom: 2px solid #ffb049; + } +`; + +export default EmailEditor; diff --git a/packages/client/src/constants/properties.ts b/packages/client/src/constants/properties.ts index ca872fa..a7c5328 100644 --- a/packages/client/src/constants/properties.ts +++ b/packages/client/src/constants/properties.ts @@ -12,6 +12,8 @@ export const API_URL = { USER: { GET_ME: `/users/me`, GET_USER_BY_USERNAME: (username: string) => `/users/${username}`, + UPDATE_EMAIL: `/users/email`, + UPDATE_EMAIL_NOTIFICATION: `/users/email-notification`, }, POST: { GET_POSTS: (cursor?: string) => diff --git a/packages/client/src/hooks/queries/user/index.ts b/packages/client/src/hooks/queries/user/index.ts index 06ec628..5857e21 100644 --- a/packages/client/src/hooks/queries/user/index.ts +++ b/packages/client/src/hooks/queries/user/index.ts @@ -1,2 +1,4 @@ export { default as useGetMe } from './useGetMe'; export { default as useGetUserByUsername } from './useGetUserByUsername'; +export { default as useUpdateEmail } from './useUpdateEmail'; +export { default as useUpdateEmailNotification } from './useUpdateEmailNotification'; diff --git a/packages/client/src/hooks/queries/user/useUpdateEmail.ts b/packages/client/src/hooks/queries/user/useUpdateEmail.ts new file mode 100644 index 0000000..66981d4 --- /dev/null +++ b/packages/client/src/hooks/queries/user/useUpdateEmail.ts @@ -0,0 +1,11 @@ +import { UserAPI } from '~/lib/api'; +import { useMutation } from '@tanstack/react-query'; +import type { UseMutationOptionsOf } from '~/hooks/queries/types'; + +const useUpdateEmail = ( + options: UseMutationOptionsOf = {}, +) => { + return useMutation(UserAPI.updateEmail, options); +}; + +export default useUpdateEmail; diff --git a/packages/client/src/hooks/queries/user/useUpdateEmailNotification.ts b/packages/client/src/hooks/queries/user/useUpdateEmailNotification.ts new file mode 100644 index 0000000..92dcd06 --- /dev/null +++ b/packages/client/src/hooks/queries/user/useUpdateEmailNotification.ts @@ -0,0 +1,11 @@ +import { UserAPI } from '~/lib/api'; +import { useMutation } from '@tanstack/react-query'; +import type { UseMutationOptionsOf } from '~/hooks/queries/types'; + +const useUpdateEmailNotification = ( + options: UseMutationOptionsOf = {}, +) => { + return useMutation(UserAPI.updateEmailNotification, options); +}; + +export default useUpdateEmailNotification; diff --git a/packages/client/src/lib/api/user.api.ts b/packages/client/src/lib/api/user.api.ts index 9ad93ea..03de7f1 100644 --- a/packages/client/src/lib/api/user.api.ts +++ b/packages/client/src/lib/api/user.api.ts @@ -1,5 +1,9 @@ import { API_URL } from '~/constants'; -import { User } from '~/lib/types'; +import { + UpdateEmailParams, + UpdateEmailNotificationParams, + User, +} from '~/lib/types'; import apiClient from './apiClient'; export const UserAPI = { @@ -14,4 +18,19 @@ export const UserAPI = { ); return data; }, + + updateEmail: async (params: UpdateEmailParams): Promise => { + const { data } = await apiClient.patch(API_URL.USER.UPDATE_EMAIL, params); + return data; + }, + + updateEmailNotification: async ( + params: UpdateEmailNotificationParams, + ): Promise => { + const { data } = await apiClient.patch( + API_URL.USER.UPDATE_EMAIL_NOTIFICATION, + params, + ); + return data; + }, }; diff --git a/packages/client/src/lib/styles/shared.ts b/packages/client/src/lib/styles/shared.ts index 17ed490..cb0ff5c 100644 --- a/packages/client/src/lib/styles/shared.ts +++ b/packages/client/src/lib/styles/shared.ts @@ -1,10 +1 @@ -import { css } from '@emotion/react'; - -export const glassmorphism = css` - background: rgba(255, 255, 255, 0.25); - box-shadow: 0 2px 12px 0 rgba(100, 100, 100, 0.3); - backdrop-filter: blur(4px); - -webkit-backdrop-filter: blur(4px); - border-radius: 10px; - border: 1px solid rgba(255, 255, 255, 0.18); -`; +export {}; diff --git a/packages/client/src/lib/types/user.ts b/packages/client/src/lib/types/user.ts index b8f9a80..31c8375 100644 --- a/packages/client/src/lib/types/user.ts +++ b/packages/client/src/lib/types/user.ts @@ -2,5 +2,15 @@ export interface User { id: string; username: string; displayName: string; + email: string | null; + emailNotification: boolean; profileImage: string | null; } + +export interface UpdateEmailParams { + email?: string | null; +} + +export interface UpdateEmailNotificationParams { + enabled: boolean; +} diff --git a/packages/client/src/pages/SearchPage.tsx b/packages/client/src/pages/SearchPage.tsx index 0303d17..ab5e864 100644 --- a/packages/client/src/pages/SearchPage.tsx +++ b/packages/client/src/pages/SearchPage.tsx @@ -1,6 +1,6 @@ // components import styled from '@emotion/styled'; -import { useState } from 'react'; +import { useEffect, useState } from 'react'; import { TextInput } from '~/components/common'; import PostCard from '~/components/home/PostCard'; import TabLayout from '~/components/layouts/TabLayout'; @@ -21,6 +21,10 @@ const SearchPage = () => { enabled: !!debouncedText, }); + useEffect(() => { + window.scrollTo(0, 0); + }, []); + return ( diff --git a/packages/client/src/pages/SeriesPage.tsx b/packages/client/src/pages/SeriesPage.tsx index d96728a..388391d 100644 --- a/packages/client/src/pages/SeriesPage.tsx +++ b/packages/client/src/pages/SeriesPage.tsx @@ -9,7 +9,6 @@ import SeriesContentsSkeleton from '~/components/series/skeleton/SeriesContentsS import { mediaQuery } from '~/lib/styles'; import SeriesPageErrorFallback from '../components/user/SeriesPageErrorFallback'; -//TODO: fallback 보완 const SeriesPage = () => { const { username, seriesName } = useParams() as { username: string; diff --git a/packages/client/src/pages/SettingPage.tsx b/packages/client/src/pages/SettingPage.tsx index e12dd8e..313eeea 100644 --- a/packages/client/src/pages/SettingPage.tsx +++ b/packages/client/src/pages/SettingPage.tsx @@ -7,34 +7,127 @@ import useUser from '~/hooks/useUser'; // components import styled from '@emotion/styled'; -import { Button } from '~/components/common'; +import { Button, Toggle } from '~/components/common'; import TabLayout from '~/components/layouts/TabLayout'; import { GithubIcon } from '~/components/vectors'; -import { glassmorphism } from '~/lib/styles'; +import { useEffect, useState } from 'react'; +import { mediaQuery } from '~/lib/styles'; +import { + useGetMe, + useUpdateEmail, + useUpdateEmailNotification, +} from '~/hooks/queries/user'; +import { extractError } from '~/lib/error'; +import { useQueryClient } from '@tanstack/react-query'; +import EmailEditor from '~/components/setting/EmailEditor'; const SettingPage = () => { const user = useUser(); const handleGithubLogin = () => { window.location.href = GITHUB_OAUTH_LOGIN_URL; }; - + const queryClient = useQueryClient(); const logout = useLogout(); + const [isEditEmail, setIsEditEmail] = useState(false); + const [nextEmail, setNextEmail] = useState(''); + + useEffect(() => { + window.scrollTo(0, 0); + }, []); + + const { mutate: updateEmail } = useUpdateEmail(); + + const { mutate: updateEmailNotification } = useUpdateEmailNotification(); + + const handleChangeEmailNotification = ( + e: React.ChangeEvent, + ) => { + updateEmailNotification( + { enabled: e.target.checked }, + { + onSuccess: async () => { + await queryClient.refetchQueries(useGetMe.getKey()); + }, + onError: (e) => { + const error = extractError(e); + alert(error.message); + }, + }, + ); + }; + + const handleEditEmail = () => { + setIsEditEmail(true); + }; + + const handleCancelEditEmail = () => { + setIsEditEmail(false); + }; + + const handleConfirmEditEmail = () => { + updateEmail( + // if nextEmail is empty string, set null + // because empty string is not valid email + { email: nextEmail === '' ? null : nextEmail }, + { + onSuccess: async () => { + await queryClient.refetchQueries(useGetMe.getKey()); + setIsEditEmail(false); + }, + onError: (e) => { + const error = extractError(e); + alert(error.message); + }, + }, + ); + }; + + const handleChangeNextEmail = (e: React.ChangeEvent) => { + setNextEmail(e.target.value); + }; return ( {user ? ( - My Account - Username: {user?.username} - Displayname: {user?.displayName} + Profile + {user?.username} + {user?.displayName} + {isEditEmail ? ( + + ) : ( + + + Email: {user?.email || 현재 존재하지 않습니다.} + + + + )} + ) : ( - Not Logged In { - Posts - Series - About + + Posts + + + Series + @@ -40,20 +43,20 @@ const UserLayout = () => { const TabsWrapper = styled.div` display: flex; justify-content: space-between; - border-radius: 1rem; overflow: hidden; - margin-bottom: 16px; width: 100%; + margin-top: 2rem; + margin-bottom: 2rem; ${mediaQuery.tablet} { width: 50%; + border-radius: 1rem; } height: 50px; background-color: #f5f5f5; font-size: 1.5rem; - margin-top: 2rem; `; -const TabItem = styled(Link)` +const TabItem = styled(NavLink)` display: flex; align-items: center; justify-content: center; @@ -65,6 +68,9 @@ const TabItem = styled(Link)` &:hover { background-color: #e5e5e5; } + &.active { + background-color: #e3e3e3; + } `; const UserProfileContainer = styled.div` diff --git a/packages/client/src/pages/user/UserPage.tsx b/packages/client/src/pages/user/UserPage.tsx index 4bd3d54..33dad4d 100644 --- a/packages/client/src/pages/user/UserPage.tsx +++ b/packages/client/src/pages/user/UserPage.tsx @@ -1,5 +1,4 @@ import { Route, Routes } from 'react-router-dom'; -import UserAboutTab from './tabs/UserAboutTab'; import UserPostsTab from './tabs/UserPostsTab'; import UserSeriesTab from './tabs/UserSeriesTab'; import { QueryErrorResetBoundary } from '@tanstack/react-query'; @@ -31,7 +30,6 @@ const UserPage = () => { }> } /> - } /> } /> diff --git a/packages/client/src/pages/user/tabs/UserAboutTab.tsx b/packages/client/src/pages/user/tabs/UserAboutTab.tsx deleted file mode 100644 index 2b5b265..0000000 --- a/packages/client/src/pages/user/tabs/UserAboutTab.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const UserAboutTab = () => { - return
UserAboutTab
; -}; - -export default UserAboutTab; diff --git a/packages/server/.env.example b/packages/server/.env.example index d8262a8..b2fad67 100644 --- a/packages/server/.env.example +++ b/packages/server/.env.example @@ -17,4 +17,9 @@ ACCESS_TOKEN_DURATION= AWS_S3_ACCESS_KEY= AWS_S3_SECRET_KEY= AWS_S3_REGION=ap-northeast-2 -AWS_S3_BUCKET=wap-dev \ No newline at end of file +AWS_S3_BUCKET=wap-dev + +# aws-ses +AWS_SES_REGION=ap-northeast-2 +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= \ No newline at end of file diff --git a/packages/server/package.json b/packages/server/package.json index 8e16521..e21bf78 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -19,6 +19,7 @@ }, "dependencies": { "@aws-sdk/client-s3": "^3.264.0", + "@aws-sdk/client-ses": "^3.282.0", "@nestjs/common": "^9.0.0", "@nestjs/config": "^2.2.0", "@nestjs/core": "^9.0.0", @@ -26,12 +27,13 @@ "@nestjs/passport": "^9.0.0", "@nestjs/platform-express": "^9.0.0", "@nestjs/swagger": "^6.1.4", - "@prisma/client": "^4.10.1", + "@prisma/client": "^4.11.0", "@types/cookie-parser": "^1.4.3", "axios": "^1.2.2", "class-transformer": "^0.5.1", "class-validator": "^0.14.0", "cookie-parser": "^1.4.6", + "date-fns": "^2.29.3", "helmet": "^6.0.1", "nanoid": "3.3.4", "passport": "^0.6.0", @@ -53,8 +55,10 @@ "@types/passport-github2": "^1.2.5", "@types/passport-jwt": "^3.0.8", "@types/remove-markdown": "^0.3.1", + "@types/sanitize-html": "^2.8.1", "@types/supertest": "^2.0.11", "pm2": "^5.2.2", + "sanitize-html": "^2.10.0", "source-map-support": "^0.5.20", "supertest": "^6.1.3", "ts-jest": "28.0.8", diff --git a/packages/server/prisma/schema.prisma b/packages/server/prisma/schema.prisma index af6497a..9e04f60 100644 --- a/packages/server/prisma/schema.prisma +++ b/packages/server/prisma/schema.prisma @@ -15,11 +15,12 @@ datasource db { } model User { - id String @id() @default(uuid()) - username String @unique - displayName String - // shortBio String? - profileImage String? + id String @id() @default(uuid()) + username String @unique + displayName String + email String? @unique + emailNotification Boolean @default(true) + profileImage String? createdAt DateTime @default(now()) updatedAt DateTime @default(now()) @updatedAt diff --git a/packages/server/src/app.module.ts b/packages/server/src/app.module.ts index 19a65ae..99e8104 100644 --- a/packages/server/src/app.module.ts +++ b/packages/server/src/app.module.ts @@ -16,7 +16,7 @@ import { AppErrorExceptionFilter } from './common/filter'; import { JwtGuard } from './common/guards'; // provider modules -import { S3Module } from './providers'; +import { S3Module, SESModule } from './providers'; // main modules import { @@ -46,6 +46,7 @@ import { SeriesModule, // provider modules S3Module, + SESModule, ], controllers: [AppController], providers: [ diff --git a/packages/server/src/config/env.config.ts b/packages/server/src/config/env.config.ts index 8839641..5caee56 100644 --- a/packages/server/src/config/env.config.ts +++ b/packages/server/src/config/env.config.ts @@ -10,4 +10,7 @@ export default () => ({ AWS_S3_SECRET_KEY: process.env.AWS_S3_SECRET_KEY, AWS_S3_REGION: process.env.AWS_S3_REGION || 'ap-northeast-2', AWS_S3_BUCKET: process.env.AWS_S3_BUCKET || 'wap-dev-store', + + // aws-ses + AWS_SES_REGION: process.env.AWS_SES_REGION || 'ap-northeast-2', }); diff --git a/packages/server/src/modules/auth/strategies/github.strategy.ts b/packages/server/src/modules/auth/strategies/github.strategy.ts index 81b4257..6960d3e 100644 --- a/packages/server/src/modules/auth/strategies/github.strategy.ts +++ b/packages/server/src/modules/auth/strategies/github.strategy.ts @@ -33,7 +33,7 @@ export class GithubStrategy extends PassportStrategy(Strategy, 'github') { profile: any, done: any, ) { - const { login, name, avatar_url }: GithubProfileType = profile._json; + const { login, name, avatar_url, email }: GithubProfileType = profile._json; try { const exUser = await this.prisma.user.findUnique({ where: { @@ -50,7 +50,7 @@ export class GithubStrategy extends PassportStrategy(Strategy, 'github') { data: { username: login, displayName: name ?? login, - //TODO: image를 arraybuffer나 stream으로 받아서 저장해보기 + email, profileImage: avatar_url, }, }); diff --git a/packages/server/src/modules/comments/comments.controller.ts b/packages/server/src/modules/comments/comments.controller.ts index 1d895b3..5be07a2 100644 --- a/packages/server/src/modules/comments/comments.controller.ts +++ b/packages/server/src/modules/comments/comments.controller.ts @@ -16,9 +16,7 @@ export class CommentsController { @GetCurrentUser('userId') userId: string, ): Promise { const comment = await this.commentsService.createComment(dto, userId); - return plainToInstance(CommentDto, comment, { - excludeExtraneousValues: true, - }); + return plainToInstance(CommentDto, comment); } @Delete(':id') diff --git a/packages/server/src/modules/comments/comments.module.ts b/packages/server/src/modules/comments/comments.module.ts index d7b6081..3a6a33f 100644 --- a/packages/server/src/modules/comments/comments.module.ts +++ b/packages/server/src/modules/comments/comments.module.ts @@ -3,10 +3,10 @@ import { CommentsService } from './comments.service'; import { CommentsController } from './comments.controller'; import { CommentsRepository } from './comments.repository'; import { PostsRepository } from '../posts/posts.repository'; -import { S3Service } from '~/providers/aws/s3/s3.service'; +import { SESService } from '~/providers/aws/ses/ses.service'; @Module({ controllers: [CommentsController], - providers: [CommentsService, CommentsRepository, PostsRepository, S3Service], + providers: [CommentsService, CommentsRepository, PostsRepository, SESService], }) export class CommentsModule {} diff --git a/packages/server/src/modules/comments/comments.repository.ts b/packages/server/src/modules/comments/comments.repository.ts index 9dc1145..ee68513 100644 --- a/packages/server/src/modules/comments/comments.repository.ts +++ b/packages/server/src/modules/comments/comments.repository.ts @@ -131,6 +131,8 @@ const commentSelector = { select: { id: true, username: true, + email: true, + emailNotification: true, displayName: true, profileImage: true, }, @@ -139,6 +141,7 @@ const commentSelector = { select: { id: true, username: true, + email: true, displayName: true, profileImage: true, }, diff --git a/packages/server/src/modules/comments/comments.service.ts b/packages/server/src/modules/comments/comments.service.ts index a866451..18640e5 100644 --- a/packages/server/src/modules/comments/comments.service.ts +++ b/packages/server/src/modules/comments/comments.service.ts @@ -4,12 +4,14 @@ import { CommentsRepository } from './comments.repository'; import { Comment } from '@prisma/client'; import { PostsRepository } from '../posts/posts.repository'; import { AppErrorException } from '~/common/exceptions'; +import { SESService } from '~/providers/aws/ses/ses.service'; @Injectable() export class CommentsService { constructor( private readonly commentRepository: CommentsRepository, private readonly postRepository: PostsRepository, + private readonly sesService: SESService, ) {} async getComment(id: string) { @@ -87,6 +89,9 @@ export class CommentsService { } async createComment(dto: CreateCommentDto, userId: string) { + const post = await this.postRepository.findPostById(dto.postId); + if (!post) throw new AppErrorException('NotFound', 'Post not found'); + if (dto.text.length > 300 || dto.text.length === 0) { throw new AppErrorException( 'BadRequest', @@ -121,6 +126,67 @@ export class CommentsService { await this.countAndSyncComments(dto.postId); + // notify to post author and parent comment author + + try { + const nofifyToPostAuthor = async () => { + if (!post.user.email) return; // don't notify to user who doesn't have email + if (post.user.id === userId) return; // don't notify to myself + + const body = this.sesService.createCommentEmail({ + postAuthor: post.user.username, + postTitle: post.title, + postSlug: post.slug, + commentUsername: comment.user.username, + profileImage: comment.user.profileImage, + commentText: comment.text, + }); + + await this.sesService.sendEmail({ + to: post.user.email, + subject: `Re: ${post.title} - New Comment On Your Post!`, + body, + from: `no-reply@wap-dev.store`, + }); + }; + const notifyToParentCommenter = async () => { + let to: string; + if (comment.mentionUser) { + if (!comment.mentionUser.email) return; // don't notify to user who doesn't have email + if (comment.mentionUser.id === userId) return; // don't notify to myself + + to = comment.mentionUser.email; + } else if (parentComment) { + if (!parentComment.user.email) return; // don't notify to user who doesn't have email + if (parentComment.user.id === userId) return; // don't notify to myself + + to = parentComment.user.email; + } else { + return; // don't notify if it's root comment + } + + const body = this.sesService.createCommentEmail({ + postAuthor: post.user.username, + postTitle: post.title, + postSlug: post.slug, + commentUsername: comment.user.username, + profileImage: comment.user.profileImage, + commentText: comment.text, + }); + + await this.sesService.sendEmail({ + to, + subject: `Re: ${post.title} - New Reply On Your Comment!`, + body, + from: `no-reply@wap-dev.store`, + }); + }; + + await Promise.all([nofifyToPostAuthor(), notifyToParentCommenter()]); + } catch (error) { + console.log(error); + } + return { ...comment, isDeleted: false, subcomments: [], isLiked: false }; } diff --git a/packages/server/src/modules/comments/dto/comment-list-response.dto.ts b/packages/server/src/modules/comments/dto/comment-list-response.dto.ts index dee786e..6af27ca 100644 --- a/packages/server/src/modules/comments/dto/comment-list-response.dto.ts +++ b/packages/server/src/modules/comments/dto/comment-list-response.dto.ts @@ -1,6 +1,7 @@ -import { Expose, Type } from 'class-transformer'; +import { Exclude, Expose, Type } from 'class-transformer'; import { CommentDto } from './comment.dto'; +@Exclude() export class CommentListResponseDto { @Expose() @Type(() => CommentDto) diff --git a/packages/server/src/modules/comments/dto/comment.dto.ts b/packages/server/src/modules/comments/dto/comment.dto.ts index 6ecaa1c..d2fa4c6 100644 --- a/packages/server/src/modules/comments/dto/comment.dto.ts +++ b/packages/server/src/modules/comments/dto/comment.dto.ts @@ -1,6 +1,7 @@ -import { Expose, Type } from 'class-transformer'; +import { Exclude, Expose, Type } from 'class-transformer'; import { UserDto } from '~/modules/users/dto'; +@Exclude() export class CommentDto { @Expose() id: string; diff --git a/packages/server/src/modules/posts/dto/get-search-posts-query.dtp.ts b/packages/server/src/modules/posts/dto/get-search-posts-query.dto.ts similarity index 100% rename from packages/server/src/modules/posts/dto/get-search-posts-query.dtp.ts rename to packages/server/src/modules/posts/dto/get-search-posts-query.dto.ts diff --git a/packages/server/src/modules/posts/dto/index.ts b/packages/server/src/modules/posts/dto/index.ts index d8e54f0..84a8ce1 100644 --- a/packages/server/src/modules/posts/dto/index.ts +++ b/packages/server/src/modules/posts/dto/index.ts @@ -4,5 +4,5 @@ export * from './get-post-query.dto'; export * from './paginated-posts.dto'; export * from './post-stats.dto'; export * from './get-post-query.dto'; -export * from './get-search-posts-query.dtp'; +export * from './get-search-posts-query.dto'; export * from './search-posts.dto'; diff --git a/packages/server/src/modules/posts/dto/paginated-posts.dto.ts b/packages/server/src/modules/posts/dto/paginated-posts.dto.ts index f60c995..cecefc1 100644 --- a/packages/server/src/modules/posts/dto/paginated-posts.dto.ts +++ b/packages/server/src/modules/posts/dto/paginated-posts.dto.ts @@ -1,6 +1,7 @@ -import { Expose, Type } from 'class-transformer'; +import { Exclude, Expose, Type } from 'class-transformer'; import { PostDto } from './post.dto'; +@Exclude() export class PaginatedPostsDto { @Expose() @Type(() => PostDto) diff --git a/packages/server/src/modules/posts/dto/post-stats.dto.ts b/packages/server/src/modules/posts/dto/post-stats.dto.ts index 4851f92..1aac656 100644 --- a/packages/server/src/modules/posts/dto/post-stats.dto.ts +++ b/packages/server/src/modules/posts/dto/post-stats.dto.ts @@ -1,5 +1,6 @@ -import { Expose } from 'class-transformer'; +import { Exclude, Expose } from 'class-transformer'; +@Exclude() export class PostStatsDto { @Expose() likes: number; diff --git a/packages/server/src/modules/posts/dto/post.dto.ts b/packages/server/src/modules/posts/dto/post.dto.ts index 8388ab2..c5416da 100644 --- a/packages/server/src/modules/posts/dto/post.dto.ts +++ b/packages/server/src/modules/posts/dto/post.dto.ts @@ -1,8 +1,9 @@ -import { Expose, Type } from 'class-transformer'; +import { Exclude, Expose, Type } from 'class-transformer'; import { SeriesDto } from '~/modules/series/dto'; import { UserDto } from '~/modules/users/dto'; import { PostStatsDto } from './post-stats.dto'; +@Exclude() export class PostDto { @Expose() id: string; diff --git a/packages/server/src/modules/posts/dto/search-posts.dto.ts b/packages/server/src/modules/posts/dto/search-posts.dto.ts index 6461408..48cfc04 100644 --- a/packages/server/src/modules/posts/dto/search-posts.dto.ts +++ b/packages/server/src/modules/posts/dto/search-posts.dto.ts @@ -1,6 +1,7 @@ -import { Expose, Type } from 'class-transformer'; +import { Exclude, Expose, Type } from 'class-transformer'; import { PostDto } from './post.dto'; +@Exclude() export class SearchPostsDto { @Expose() @Type(() => PostDto) diff --git a/packages/server/src/modules/posts/posts.controller.ts b/packages/server/src/modules/posts/posts.controller.ts index 8149321..7b8d0b1 100644 --- a/packages/server/src/modules/posts/posts.controller.ts +++ b/packages/server/src/modules/posts/posts.controller.ts @@ -38,9 +38,7 @@ export class PostsController { @GetCurrentUser('userId') userId: string | null, ): Promise { const paginatedPosts = await this.postsService.getPosts(dto, userId); - return plainToInstance(PaginatedPostsDto, paginatedPosts, { - excludeExtraneousValues: true, - }); + return plainToInstance(PaginatedPostsDto, paginatedPosts); } @Public() @@ -55,9 +53,7 @@ export class PostsController { username, userId, ); - return plainToInstance(PaginatedPostsDto, paginatedPosts, { - excludeExtraneousValues: true, - }); + return plainToInstance(PaginatedPostsDto, paginatedPosts); } @Public() @@ -72,9 +68,7 @@ export class PostsController { slug, userId, }); - return plainToInstance(PostDto, post, { - excludeExtraneousValues: true, - }); + return plainToInstance(PostDto, post); } @Public() @@ -83,9 +77,7 @@ export class PostsController { @Query() dto: GetSearchPostsQueryDto, ): Promise { const posts = await this.postsService.getSearchPosts(dto); - return plainToInstance(SearchPostsDto, posts, { - excludeExtraneousValues: true, - }); + return plainToInstance(SearchPostsDto, posts); } @Public() @@ -95,9 +87,7 @@ export class PostsController { @Param('id') id: string, ) { const post = await this.postsService.getPost(id, userId); - return plainToInstance(PostDto, post, { - excludeExtraneousValues: true, - }); + return plainToInstance(PostDto, post); } @Public() @@ -107,9 +97,7 @@ export class PostsController { @GetCurrentUser('userId') userId: string | null, ): Promise { const commentList = await this.postsService.getCommentList(id, userId); - return plainToInstance(CommentListResponseDto, commentList, { - excludeExtraneousValues: true, - }); + return plainToInstance(CommentListResponseDto, commentList); } @Post() @@ -119,9 +107,7 @@ export class PostsController { ): Promise { const post = await this.postsService.createPost(dto, user); - return plainToInstance(PostDto, post, { - excludeExtraneousValues: true, - }); + return plainToInstance(PostDto, post); } @Post(':postId/likes') @@ -130,9 +116,7 @@ export class PostsController { @GetCurrentUser('userId') userId: string, ): Promise { const postStats = await this.postsService.likePost({ postId, userId }); - return plainToInstance(PostStatsDto, postStats, { - excludeExtraneousValues: true, - }); + return plainToInstance(PostStatsDto, postStats); } @Delete(':postId/likes') @@ -141,9 +125,7 @@ export class PostsController { @GetCurrentUser('userId') userId: string, ): Promise { const postStats = await this.postsService.unlikePost({ postId, userId }); - return plainToInstance(PostStatsDto, postStats, { - excludeExtraneousValues: true, - }); + return plainToInstance(PostStatsDto, postStats); } @Delete(':postId') diff --git a/packages/server/src/modules/posts/posts.module.ts b/packages/server/src/modules/posts/posts.module.ts index 63b9c19..b595fdd 100644 --- a/packages/server/src/modules/posts/posts.module.ts +++ b/packages/server/src/modules/posts/posts.module.ts @@ -7,6 +7,7 @@ import { CommentsService } from '../comments/comments.service'; import { S3Service } from '~/providers/aws/s3/s3.service'; import { SeriesService } from '../series/series.service'; import { SeriesRepository } from '../series/series.repository'; +import { SESService } from '~/providers/aws/ses/ses.service'; @Module({ controllers: [PostsController], @@ -18,6 +19,7 @@ import { SeriesRepository } from '../series/series.repository'; S3Service, SeriesService, SeriesRepository, + SESService, ], }) export class PostsModule {} diff --git a/packages/server/src/modules/posts/posts.repository.ts b/packages/server/src/modules/posts/posts.repository.ts index 5f9caa4..edfee54 100644 --- a/packages/server/src/modules/posts/posts.repository.ts +++ b/packages/server/src/modules/posts/posts.repository.ts @@ -224,6 +224,8 @@ const postSelector = (userId: string | null = null) => { select: { id: true, username: true, + email: true, + emailNotification: true, displayName: true, profileImage: true, }, diff --git a/packages/server/src/modules/series/dto/series-post.dto.ts b/packages/server/src/modules/series/dto/series-post.dto.ts index 1c66677..44d4d5f 100644 --- a/packages/server/src/modules/series/dto/series-post.dto.ts +++ b/packages/server/src/modules/series/dto/series-post.dto.ts @@ -1,5 +1,6 @@ -import { Expose } from 'class-transformer'; +import { Exclude, Expose } from 'class-transformer'; +@Exclude() export class SeriesPostDto { @Expose() id: string; diff --git a/packages/server/src/modules/series/dto/series.dto.ts b/packages/server/src/modules/series/dto/series.dto.ts index ae7cfc0..6e0a343 100644 --- a/packages/server/src/modules/series/dto/series.dto.ts +++ b/packages/server/src/modules/series/dto/series.dto.ts @@ -1,6 +1,7 @@ -import { Expose, Type } from 'class-transformer'; +import { Exclude, Expose, Type } from 'class-transformer'; import { SeriesPostDto } from './series-post.dto'; +@Exclude() export class SeriesDto { @Expose() id: string; diff --git a/packages/server/src/modules/series/series.controller.ts b/packages/server/src/modules/series/series.controller.ts index e13c811..cd249c3 100644 --- a/packages/server/src/modules/series/series.controller.ts +++ b/packages/server/src/modules/series/series.controller.ts @@ -26,9 +26,7 @@ export class SeriesController { @Param('username') username: string, ): Promise { const seriesList = await this.seriesService.getUserSeriesList(username); - return plainToInstance(SeriesDto, seriesList, { - excludeExtraneousValues: true, - }); + return plainToInstance(SeriesDto, seriesList); } // Get a specific series by name. @@ -42,9 +40,7 @@ export class SeriesController { username, seriesName, ); - return plainToInstance(SeriesDto, series, { - excludeExtraneousValues: true, - }); + return plainToInstance(SeriesDto, series); } @Post() @@ -53,9 +49,7 @@ export class SeriesController { @GetCurrentUser('userId') userId: string, ): Promise { const series = await this.seriesService.createSeries(dto, userId); - return plainToInstance(SeriesDto, series, { - excludeExtraneousValues: true, - }); + return plainToInstance(SeriesDto, series); } @Delete(':seriesId') @@ -64,9 +58,7 @@ export class SeriesController { @GetCurrentUser('userId') userId: string, ): Promise { const series = await this.seriesService.deleteSeries(seriesId, userId); - return plainToInstance(SeriesDto, series, { - excludeExtraneousValues: true, - }); + return plainToInstance(SeriesDto, series); } @Post(':seriesId/postId/:postId') @@ -80,9 +72,7 @@ export class SeriesController { postId, userId, ); - return plainToInstance(SeriesPostDto, seriesPost, { - excludeExtraneousValues: true, - }); + return plainToInstance(SeriesPostDto, seriesPost); } // patch는 일부만 수정할 때 사용, put은 전체를 수정할 때 사용 @@ -98,8 +88,6 @@ export class SeriesController { userId, ); - return plainToInstance(SeriesDto, editedSeries, { - excludeExtraneousValues: true, - }); + return plainToInstance(SeriesDto, editedSeries); } } diff --git a/packages/server/src/modules/users/dto/index.ts b/packages/server/src/modules/users/dto/index.ts index 04e381d..919217d 100644 --- a/packages/server/src/modules/users/dto/index.ts +++ b/packages/server/src/modules/users/dto/index.ts @@ -1 +1,3 @@ export * from './user.dto'; +export * from './update-email.dto'; +export * from './update-email-notification.dto'; diff --git a/packages/server/src/modules/users/dto/update-email-notification.dto.ts b/packages/server/src/modules/users/dto/update-email-notification.dto.ts new file mode 100644 index 0000000..ff1da3d --- /dev/null +++ b/packages/server/src/modules/users/dto/update-email-notification.dto.ts @@ -0,0 +1,10 @@ +import { ApiProperty, ApiTags } from '@nestjs/swagger'; +import { IsBoolean, IsNotEmpty } from 'class-validator'; + +@ApiTags('users') +export class UpdateEmailNotificationDto { + @ApiProperty() + @IsBoolean() + @IsNotEmpty() + enabled: boolean; +} diff --git a/packages/server/src/modules/users/dto/update-email.dto.ts b/packages/server/src/modules/users/dto/update-email.dto.ts new file mode 100644 index 0000000..895b252 --- /dev/null +++ b/packages/server/src/modules/users/dto/update-email.dto.ts @@ -0,0 +1,10 @@ +import { ApiProperty, ApiTags } from '@nestjs/swagger'; +import { IsEmail, IsOptional } from 'class-validator'; + +@ApiTags('users') +export class UpdateEmailDto { + @ApiProperty({ required: false }) + @IsOptional() + @IsEmail() + email: string | null; +} diff --git a/packages/server/src/modules/users/dto/user.dto.ts b/packages/server/src/modules/users/dto/user.dto.ts index 1b91500..d280806 100644 --- a/packages/server/src/modules/users/dto/user.dto.ts +++ b/packages/server/src/modules/users/dto/user.dto.ts @@ -1,5 +1,6 @@ -import { Expose } from 'class-transformer'; +import { Exclude, Expose } from 'class-transformer'; +@Exclude() export class UserDto { @Expose() id: string; @@ -10,6 +11,12 @@ export class UserDto { @Expose() displayName: string; + @Expose() + email: string | null; + + @Expose() + emailNotification: boolean; + @Expose() profileImage: string | null; } diff --git a/packages/server/src/modules/users/users.controller.ts b/packages/server/src/modules/users/users.controller.ts index a809c98..aca9271 100644 --- a/packages/server/src/modules/users/users.controller.ts +++ b/packages/server/src/modules/users/users.controller.ts @@ -1,8 +1,8 @@ -import { Controller, Get, Param } from '@nestjs/common'; +import { Body, Controller, Get, Param, Patch } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { plainToInstance } from 'class-transformer'; import { GetCurrentUser, Public } from '~/common/decorators'; -import { UserDto } from './dto'; +import { UpdateEmailDto, UpdateEmailNotificationDto, UserDto } from './dto'; import { UsersService } from './users.service'; @ApiTags('users') @@ -19,9 +19,7 @@ export class UsersController { return null; } const user = await this.usersService.getUserById(userId); - return plainToInstance(UserDto, user, { - excludeExtraneousValues: true, - }); + return plainToInstance(UserDto, user); } @Public() @@ -30,8 +28,24 @@ export class UsersController { @Param('username') username: string, ): Promise { const user = await this.usersService.getUserByUsername(username); - return plainToInstance(UserDto, user, { - excludeExtraneousValues: true, - }); + return plainToInstance(UserDto, user); + } + + @Patch('email') + async updateEmail( + @GetCurrentUser('userId') userId: string, + @Body() dto: UpdateEmailDto, + ): Promise { + const user = await this.usersService.updateEmail(userId, dto); + return user.email; + } + + @Patch('email-notification') + async updateEmailNotification( + @GetCurrentUser('userId') userId: string, + @Body() dto: UpdateEmailNotificationDto, + ): Promise { + const user = await this.usersService.updateEmailNotification(userId, dto); + return user.emailNotification; } } diff --git a/packages/server/src/modules/users/users.repository.ts b/packages/server/src/modules/users/users.repository.ts index 35fe4b2..aaa28ad 100644 --- a/packages/server/src/modules/users/users.repository.ts +++ b/packages/server/src/modules/users/users.repository.ts @@ -1,5 +1,6 @@ import { Injectable } from '@nestjs/common'; import { PrismaService } from '~/prisma/prisma.service'; +import { UpdateEmailDto, UpdateEmailNotificationDto } from './dto'; @Injectable() export class UsersRepository { @@ -20,4 +21,26 @@ export class UsersRepository { }, }); } + + async updateEmail(id: string, dto: UpdateEmailDto) { + return await this.prisma.user.update({ + where: { + id, + }, + data: { + email: dto.email, + }, + }); + } + + async updateEmailNotification(id: string, dto: UpdateEmailNotificationDto) { + return await this.prisma.user.update({ + where: { + id, + }, + data: { + emailNotification: dto.enabled, + }, + }); + } } diff --git a/packages/server/src/modules/users/users.service.ts b/packages/server/src/modules/users/users.service.ts index a3ae69b..617d802 100644 --- a/packages/server/src/modules/users/users.service.ts +++ b/packages/server/src/modules/users/users.service.ts @@ -1,5 +1,6 @@ import { Injectable } from '@nestjs/common'; import { AppErrorException } from '~/common/exceptions'; +import { UpdateEmailDto, UpdateEmailNotificationDto } from './dto'; import { UsersRepository } from './users.repository'; @Injectable() @@ -16,4 +17,21 @@ export class UsersService { if (!user) throw new AppErrorException('NotFound', 'User not found'); return user; } + + async updateEmail(userId: string, dto: UpdateEmailDto) { + try { + return await this.usersRepository.updateEmail(userId, dto); + } catch (e) { + if (e.code === 'P2002') { + throw new AppErrorException('BadRequest', 'Email already exists'); + } + } + } + + async updateEmailNotification( + userId: string, + dto: UpdateEmailNotificationDto, + ) { + return await this.usersRepository.updateEmailNotification(userId, dto); + } } diff --git a/packages/server/src/providers/aws/index.ts b/packages/server/src/providers/aws/index.ts index 6b3e354..17a236b 100644 --- a/packages/server/src/providers/aws/index.ts +++ b/packages/server/src/providers/aws/index.ts @@ -1 +1,2 @@ export * from './s3/s3.module'; +export * from './ses/ses.module'; diff --git a/packages/server/src/providers/aws/ses/ses.controller.ts b/packages/server/src/providers/aws/ses/ses.controller.ts new file mode 100644 index 0000000..63c8e46 --- /dev/null +++ b/packages/server/src/providers/aws/ses/ses.controller.ts @@ -0,0 +1,27 @@ +import { Controller, Post } from '@nestjs/common'; +import { ApiTags } from '@nestjs/swagger'; +import { SESService } from './ses.service'; + +@ApiTags('ses') +@Controller() +export class SESController { + constructor(private readonly sesService: SESService) {} + + @Post() + emailTest() { + const body = this.sesService.createCommentEmail({ + profileImage: 'https://avatars.githubusercontent.com/u/16899513?v=4', + commentText: 'This is a test comment', + commentUsername: 'neko113-test', + postTitle: 'This is a test post', + postAuthor: 'neko113', + postSlug: 'test-post', + }); + return this.sesService.sendEmail({ + from: `no-reply@wap-dev.store`, + to: `alstn113@gmail.com`, + subject: 'Test email', + body, + }); + } +} diff --git a/packages/server/src/providers/aws/ses/ses.module.ts b/packages/server/src/providers/aws/ses/ses.module.ts new file mode 100644 index 0000000..c23fd46 --- /dev/null +++ b/packages/server/src/providers/aws/ses/ses.module.ts @@ -0,0 +1,10 @@ +import { Module } from '@nestjs/common'; +import { SESController } from './ses.controller'; +import { SESService } from './ses.service'; + +@Module({ + controllers: [SESController], + providers: [SESService], + exports: [SESService], +}) +export class SESModule {} diff --git a/packages/server/src/providers/aws/ses/ses.service.ts b/packages/server/src/providers/aws/ses/ses.service.ts new file mode 100644 index 0000000..e441519 --- /dev/null +++ b/packages/server/src/providers/aws/ses/ses.service.ts @@ -0,0 +1,205 @@ +import { Injectable } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { SESClient, SendEmailCommand } from '@aws-sdk/client-ses'; +import * as sanitizeHtml from 'sanitize-html'; +import { format } from 'date-fns'; + +@Injectable() +export class SESService { + private readonly sesClient: SESClient; + + constructor(private readonly configService: ConfigService) { + this.sesClient = new SESClient({ + region: this.configService.get('AWS_SES_REGION'), + }); + } + + async sendEmail(params: EmailParams) { + try { + const command = this.createSendEmailCommand(params); + await this.sesClient.send(command); + } catch (error) { + console.error(error); + } + } + + private createSendEmailCommand({ body, from, subject, to }: EmailParams) { + const command = new SendEmailCommand({ + // 받는 사람 + Destination: { + ToAddresses: [to], + }, + // 보내는 사람 + Source: from, + // 메일 내용 (제목, 내용) + Message: { + Subject: { + Charset: 'UTF-8', + Data: subject, + }, + Body: { + Html: { + Charset: 'UTF-8', + Data: body, + }, + Text: { + Charset: 'UTF-8', + Data: sanitizeHtml(body, { allowedTags: [] }), + }, + }, + }, + }); + + return command; + } + + createCommentEmail({ + postAuthor, + postTitle, + postSlug, + commentUsername, + profileImage, + commentText, + }: CreateCommentEmailParams) { + const postLink = `https://wap-dev.store/user/${postAuthor}/post/${postSlug}`; + const commentUserLink = `https://wap-dev.store/user/${commentUsername}`; + + return ` + + + + + + + + + + + + +
+ + + + + + + + + + +
+

Emotions

+

+ 새로운 댓글이 달렸습니다. +

+
+ +

+ ${postTitle} +

+
+
+
+ + + +
+
+
+
+ ${commentUsername} +
+
+ ${format( + new Date(), + 'yyyy.MM.dd HH:mm:ss', + )}
+
+
+ ${commentText} +
+
+
+
+ +

+ @neko113 // Follow 및 Star는 개발자에게 큰 힘이 됩니다. +

+
+
+
+ + + + `; + } +} + +interface EmailParams { + to: string; + subject: string; + body: string; + from: string; +} + +interface CreateCommentEmailParams { + postAuthor: string; + postTitle: string; + postSlug: string; + commentUsername: string; + profileImage: string | null; + commentText: string; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e5642a9..c6ddbb3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,14 +18,14 @@ importers: prettier: ^2.3.2 typescript: ^4.6.4 devDependencies: - '@commitlint/cli': 17.4.2 - '@commitlint/config-conventional': 17.4.2 + '@commitlint/cli': 17.4.4 + '@commitlint/config-conventional': 17.4.4 '@types/jest': 28.1.8 - '@typescript-eslint/eslint-plugin': 5.51.0_z4swst3wuuqk4hlme4ajzslgh4 - '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm - eslint: 8.34.0 - eslint-config-prettier: 8.6.0_eslint@8.34.0 - eslint-plugin-prettier: 4.2.1_u5wnrdwibbfomslmnramz52buy + '@typescript-eslint/eslint-plugin': 5.54.1_mlk7dnz565t663n4razh6a6v6i + '@typescript-eslint/parser': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu + eslint: 8.35.0 + eslint-config-prettier: 8.7.0_eslint@8.35.0 + eslint-plugin-prettier: 4.2.1_xprnzp4ul2bcpmfe73av4voica husky: 8.0.3 jest: 28.1.3 lint-staged: 13.1.2 @@ -73,47 +73,48 @@ importers: zustand: ^4.3.1 dependencies: '@codemirror/commands': 6.2.1 - '@codemirror/lang-markdown': 6.0.5 - '@codemirror/view': 6.9.0 - '@emotion/react': 11.10.5_pmekkgnqduwlme35zpnqhenc34 - '@emotion/styled': 11.10.5_g6cddab2ma6w7rmdnelgn6dq2a - '@tanstack/react-query': 4.24.6_biqbaboplfbrettd7655fr4n2y + '@codemirror/lang-markdown': 6.1.0 + '@codemirror/view': 6.9.2 + '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 + '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia + '@tanstack/react-query': 4.26.1_biqbaboplfbrettd7655fr4n2y '@types/qs': 6.9.7 '@types/react-beautiful-dnd': 13.1.3 - axios: 1.3.2 + axios: 1.3.4 codemirror: 6.0.1 date-fns: 2.29.3 framer-motion: 8.5.5_biqbaboplfbrettd7655fr4n2y highlight.js: 11.7.0 immer: 9.0.19 markdown-it: 13.0.1 - qs: 6.11.0 + qs: 6.11.1 react: 18.2.0 react-beautiful-dnd: 13.1.1_biqbaboplfbrettd7655fr4n2y react-dom: 18.2.0_react@18.2.0 react-error-boundary: 3.1.4_react@18.2.0 - react-router-dom: 6.8.1_biqbaboplfbrettd7655fr4n2y + react-router-dom: 6.8.2_biqbaboplfbrettd7655fr4n2y react-textarea-autosize: 8.4.0_pmekkgnqduwlme35zpnqhenc34 remove-markdown: 0.5.0 - zustand: 4.3.3_immer@9.0.19+react@18.2.0 + zustand: 4.3.6_immer@9.0.19+react@18.2.0 devDependencies: - '@emotion/babel-plugin': 11.10.5 + '@emotion/babel-plugin': 11.10.6 '@svgr/cli': 6.5.1 - '@tanstack/react-query-devtools': 4.24.6_r32zdxeb7iubg3qfkymfterewe + '@tanstack/react-query-devtools': 4.26.1_brdhmlf72zuns3lsk66phyptty '@types/markdown-it': 12.2.3 '@types/react': 18.0.28 - '@types/react-dom': 18.0.10 + '@types/react-dom': 18.0.11 '@types/remove-markdown': 0.3.1 - '@vitejs/plugin-react': 3.1.0_vite@4.1.1 - '@vitejs/plugin-react-swc': 3.1.0_vite@4.1.1 + '@vitejs/plugin-react': 3.1.0_vite@4.1.4 + '@vitejs/plugin-react-swc': 3.2.0_vite@4.1.4 eslint-plugin-react: 7.32.2 eslint-plugin-react-hooks: 4.6.0 - vite: 4.1.1 + vite: 4.1.4 vite-tsconfig-paths: 4.0.5 packages/server: specifiers: '@aws-sdk/client-s3': ^3.264.0 + '@aws-sdk/client-ses': ^3.282.0 '@nestjs/cli': ^9.0.0 '@nestjs/common': ^9.0.0 '@nestjs/config': ^2.2.0 @@ -124,7 +125,7 @@ importers: '@nestjs/schematics': ^9.0.0 '@nestjs/swagger': ^6.1.4 '@nestjs/testing': ^9.0.0 - '@prisma/client': ^4.10.1 + '@prisma/client': ^4.11.0 '@types/cookie-parser': ^1.4.3 '@types/express': ^4.17.13 '@types/multer': ^1.4.7 @@ -132,11 +133,13 @@ importers: '@types/passport-github2': ^1.2.5 '@types/passport-jwt': ^3.0.8 '@types/remove-markdown': ^0.3.1 + '@types/sanitize-html': ^2.8.1 '@types/supertest': ^2.0.11 axios: ^1.2.2 class-transformer: ^0.5.1 class-validator: ^0.14.0 cookie-parser: ^1.4.6 + date-fns: ^2.29.3 helmet: ^6.0.1 nanoid: 3.3.4 passport: ^0.6.0 @@ -147,6 +150,7 @@ importers: remove-markdown: ^0.5.0 rimraf: ^3.0.2 rxjs: ^7.2.0 + sanitize-html: ^2.10.0 source-map-support: ^0.5.20 supertest: ^6.1.3 swagger-ui-express: ^4.6.0 @@ -155,47 +159,51 @@ importers: ts-node: ^10.0.0 tsconfig-paths: 4.1.0 dependencies: - '@aws-sdk/client-s3': 3.267.0 - '@nestjs/common': 9.3.8_welcnyot5bzd5wa2aovbkxpi4i - '@nestjs/config': 2.3.1_6sysrfnceog466mrogtvxnbmxe - '@nestjs/core': 9.3.8_7ssxb7bx3nq7vbdensazueyaee - '@nestjs/jwt': 10.0.2_@nestjs+common@9.3.8 - '@nestjs/passport': 9.0.3_h5em43qqpxejdeuyldpwjpxdbe - '@nestjs/platform-express': 9.3.8_znlpu2ktzydjx7rl4llynpumdm - '@nestjs/swagger': 6.2.1_ydfrcawl5wcdik4dgpzikzb6by - '@prisma/client': 4.10.1_prisma@4.10.1 + '@aws-sdk/client-s3': 3.287.0 + '@aws-sdk/client-ses': 3.287.0 + '@nestjs/common': 9.3.9_welcnyot5bzd5wa2aovbkxpi4i + '@nestjs/config': 2.3.1_jrq2rdgfp2sx67wmylmrqliwxe + '@nestjs/core': 9.3.9_q6agyr4hwia55oswpsa7zjxcpm + '@nestjs/jwt': 10.0.2_@nestjs+common@9.3.9 + '@nestjs/passport': 9.0.3_v3ijvyhfbmibt6kvwmic262qla + '@nestjs/platform-express': 9.3.9_77foi4w27ghy47yutmnzv7krjy + '@nestjs/swagger': 6.2.1_ldzmua2hsw2tga2e42i6lmmdty + '@prisma/client': 4.11.0_prisma@4.11.0 '@types/cookie-parser': 1.4.3 - axios: 1.3.2 + axios: 1.3.4 class-transformer: 0.5.1 class-validator: 0.14.0 cookie-parser: 1.4.6 + date-fns: 2.29.3 helmet: 6.0.1 nanoid: 3.3.4 passport: 0.6.0 passport-github2: 0.1.12 - prisma: 4.10.1 + prisma: 4.11.0 reflect-metadata: 0.1.13 remove-markdown: 0.5.0 rimraf: 3.0.2 rxjs: 7.8.0 - swagger-ui-express: 4.6.0 + swagger-ui-express: 4.6.2 devDependencies: '@nestjs/cli': 9.2.0 '@nestjs/schematics': 9.0.4 - '@nestjs/testing': 9.3.8_aknvb6i6yy6c5uvn7ka6dpvunu + '@nestjs/testing': 9.3.9_yqmogfxzeu633isbftgaoi4ho4 '@types/express': 4.17.17 '@types/multer': 1.4.7 - '@types/node': 16.18.12 + '@types/node': 16.18.14 '@types/passport-github2': 1.2.5 '@types/passport-jwt': 3.0.8 '@types/remove-markdown': 0.3.1 + '@types/sanitize-html': 2.8.1 '@types/supertest': 2.0.12 pm2: 5.2.2 + sanitize-html: 2.10.0 source-map-support: 0.5.21 supertest: 6.3.3 ts-jest: 28.0.8 ts-loader: 9.4.2 - ts-node: 10.9.1_@types+node@16.18.12 + ts-node: 10.9.1_@types+node@16.18.14 tsconfig-paths: 4.1.0 packages: @@ -316,7 +324,7 @@ packages: resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 tslib: 1.14.1 dev: false @@ -324,7 +332,7 @@ packages: resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 tslib: 1.14.1 dev: false @@ -340,7 +348,7 @@ packages: '@aws-crypto/ie11-detection': 3.0.0 '@aws-crypto/supports-web-crypto': 3.0.0 '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-locate-window': 3.208.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 @@ -353,7 +361,7 @@ packages: '@aws-crypto/sha256-js': 3.0.0 '@aws-crypto/supports-web-crypto': 3.0.0 '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-locate-window': 3.208.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 @@ -363,7 +371,7 @@ packages: resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 tslib: 1.14.1 dev: false @@ -376,16 +384,16 @@ packages: /@aws-crypto/util/3.0.0: resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 dev: false - /@aws-sdk/abort-controller/3.267.0: - resolution: {integrity: sha512-5R7OSnHFV/f+qQpMf1RuSQoVdXroK94Vl6naWjMOAhMyofHykVhEok9hmFPac86AVx8rVX/vuA7u9GKI6/EE7g==} + /@aws-sdk/abort-controller/3.272.0: + resolution: {integrity: sha512-s2TV3phapcTwZNr4qLxbfuQuE9ZMP4RoJdkvRRCkKdm6jslsWLJf2Zlcxti/23hOlINUMYv2iXE2pftIgWGdpg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false @@ -402,378 +410,423 @@ packages: tslib: 2.5.0 dev: false - /@aws-sdk/client-s3/3.267.0: - resolution: {integrity: sha512-zb9rBqY+feYLGeG2Q9V4QaaKeTUUYnDpTyfNHqrM2CFpSOd6lmSRbJXU/EPh/gDjVeRLqSfH/gaV5fwvoZmSQA==} + /@aws-sdk/client-s3/3.287.0: + resolution: {integrity: sha512-EczE3wCEIPmGQCjx5hyfCamRIXnZtFzsMUHiYCyDyazV9DWfPqq35FvWABR0g+S4mIg1Pnln/dpTbtH2KnQd2Q==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha1-browser': 3.0.0 '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.267.0 - '@aws-sdk/config-resolver': 3.267.0 - '@aws-sdk/credential-provider-node': 3.267.0 - '@aws-sdk/eventstream-serde-browser': 3.267.0 - '@aws-sdk/eventstream-serde-config-resolver': 3.267.0 - '@aws-sdk/eventstream-serde-node': 3.267.0 - '@aws-sdk/fetch-http-handler': 3.267.0 - '@aws-sdk/hash-blob-browser': 3.267.0 - '@aws-sdk/hash-node': 3.267.0 - '@aws-sdk/hash-stream-node': 3.267.0 - '@aws-sdk/invalid-dependency': 3.267.0 - '@aws-sdk/md5-js': 3.267.0 - '@aws-sdk/middleware-bucket-endpoint': 3.267.0 - '@aws-sdk/middleware-content-length': 3.267.0 - '@aws-sdk/middleware-endpoint': 3.267.0 - '@aws-sdk/middleware-expect-continue': 3.267.0 - '@aws-sdk/middleware-flexible-checksums': 3.267.0 - '@aws-sdk/middleware-host-header': 3.267.0 - '@aws-sdk/middleware-location-constraint': 3.267.0 - '@aws-sdk/middleware-logger': 3.267.0 - '@aws-sdk/middleware-recursion-detection': 3.267.0 - '@aws-sdk/middleware-retry': 3.267.0 - '@aws-sdk/middleware-sdk-s3': 3.267.0 - '@aws-sdk/middleware-serde': 3.267.0 - '@aws-sdk/middleware-signing': 3.267.0 - '@aws-sdk/middleware-ssec': 3.267.0 - '@aws-sdk/middleware-stack': 3.267.0 - '@aws-sdk/middleware-user-agent': 3.267.0 - '@aws-sdk/node-config-provider': 3.267.0 - '@aws-sdk/node-http-handler': 3.267.0 - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/signature-v4-multi-region': 3.267.0 - '@aws-sdk/smithy-client': 3.267.0 - '@aws-sdk/types': 3.267.0 - '@aws-sdk/url-parser': 3.267.0 + '@aws-sdk/client-sts': 3.287.0 + '@aws-sdk/config-resolver': 3.287.0 + '@aws-sdk/credential-provider-node': 3.287.0 + '@aws-sdk/eventstream-serde-browser': 3.272.0 + '@aws-sdk/eventstream-serde-config-resolver': 3.272.0 + '@aws-sdk/eventstream-serde-node': 3.272.0 + '@aws-sdk/fetch-http-handler': 3.282.0 + '@aws-sdk/hash-blob-browser': 3.272.0 + '@aws-sdk/hash-node': 3.272.0 + '@aws-sdk/hash-stream-node': 3.272.0 + '@aws-sdk/invalid-dependency': 3.272.0 + '@aws-sdk/md5-js': 3.272.0 + '@aws-sdk/middleware-bucket-endpoint': 3.287.0 + '@aws-sdk/middleware-content-length': 3.282.0 + '@aws-sdk/middleware-endpoint': 3.282.0 + '@aws-sdk/middleware-expect-continue': 3.282.0 + '@aws-sdk/middleware-flexible-checksums': 3.282.0 + '@aws-sdk/middleware-host-header': 3.282.0 + '@aws-sdk/middleware-location-constraint': 3.272.0 + '@aws-sdk/middleware-logger': 3.287.0 + '@aws-sdk/middleware-recursion-detection': 3.282.0 + '@aws-sdk/middleware-retry': 3.287.0 + '@aws-sdk/middleware-sdk-s3': 3.282.0 + '@aws-sdk/middleware-serde': 3.272.0 + '@aws-sdk/middleware-signing': 3.282.0 + '@aws-sdk/middleware-ssec': 3.272.0 + '@aws-sdk/middleware-stack': 3.272.0 + '@aws-sdk/middleware-user-agent': 3.282.0 + '@aws-sdk/node-config-provider': 3.287.0 + '@aws-sdk/node-http-handler': 3.282.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/signature-v4-multi-region': 3.282.0 + '@aws-sdk/smithy-client': 3.279.0 + '@aws-sdk/types': 3.272.0 + '@aws-sdk/url-parser': 3.272.0 '@aws-sdk/util-base64': 3.208.0 '@aws-sdk/util-body-length-browser': 3.188.0 '@aws-sdk/util-body-length-node': 3.208.0 - '@aws-sdk/util-defaults-mode-browser': 3.267.0 - '@aws-sdk/util-defaults-mode-node': 3.267.0 - '@aws-sdk/util-endpoints': 3.267.0 - '@aws-sdk/util-retry': 3.267.0 - '@aws-sdk/util-stream-browser': 3.267.0 - '@aws-sdk/util-stream-node': 3.267.0 - '@aws-sdk/util-user-agent-browser': 3.267.0 - '@aws-sdk/util-user-agent-node': 3.267.0 + '@aws-sdk/util-defaults-mode-browser': 3.279.0 + '@aws-sdk/util-defaults-mode-node': 3.287.0 + '@aws-sdk/util-endpoints': 3.272.0 + '@aws-sdk/util-retry': 3.272.0 + '@aws-sdk/util-stream-browser': 3.282.0 + '@aws-sdk/util-stream-node': 3.282.0 + '@aws-sdk/util-user-agent-browser': 3.282.0 + '@aws-sdk/util-user-agent-node': 3.287.0 '@aws-sdk/util-utf8': 3.254.0 - '@aws-sdk/util-waiter': 3.267.0 + '@aws-sdk/util-waiter': 3.272.0 '@aws-sdk/xml-builder': 3.201.0 - fast-xml-parser: 4.0.11 + fast-xml-parser: 4.1.2 tslib: 2.5.0 transitivePeerDependencies: - '@aws-sdk/signature-v4-crt' - aws-crt dev: false - /@aws-sdk/client-sso-oidc/3.267.0: - resolution: {integrity: sha512-Jdq0v0mJSJbG/CKLfHC1L0cjCot48Y6lLMQV1lfkYE65xD0ZSs8Gl7P/T391ZH7cLO6ifVoPdsYnwzhi1ZPXSQ==} + /@aws-sdk/client-ses/3.287.0: + resolution: {integrity: sha512-+kvQxY3DeGgXFZ5iDIza8h/yNbs4VNWVOfhOEsnc4Jpxyedx9ZmPZf7m6mCATLVvYbHxqdpjylg0NdJwu7uR8w==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/config-resolver': 3.267.0 - '@aws-sdk/fetch-http-handler': 3.267.0 - '@aws-sdk/hash-node': 3.267.0 - '@aws-sdk/invalid-dependency': 3.267.0 - '@aws-sdk/middleware-content-length': 3.267.0 - '@aws-sdk/middleware-endpoint': 3.267.0 - '@aws-sdk/middleware-host-header': 3.267.0 - '@aws-sdk/middleware-logger': 3.267.0 - '@aws-sdk/middleware-recursion-detection': 3.267.0 - '@aws-sdk/middleware-retry': 3.267.0 - '@aws-sdk/middleware-serde': 3.267.0 - '@aws-sdk/middleware-stack': 3.267.0 - '@aws-sdk/middleware-user-agent': 3.267.0 - '@aws-sdk/node-config-provider': 3.267.0 - '@aws-sdk/node-http-handler': 3.267.0 - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/smithy-client': 3.267.0 - '@aws-sdk/types': 3.267.0 - '@aws-sdk/url-parser': 3.267.0 + '@aws-sdk/client-sts': 3.287.0 + '@aws-sdk/config-resolver': 3.287.0 + '@aws-sdk/credential-provider-node': 3.287.0 + '@aws-sdk/fetch-http-handler': 3.282.0 + '@aws-sdk/hash-node': 3.272.0 + '@aws-sdk/invalid-dependency': 3.272.0 + '@aws-sdk/middleware-content-length': 3.282.0 + '@aws-sdk/middleware-endpoint': 3.282.0 + '@aws-sdk/middleware-host-header': 3.282.0 + '@aws-sdk/middleware-logger': 3.287.0 + '@aws-sdk/middleware-recursion-detection': 3.282.0 + '@aws-sdk/middleware-retry': 3.287.0 + '@aws-sdk/middleware-serde': 3.272.0 + '@aws-sdk/middleware-signing': 3.282.0 + '@aws-sdk/middleware-stack': 3.272.0 + '@aws-sdk/middleware-user-agent': 3.282.0 + '@aws-sdk/node-config-provider': 3.287.0 + '@aws-sdk/node-http-handler': 3.282.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/smithy-client': 3.279.0 + '@aws-sdk/types': 3.272.0 + '@aws-sdk/url-parser': 3.272.0 '@aws-sdk/util-base64': 3.208.0 '@aws-sdk/util-body-length-browser': 3.188.0 '@aws-sdk/util-body-length-node': 3.208.0 - '@aws-sdk/util-defaults-mode-browser': 3.267.0 - '@aws-sdk/util-defaults-mode-node': 3.267.0 - '@aws-sdk/util-endpoints': 3.267.0 - '@aws-sdk/util-retry': 3.267.0 - '@aws-sdk/util-user-agent-browser': 3.267.0 - '@aws-sdk/util-user-agent-node': 3.267.0 + '@aws-sdk/util-defaults-mode-browser': 3.279.0 + '@aws-sdk/util-defaults-mode-node': 3.287.0 + '@aws-sdk/util-endpoints': 3.272.0 + '@aws-sdk/util-retry': 3.272.0 + '@aws-sdk/util-user-agent-browser': 3.282.0 + '@aws-sdk/util-user-agent-node': 3.287.0 '@aws-sdk/util-utf8': 3.254.0 + '@aws-sdk/util-waiter': 3.272.0 + fast-xml-parser: 4.1.2 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/client-sso/3.267.0: - resolution: {integrity: sha512-/475/mT0gYhimpCdK4iZW+eX0DT6mkTgVk5P9ARpQGzEblFM6i2pE7GQnlGeLyHVOtA0cNAyGrWUuj2pyigUaA==} + /@aws-sdk/client-sso-oidc/3.287.0: + resolution: {integrity: sha512-zrUy5jpu32sjmOcSlr8IVNTT/Pfa8ZPj6v0P/sNN3PWIv9fbep/0MJyIwbWJLCfQVLZqRvlMovFzVlnWixjraw==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/config-resolver': 3.267.0 - '@aws-sdk/fetch-http-handler': 3.267.0 - '@aws-sdk/hash-node': 3.267.0 - '@aws-sdk/invalid-dependency': 3.267.0 - '@aws-sdk/middleware-content-length': 3.267.0 - '@aws-sdk/middleware-endpoint': 3.267.0 - '@aws-sdk/middleware-host-header': 3.267.0 - '@aws-sdk/middleware-logger': 3.267.0 - '@aws-sdk/middleware-recursion-detection': 3.267.0 - '@aws-sdk/middleware-retry': 3.267.0 - '@aws-sdk/middleware-serde': 3.267.0 - '@aws-sdk/middleware-stack': 3.267.0 - '@aws-sdk/middleware-user-agent': 3.267.0 - '@aws-sdk/node-config-provider': 3.267.0 - '@aws-sdk/node-http-handler': 3.267.0 - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/smithy-client': 3.267.0 - '@aws-sdk/types': 3.267.0 - '@aws-sdk/url-parser': 3.267.0 + '@aws-sdk/config-resolver': 3.287.0 + '@aws-sdk/fetch-http-handler': 3.282.0 + '@aws-sdk/hash-node': 3.272.0 + '@aws-sdk/invalid-dependency': 3.272.0 + '@aws-sdk/middleware-content-length': 3.282.0 + '@aws-sdk/middleware-endpoint': 3.282.0 + '@aws-sdk/middleware-host-header': 3.282.0 + '@aws-sdk/middleware-logger': 3.287.0 + '@aws-sdk/middleware-recursion-detection': 3.282.0 + '@aws-sdk/middleware-retry': 3.287.0 + '@aws-sdk/middleware-serde': 3.272.0 + '@aws-sdk/middleware-stack': 3.272.0 + '@aws-sdk/middleware-user-agent': 3.282.0 + '@aws-sdk/node-config-provider': 3.287.0 + '@aws-sdk/node-http-handler': 3.282.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/smithy-client': 3.279.0 + '@aws-sdk/types': 3.272.0 + '@aws-sdk/url-parser': 3.272.0 '@aws-sdk/util-base64': 3.208.0 '@aws-sdk/util-body-length-browser': 3.188.0 '@aws-sdk/util-body-length-node': 3.208.0 - '@aws-sdk/util-defaults-mode-browser': 3.267.0 - '@aws-sdk/util-defaults-mode-node': 3.267.0 - '@aws-sdk/util-endpoints': 3.267.0 - '@aws-sdk/util-retry': 3.267.0 - '@aws-sdk/util-user-agent-browser': 3.267.0 - '@aws-sdk/util-user-agent-node': 3.267.0 + '@aws-sdk/util-defaults-mode-browser': 3.279.0 + '@aws-sdk/util-defaults-mode-node': 3.287.0 + '@aws-sdk/util-endpoints': 3.272.0 + '@aws-sdk/util-retry': 3.272.0 + '@aws-sdk/util-user-agent-browser': 3.282.0 + '@aws-sdk/util-user-agent-node': 3.287.0 '@aws-sdk/util-utf8': 3.254.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/client-sts/3.267.0: - resolution: {integrity: sha512-bJ+SwJZAP3DuDUgToDV89HsB80IhSfB1rhzLG9csqs6h7uMLO8H1/fymElYKT4VMMAA+rpWJ3pznyGiCK7w28A==} + /@aws-sdk/client-sso/3.287.0: + resolution: {integrity: sha512-YXD/oP38tsgKYTnft17O6OLTBBdal7CZsRhCJUHUSg3xAV9AiLloMwGrSxcZh4qMhx5bcn9XaVxu8dApsXnJXw==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/config-resolver': 3.267.0 - '@aws-sdk/credential-provider-node': 3.267.0 - '@aws-sdk/fetch-http-handler': 3.267.0 - '@aws-sdk/hash-node': 3.267.0 - '@aws-sdk/invalid-dependency': 3.267.0 - '@aws-sdk/middleware-content-length': 3.267.0 - '@aws-sdk/middleware-endpoint': 3.267.0 - '@aws-sdk/middleware-host-header': 3.267.0 - '@aws-sdk/middleware-logger': 3.267.0 - '@aws-sdk/middleware-recursion-detection': 3.267.0 - '@aws-sdk/middleware-retry': 3.267.0 - '@aws-sdk/middleware-sdk-sts': 3.267.0 - '@aws-sdk/middleware-serde': 3.267.0 - '@aws-sdk/middleware-signing': 3.267.0 - '@aws-sdk/middleware-stack': 3.267.0 - '@aws-sdk/middleware-user-agent': 3.267.0 - '@aws-sdk/node-config-provider': 3.267.0 - '@aws-sdk/node-http-handler': 3.267.0 - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/smithy-client': 3.267.0 - '@aws-sdk/types': 3.267.0 - '@aws-sdk/url-parser': 3.267.0 + '@aws-sdk/config-resolver': 3.287.0 + '@aws-sdk/fetch-http-handler': 3.282.0 + '@aws-sdk/hash-node': 3.272.0 + '@aws-sdk/invalid-dependency': 3.272.0 + '@aws-sdk/middleware-content-length': 3.282.0 + '@aws-sdk/middleware-endpoint': 3.282.0 + '@aws-sdk/middleware-host-header': 3.282.0 + '@aws-sdk/middleware-logger': 3.287.0 + '@aws-sdk/middleware-recursion-detection': 3.282.0 + '@aws-sdk/middleware-retry': 3.287.0 + '@aws-sdk/middleware-serde': 3.272.0 + '@aws-sdk/middleware-stack': 3.272.0 + '@aws-sdk/middleware-user-agent': 3.282.0 + '@aws-sdk/node-config-provider': 3.287.0 + '@aws-sdk/node-http-handler': 3.282.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/smithy-client': 3.279.0 + '@aws-sdk/types': 3.272.0 + '@aws-sdk/url-parser': 3.272.0 '@aws-sdk/util-base64': 3.208.0 '@aws-sdk/util-body-length-browser': 3.188.0 '@aws-sdk/util-body-length-node': 3.208.0 - '@aws-sdk/util-defaults-mode-browser': 3.267.0 - '@aws-sdk/util-defaults-mode-node': 3.267.0 - '@aws-sdk/util-endpoints': 3.267.0 - '@aws-sdk/util-retry': 3.267.0 - '@aws-sdk/util-user-agent-browser': 3.267.0 - '@aws-sdk/util-user-agent-node': 3.267.0 + '@aws-sdk/util-defaults-mode-browser': 3.279.0 + '@aws-sdk/util-defaults-mode-node': 3.287.0 + '@aws-sdk/util-endpoints': 3.272.0 + '@aws-sdk/util-retry': 3.272.0 + '@aws-sdk/util-user-agent-browser': 3.282.0 + '@aws-sdk/util-user-agent-node': 3.287.0 '@aws-sdk/util-utf8': 3.254.0 - fast-xml-parser: 4.0.11 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/config-resolver/3.267.0: - resolution: {integrity: sha512-UMvJY548xOkamU9ZuZk336VX9r3035CAbttagiPJ/FXy9S8jcQ7N722PAovtxs69nNBQf56cmWsnOHphLCGG9w==} + /@aws-sdk/client-sts/3.287.0: + resolution: {integrity: sha512-s6ST78bxSH+nFAFcvSU7bhNAGz/e9Q/77+0Y0JPl/Q2ZWKMfO9AWs/uAieATMBhVuG/8ok4WKrR9YCbMr/ai8A==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/signature-v4': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/config-resolver': 3.287.0 + '@aws-sdk/credential-provider-node': 3.287.0 + '@aws-sdk/fetch-http-handler': 3.282.0 + '@aws-sdk/hash-node': 3.272.0 + '@aws-sdk/invalid-dependency': 3.272.0 + '@aws-sdk/middleware-content-length': 3.282.0 + '@aws-sdk/middleware-endpoint': 3.282.0 + '@aws-sdk/middleware-host-header': 3.282.0 + '@aws-sdk/middleware-logger': 3.287.0 + '@aws-sdk/middleware-recursion-detection': 3.282.0 + '@aws-sdk/middleware-retry': 3.287.0 + '@aws-sdk/middleware-sdk-sts': 3.282.0 + '@aws-sdk/middleware-serde': 3.272.0 + '@aws-sdk/middleware-signing': 3.282.0 + '@aws-sdk/middleware-stack': 3.272.0 + '@aws-sdk/middleware-user-agent': 3.282.0 + '@aws-sdk/node-config-provider': 3.287.0 + '@aws-sdk/node-http-handler': 3.282.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/smithy-client': 3.279.0 + '@aws-sdk/types': 3.272.0 + '@aws-sdk/url-parser': 3.272.0 + '@aws-sdk/util-base64': 3.208.0 + '@aws-sdk/util-body-length-browser': 3.188.0 + '@aws-sdk/util-body-length-node': 3.208.0 + '@aws-sdk/util-defaults-mode-browser': 3.279.0 + '@aws-sdk/util-defaults-mode-node': 3.287.0 + '@aws-sdk/util-endpoints': 3.272.0 + '@aws-sdk/util-retry': 3.272.0 + '@aws-sdk/util-user-agent-browser': 3.282.0 + '@aws-sdk/util-user-agent-node': 3.287.0 + '@aws-sdk/util-utf8': 3.254.0 + fast-xml-parser: 4.1.2 + tslib: 2.5.0 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/config-resolver/3.287.0: + resolution: {integrity: sha512-YLJ9+ufcrj73DBmqgG50WMAVNHb8PdWL7hkp3gs00VOsXeEMGdQK92fVlx8Him8yPDikvLS2orrEVRcYxj5Uag==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/signature-v4': 3.282.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-config-provider': 3.208.0 - '@aws-sdk/util-middleware': 3.267.0 + '@aws-sdk/util-middleware': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/credential-provider-env/3.267.0: - resolution: {integrity: sha512-oiem2UtaFe4CQHscUCImJjPhYWd4iF8fqXhlq6BqHs1wsO6A0vnIUGh+Srut/2q7Xeegl/SRU34HK0hh8JCbxg==} + /@aws-sdk/credential-provider-env/3.272.0: + resolution: {integrity: sha512-QI65NbLnKLYHyTYhXaaUrq6eVsCCrMUb05WDA7+TJkWkjXesovpjc8vUKgFiLSxmgKmb2uOhHNcDyObKMrYQFw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/property-provider': 3.272.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/credential-provider-imds/3.267.0: - resolution: {integrity: sha512-Afd5+LdJ9QyeI5L4iyVmI4MLV+0JBtRLmRy0LdinwJaP0DyKyv9+uaIaorKfWihQpe8hwjEfQWTlTz2A3JMJtw==} + /@aws-sdk/credential-provider-imds/3.287.0: + resolution: {integrity: sha512-awvsREwUgb9V5pbrP9DyNGh5iXBE8Pbb5EeMw8zJsX+cYuD95N0YncrU/7MAf0+ro851gBqjC3Dty8ujrAhkSg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/node-config-provider': 3.267.0 - '@aws-sdk/property-provider': 3.267.0 - '@aws-sdk/types': 3.267.0 - '@aws-sdk/url-parser': 3.267.0 + '@aws-sdk/node-config-provider': 3.287.0 + '@aws-sdk/property-provider': 3.272.0 + '@aws-sdk/types': 3.272.0 + '@aws-sdk/url-parser': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/credential-provider-ini/3.267.0: - resolution: {integrity: sha512-pHHlqZqZXA4cTssTyRmbYtrjxS2BEy2KFYHEEHNUrd82pUHnj70n+lrpVnT5pRhPPDacpNzxq0KZGeNgmETpbw==} + /@aws-sdk/credential-provider-ini/3.287.0: + resolution: {integrity: sha512-mDl/twCpXvWUb4A+L3z+v0N4oRF9cnOrkdhW9yP3hBT84RJqCIFHtk966rFiZod8MbhE2LluODtzXVJEIHpmpg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/credential-provider-env': 3.267.0 - '@aws-sdk/credential-provider-imds': 3.267.0 - '@aws-sdk/credential-provider-process': 3.267.0 - '@aws-sdk/credential-provider-sso': 3.267.0 - '@aws-sdk/credential-provider-web-identity': 3.267.0 - '@aws-sdk/property-provider': 3.267.0 - '@aws-sdk/shared-ini-file-loader': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/credential-provider-env': 3.272.0 + '@aws-sdk/credential-provider-imds': 3.287.0 + '@aws-sdk/credential-provider-process': 3.287.0 + '@aws-sdk/credential-provider-sso': 3.287.0 + '@aws-sdk/credential-provider-web-identity': 3.272.0 + '@aws-sdk/property-provider': 3.272.0 + '@aws-sdk/shared-ini-file-loader': 3.287.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/credential-provider-node/3.267.0: - resolution: {integrity: sha512-uo8VyZ/L8HBXskYZC65bR1ZUJ5mBn8JarrGHt6vMG2A+uM7AuryTsKn2wdhPfuCUGKuQLXmix5K4VW/wzq11kQ==} + /@aws-sdk/credential-provider-node/3.287.0: + resolution: {integrity: sha512-7f41hmgwMpMOFgDmpR76xEAXDlG4OHkS1pJU5bt9P4UL2EJWuxvJkdbvI4g9th+lT4cbzWXGFwK+oZ7xBKsVKw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/credential-provider-env': 3.267.0 - '@aws-sdk/credential-provider-imds': 3.267.0 - '@aws-sdk/credential-provider-ini': 3.267.0 - '@aws-sdk/credential-provider-process': 3.267.0 - '@aws-sdk/credential-provider-sso': 3.267.0 - '@aws-sdk/credential-provider-web-identity': 3.267.0 - '@aws-sdk/property-provider': 3.267.0 - '@aws-sdk/shared-ini-file-loader': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/credential-provider-env': 3.272.0 + '@aws-sdk/credential-provider-imds': 3.287.0 + '@aws-sdk/credential-provider-ini': 3.287.0 + '@aws-sdk/credential-provider-process': 3.287.0 + '@aws-sdk/credential-provider-sso': 3.287.0 + '@aws-sdk/credential-provider-web-identity': 3.272.0 + '@aws-sdk/property-provider': 3.272.0 + '@aws-sdk/shared-ini-file-loader': 3.287.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/credential-provider-process/3.267.0: - resolution: {integrity: sha512-pd1OOB1Mm+QdPv3sPfO+1G8HBaPAAYXxjLcOK5z/myBeZAsLR12Xcaft4RR1XWwXXKEQqq42cbAINWQdyVykqQ==} + /@aws-sdk/credential-provider-process/3.287.0: + resolution: {integrity: sha512-3iWtit/4Iyv/JjL2L0cO7v94NvsISTH/ak0CXqAgb2LdCOz0JN3txgg+ciZzdVLUP8M7x/bm4HjMcUVaxS0HZw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.267.0 - '@aws-sdk/shared-ini-file-loader': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/property-provider': 3.272.0 + '@aws-sdk/shared-ini-file-loader': 3.287.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/credential-provider-sso/3.267.0: - resolution: {integrity: sha512-JqwxelzeRhVdloNi+VUUXhJdziTtNrrwMuhds9wj4KPfl1S2EIzkRxHSjwDz1wtSyuIPOOo6pPJiaVbwvLpkVg==} + /@aws-sdk/credential-provider-sso/3.287.0: + resolution: {integrity: sha512-aJGV4zIFOPWn6PQRjduI3jX+cPCtDtqTNefmsdpw+BIdWFwFINDwoCKfkodnkzxGrB0n35wkGEiddJlwlMwROA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sso': 3.267.0 - '@aws-sdk/property-provider': 3.267.0 - '@aws-sdk/shared-ini-file-loader': 3.267.0 - '@aws-sdk/token-providers': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/client-sso': 3.287.0 + '@aws-sdk/property-provider': 3.272.0 + '@aws-sdk/shared-ini-file-loader': 3.287.0 + '@aws-sdk/token-providers': 3.287.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/credential-provider-web-identity/3.267.0: - resolution: {integrity: sha512-za5UsQmj3sYRhd4h5eStj3GCHHfAAjfx2x5FmgQ9ldOp+s0wHEqSL1g+OL9v6o8otf9JnWha+wfUYq3yVGfufQ==} + /@aws-sdk/credential-provider-web-identity/3.272.0: + resolution: {integrity: sha512-ImrHMkcgneGa/HadHAQXPwOrX26sAKuB8qlMxZF/ZCM2B55u8deY+ZVkVuraeKb7YsahMGehPFOfRAF6mvFI5Q==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/property-provider': 3.272.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/eventstream-codec/3.267.0: - resolution: {integrity: sha512-QE6k1kKbiMY2TklrFw1bpNlGbnQsiwY4IaUPFEv3UoKetfZUXSxjMcFcz/nfxjdfQ100IISfPCN5Jp1ycJjrfg==} + /@aws-sdk/eventstream-codec/3.272.0: + resolution: {integrity: sha512-HYMzglDnqUhvx3u9MdzZ/OjLuavaaH9zF9XMXRuv7bdsN9AAi3/0he0FEx84ZXNXSAZCebLwXJYf0ZrN6g37QA==} dependencies: '@aws-crypto/crc32': 3.0.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-hex-encoding': 3.201.0 tslib: 2.5.0 dev: false - /@aws-sdk/eventstream-serde-browser/3.267.0: - resolution: {integrity: sha512-PIhXs8UK5juvIACUCwmj757OmIGRmQbUjMX6QYuLgeIIsAhEBfn9NRDR9v6rWZr+vlDJaJW0/IWpp6kfvmE3Pw==} + /@aws-sdk/eventstream-serde-browser/3.272.0: + resolution: {integrity: sha512-mE1+mevS+KVKpnTLi5FytsBwAK1kWZ92ERtAiElp58SKE1OpfSg8lEY8VI6JKGlueN540Qq3LeIgA2/HJOcK/w==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/eventstream-serde-universal': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/eventstream-serde-universal': 3.272.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/eventstream-serde-config-resolver/3.267.0: - resolution: {integrity: sha512-exFQEqD0paiygtTQz6YroaH6MO54v4Xo9nWYMmny1JFsG7FObBlOi+4iSn3GHsXG0XfauYrr7KubRzDqXKKMwQ==} + /@aws-sdk/eventstream-serde-config-resolver/3.272.0: + resolution: {integrity: sha512-e47BhGBvx+me53cvYx+47ml5KNDj7XoTth80krHlyLrimFELE1ij4tHSKR/XzilKKH1uIWmJQdlAi29129ZX5w==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/eventstream-serde-node/3.267.0: - resolution: {integrity: sha512-VzCb4Z+18pbqL87oepog5poNqQuKotj6YtEK/5KYi55HqGgTwhbAQjtL8SVQO3dCgv080oW5cVSTvIpmVcdrDg==} + /@aws-sdk/eventstream-serde-node/3.272.0: + resolution: {integrity: sha512-uto8y4FoZugWnczM1TKwv6oV2Po2Jgrp+W1Ws3baRQ4Lan+QpFx3Tps1N5rNzQ+7Uz0xT1BhbSNPAkKs22/jtg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/eventstream-serde-universal': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/eventstream-serde-universal': 3.272.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/eventstream-serde-universal/3.267.0: - resolution: {integrity: sha512-lAQqA5IzhRTGvUR8sGcAeQxjGYr++/l8ME6n+E7R3q/gq2m3vh+su9mTLzL60329mMSYRQ6LKV4soskwiJ5X+A==} + /@aws-sdk/eventstream-serde-universal/3.272.0: + resolution: {integrity: sha512-E9jlt8tzDcEMoNlgv3+01jGPJPHmbmw2NsajZhB4axVMpEy247JV6qvCZe+5R+EGy96t0pfsO2naViEB4Va47g==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/eventstream-codec': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/eventstream-codec': 3.272.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/fetch-http-handler/3.267.0: - resolution: {integrity: sha512-u8v8OvWvLVfifmETCAj+DCTot900AsdO1b+N+O8nXiTm2v99rtEoNRJW+no/5vJKNqR+95OAz4NWjFep8nzseg==} + /@aws-sdk/fetch-http-handler/3.282.0: + resolution: {integrity: sha512-RTd53UzKtUucIEdVLGGgtlbVwp0QkOt3ZfHuA/A1lOH7meChSh1kz7B5z3p4HQDpXO+MQ1Y6Ble9Vg2fh1zwJQ==} dependencies: - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/querystring-builder': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/querystring-builder': 3.272.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-base64': 3.208.0 tslib: 2.5.0 dev: false - /@aws-sdk/hash-blob-browser/3.267.0: - resolution: {integrity: sha512-2/EBSBXkVUG6uV1YHmr7eeboEqyY45xFNE788s9lv3nCAT0tq+6hun4Gtp2t35aMheadvNKHJC9MWNpQVm+gKg==} + /@aws-sdk/hash-blob-browser/3.272.0: + resolution: {integrity: sha512-IRCIMG42fXcdD92C8Sb0CQI8D/msxDwHGAIqP94iGhVEnKX2egyx5J8lmPY4gEky5UzyMMaH7cayBv89ZMEBmQ==} dependencies: '@aws-sdk/chunked-blob-reader': 3.188.0 '@aws-sdk/chunked-blob-reader-native': 3.208.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/hash-node/3.267.0: - resolution: {integrity: sha512-N3xeChdJg4V4jh2vrRN521EMJYxjUOo/LpvpisFyQHE/p31AfcOLb05upYFoYLvyeder9RHBIyNsvvnMYYoCsA==} + /@aws-sdk/hash-node/3.272.0: + resolution: {integrity: sha512-40dwND+iAm3VtPHPZu7/+CIdVJFk2s0cWZt1lOiMPMSXycSYJ45wMk7Lly3uoqRx0uWfFK5iT2OCv+fJi5jTng==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-buffer-from': 3.208.0 '@aws-sdk/util-utf8': 3.254.0 tslib: 2.5.0 dev: false - /@aws-sdk/hash-stream-node/3.267.0: - resolution: {integrity: sha512-X75UrnIM524zns68ze7Q/pRyjpyYeSGljCf2vOEp0bGEcS1lQA0SOTkRR4kNlbgw7jiorjkV3WDQW98PTXKEZA==} + /@aws-sdk/hash-stream-node/3.272.0: + resolution: {integrity: sha512-mWwQWdfVYoR6PXRLkHP6pC1cghZMg0ULuOAm70EtTO2YXiyLlMIDb+VD4RRbjh3hNkzh+y/W47wSUJthGBM1kg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-utf8': 3.254.0 tslib: 2.5.0 dev: false - /@aws-sdk/invalid-dependency/3.267.0: - resolution: {integrity: sha512-I95IR/eDLC54+9qrL6uh64nhpLVHwxxbBhhEUZKDACp86eXulO8T/DOwUX31ps4+2lI7tbEhQT7f9WDOO3fN8Q==} + /@aws-sdk/invalid-dependency/3.272.0: + resolution: {integrity: sha512-ysW6wbjl1Y78txHUQ/Tldj2Rg1BI7rpMO9B9xAF6yAX3mQ7t6SUPQG/ewOGvH2208NBIl3qP5e/hDf0Q6r/1iw==} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false @@ -784,252 +837,252 @@ packages: tslib: 2.5.0 dev: false - /@aws-sdk/md5-js/3.267.0: - resolution: {integrity: sha512-p9XuiqV7jJHMyr3T/lFLCQX7L1zPgWuffyY2geE0qy7zws5a6vyEfEgJp/HMONTOOZGRQ4P4UIpGLAg5iGNWhQ==} + /@aws-sdk/md5-js/3.272.0: + resolution: {integrity: sha512-/GK32mgAarhn/F0xCeBKbYfLRof3tOCNrg8mAGNz9Di8E1/qMOnX/OXUGag0lsvNZ6DTjdjln29t4e8iKmOVqA==} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-utf8': 3.254.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-bucket-endpoint/3.267.0: - resolution: {integrity: sha512-X2UDACN7pK8S3w9FQo32kpHnFbtCWvzy9Btzu/CVRvfxlBmSaCcOXMT5qoGni+no5FHhVKTuUMUp1CBYpD1d6Q==} + /@aws-sdk/middleware-bucket-endpoint/3.287.0: + resolution: {integrity: sha512-PJsqit0qy+KUH9TixbZ/Kos1KjHFiNb27Z7p7OkSvXZ93dbYqWYQPb7PkQOd84eGHvo7v3RaYjpdP7h+a7Lw1w==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-arn-parser': 3.208.0 '@aws-sdk/util-config-provider': 3.208.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-content-length/3.267.0: - resolution: {integrity: sha512-b6MBIK12iwcATKnWIhsh50xWVMmZOXZFIo9D4io6D+JM6j/U+GZrSWqxhHzb3SjavuwVgA2hwq4mUCh2WJPJKA==} + /@aws-sdk/middleware-content-length/3.282.0: + resolution: {integrity: sha512-SDgMLRRTMr9LlHSNk4bXUXynYnkT4oNMqE+FxhjsdbT8hK36eS4AadM58R7nPwgjR3EuWRW4ZRRawLWatpWspA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-endpoint/3.267.0: - resolution: {integrity: sha512-pGICM/qlQVfixtfKZt8zHq54KvLG2MmOAgNWj2MXB7oirPs/3rC9Kz9ITFXJgjlRFyfssgP/feKhs2yZkI8lhw==} + /@aws-sdk/middleware-endpoint/3.282.0: + resolution: {integrity: sha512-8U9Mv/Sbdo1KI6/ip7IIUdBl5pgmalFbfkYAyO+AtmkEvawI9ipdWFs5HB0Dwd1BGVup5choY72Ik/7sCAAFTQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-serde': 3.267.0 - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/signature-v4': 3.267.0 - '@aws-sdk/types': 3.267.0 - '@aws-sdk/url-parser': 3.267.0 + '@aws-sdk/middleware-serde': 3.272.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/signature-v4': 3.282.0 + '@aws-sdk/types': 3.272.0 + '@aws-sdk/url-parser': 3.272.0 '@aws-sdk/util-config-provider': 3.208.0 - '@aws-sdk/util-middleware': 3.267.0 + '@aws-sdk/util-middleware': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-expect-continue/3.267.0: - resolution: {integrity: sha512-OjM3oaowGcgOB4ge1t8CqfCcrvxmyp1lNkL1jgy9UQvHIwOVxUk7BT24IgODKmfNEnxgxWttiTkQowuQMivUNQ==} + /@aws-sdk/middleware-expect-continue/3.282.0: + resolution: {integrity: sha512-BMzziPjQ4SozKgObdt9PJ1Cs7BLOz6RKzj9nSJKuLzxix8TX2XZhLY3Xuxu/fWXvuDYxly/NA6d/rIvqjcPk3A==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-flexible-checksums/3.267.0: - resolution: {integrity: sha512-DQF30N+mzmH2SAWnFzPI2ZI5yvMT/hszLrrq+rAn4eTQMW6cdjsih9Cwz8E8x7Ua1SiA4w9llpSZA4LgGhkw6A==} + /@aws-sdk/middleware-flexible-checksums/3.282.0: + resolution: {integrity: sha512-yru/1bVrT4EV+Mpcr5docVgZ5/ywsy/mRyvZBfHD3qC5Ydd9fakOnFhHzxSCbKSWQN2jlxPNuAzWVznSuBbSqg==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/crc32': 3.0.0 '@aws-crypto/crc32c': 3.0.0 '@aws-sdk/is-array-buffer': 3.201.0 - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-utf8': 3.254.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-host-header/3.267.0: - resolution: {integrity: sha512-D8TfjMeuQXTsB7Ni8liMmNqb3wz+T6t/tYUHtsMo0j++94KAPPj1rhkkTAjR4Rc+IYGCS4YyyCuCXjGB6gkjnA==} + /@aws-sdk/middleware-host-header/3.282.0: + resolution: {integrity: sha512-90dfYow4zh4tCatTOnqB3nE/dIAucQLZnMqwN/WBPu0fUqjymzpsNkPchqWBPnSWdNE8w3PiKMqqD9rjYwqw4Q==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-location-constraint/3.267.0: - resolution: {integrity: sha512-8RqYVIuCJ9jRrlrbCRkzfypv9TVauxODqxl61i398NDwmpY+ClmPq28UI+8cwCaI6v+1YhC6Lh8f9GGksiVvcQ==} + /@aws-sdk/middleware-location-constraint/3.272.0: + resolution: {integrity: sha512-tROQ1DM9djxfXmXPTT0XietrUt6y6QEHShPI9rQMstjXYiaHBVXRveuRLcLAKwl4nXIrgmnIU7ygyj2ZyD8gcA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-logger/3.267.0: - resolution: {integrity: sha512-wnLeZYWbgGCuNmRl0Pmky0cSXBWmMTaQBgq90WfwyM0V8wzcoeaovTWA5/qe8oJzusOgUMFoVia4Ew20k3lu8w==} + /@aws-sdk/middleware-logger/3.287.0: + resolution: {integrity: sha512-YZe/3Qs3IelJGK/mUYrCAzTIP1iu6uN4NZCofRP113UXrbipSF+wG2rZWPYyJ/cfAXL1kG4SWtdcKvLiwVEn0g==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-recursion-detection/3.267.0: - resolution: {integrity: sha512-NCBkTLxaW7XtfQoVBqQCaQZqec5XDtEylkw7g0tGjYDcl934fzu3ciH9MsJ34QFe9slYM6g4v+eC9f1w9K/19g==} + /@aws-sdk/middleware-recursion-detection/3.282.0: + resolution: {integrity: sha512-cSLq/daEaTEucbP/TgAXIOcpwLu7Bfw3VGzH1U56ngDjI4KWvUheF16JiB6OqKQXduPBPsdZ9dVmkDVKddmCRw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-retry/3.267.0: - resolution: {integrity: sha512-MiiNtddZXVhtSAnJFyChwNxnhzMYmv6qWl8qgSjuIOw9SczkHPCoANTfUdRlzG6RfPYhgYtzMGqqnrficJ6mVg==} + /@aws-sdk/middleware-retry/3.287.0: + resolution: {integrity: sha512-pXIAWuwGpWRWjIIJwbkNQGbhOGoOYVaO5WZZ+65PgKkOVDLeCYU0O26PD5cHw2ksUye8dKGfIXHTbe4CmxDveA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/service-error-classification': 3.267.0 - '@aws-sdk/types': 3.267.0 - '@aws-sdk/util-middleware': 3.267.0 - '@aws-sdk/util-retry': 3.267.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/service-error-classification': 3.272.0 + '@aws-sdk/types': 3.272.0 + '@aws-sdk/util-middleware': 3.272.0 + '@aws-sdk/util-retry': 3.272.0 tslib: 2.5.0 uuid: 8.3.2 dev: false - /@aws-sdk/middleware-sdk-s3/3.267.0: - resolution: {integrity: sha512-TmjB5FE6IrnpHCm/Pi+fAlfUrJQlycLnCzEU8TLOZxDK6jzhz5BEaM/b/wFox3AbVH/JqWyjF73xvzAclDZQxg==} + /@aws-sdk/middleware-sdk-s3/3.282.0: + resolution: {integrity: sha512-AUHHbLG1tAw7kDtKtXCsiBUdENwHyFL/h0GD24gyupGmis3AwtLfxYsjsKjByCzB6xKAi8TuPHvIvelvGdgcuA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-arn-parser': 3.208.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-sdk-sts/3.267.0: - resolution: {integrity: sha512-JLDNNvV7Hr0CQrf1vSmflvPbfDFIx5lFf8tY7DZwYWEE920ZzbJTfUsTW9iZHJGeIe8dAQX1tmfYL68+++nvEQ==} + /@aws-sdk/middleware-sdk-sts/3.282.0: + resolution: {integrity: sha512-Qe20mtJcF6lxt7280FhTFD2IpBDn39MEXmbm/zIkXR2/cAmvji8YhcxhNrq1l7XiuMM6SokBDC/f3dlF1oOC6g==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-signing': 3.267.0 - '@aws-sdk/property-provider': 3.267.0 - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/signature-v4': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/middleware-signing': 3.282.0 + '@aws-sdk/property-provider': 3.272.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/signature-v4': 3.282.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-serde/3.267.0: - resolution: {integrity: sha512-9qspxiZs+JShukzKMAameBSubfvtUOGZviu9GT5OfRekY2dBbwWcfchP2WvlwxZ/CcC+GwO1HcPqKDCMGsNoow==} + /@aws-sdk/middleware-serde/3.272.0: + resolution: {integrity: sha512-kW1uOxgPSwtXPB5rm3QLdWomu42lkYpQL94tM1BjyFOWmBLO2lQhk5a7Dw6HkTozT9a+vxtscLChRa6KZe61Hw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-signing/3.267.0: - resolution: {integrity: sha512-thkFEBiFW0M/73dIzl7hQmyAONb8zyD2ZYUFyGm7cIM60sRDUKejPHV6Izonll+HbBZgiBdwUi42uu8O+LfFGQ==} + /@aws-sdk/middleware-signing/3.282.0: + resolution: {integrity: sha512-eE5qMDcqqxZPdSwybUEph/knrA2j2cHjW+B2ddROw3Ojg0XLjep5hOhithAudgBREQhYF9pdsBr6mUMynUIrKw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.267.0 - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/signature-v4': 3.267.0 - '@aws-sdk/types': 3.267.0 - '@aws-sdk/util-middleware': 3.267.0 + '@aws-sdk/property-provider': 3.272.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/signature-v4': 3.282.0 + '@aws-sdk/types': 3.272.0 + '@aws-sdk/util-middleware': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-ssec/3.267.0: - resolution: {integrity: sha512-SipjaSq2zd6AtGcFrjQuv95VMkGub3NUL4P80jj0zOroKl73W/Zqdb9BXGcv+yxCtEKOclZbaWSanL3MpDpx0A==} + /@aws-sdk/middleware-ssec/3.272.0: + resolution: {integrity: sha512-WDPcNPkscTmJUzdAvfx8p+YuUn2YR9ocmZA7yYUJ5kA94MyGH6Rbjp8tleWwQvah/HweeCQrYUzJk9wsH64LPA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-stack/3.267.0: - resolution: {integrity: sha512-52uH3JO3ceI15dgzt8gU7lpJf59qbRUQYJ7pAmTMiHtyEawZ39Puv6sGheY3fAffhqd/aQvup6wn18Q1fRIQUA==} + /@aws-sdk/middleware-stack/3.272.0: + resolution: {integrity: sha512-jhwhknnPBGhfXAGV5GXUWfEhDFoP/DN8MPCO2yC5OAxyp6oVJ8lTPLkZYMTW5VL0c0eG44dXpF4Ib01V+PlDrQ==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.5.0 dev: false - /@aws-sdk/middleware-user-agent/3.267.0: - resolution: {integrity: sha512-eaReMnoB1Cx3OY8WDSiUMNDz/EkdAo4w/m3d5CizckKQNmB29gUrgyFs7g7sHTcShQAduZzlsfRPzc6NmKYaWQ==} + /@aws-sdk/middleware-user-agent/3.282.0: + resolution: {integrity: sha512-P1ealsSrUALo0w0Qu5nBKsNQwsmqIfsoNtFWpaznjIcXE5rRMlZL69zb0KnGbQCBfEXsgaMOWjeGT8I3/XbOHQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/node-config-provider/3.267.0: - resolution: {integrity: sha512-wNX+Cu0x+kllng253j5dvmLm4opDRr7YehJ0rNGAV24X+UPJPluN9HrBFly+z4+bH16TpJEPKx7AayiWZGFE1w==} + /@aws-sdk/node-config-provider/3.287.0: + resolution: {integrity: sha512-+AO5dy6JEDvgtH9fcuCNnAQd6ilZjww8d/HNTCb5xOhiW1/pKSNMRhouGfn47uxq61WwDN/qUnv2nlVN83RB6w==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.267.0 - '@aws-sdk/shared-ini-file-loader': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/property-provider': 3.272.0 + '@aws-sdk/shared-ini-file-loader': 3.287.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/node-http-handler/3.267.0: - resolution: {integrity: sha512-wtt3O+e8JEKaLFtmQd74HSZj2TyiApPkwMJ3R50hyboVswt8RcdMWdFbzLnPVpT1AqskG3fMECSKbu8AC/xvBQ==} + /@aws-sdk/node-http-handler/3.282.0: + resolution: {integrity: sha512-LIA4lsSKA/l1kTR5ERkJG2gARveB7Y40MR6yDwtIuhXeVu7Xo9m4BJFanCYIbyc093W0T53x438bwoBR+R+/fw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/abort-controller': 3.267.0 - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/querystring-builder': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/abort-controller': 3.272.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/querystring-builder': 3.272.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/property-provider/3.267.0: - resolution: {integrity: sha512-/BD1Zar9PCQSV8VZTAWOJmtojAeMIl16ljZX3Kix84r45qqNNxuPST2AhNVN+p97Js4x9kBFCHkdFOpW94wr4Q==} + /@aws-sdk/property-provider/3.272.0: + resolution: {integrity: sha512-V1pZTaH5eqpAt8O8CzbItHhOtzIfFuWymvwZFkAtwKuaHpnl7jjrTouV482zoq8AD/fF+VVSshwBKYA7bhidIw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/protocol-http/3.267.0: - resolution: {integrity: sha512-8HhOZXMCZ0nsJC/FoifX7YrTYGP91tCpSxIHkr7HxQcTdBMI7QakMtIIWK9Qjsy6tUI98aAdEo5PNCbzdpozmQ==} + /@aws-sdk/protocol-http/3.282.0: + resolution: {integrity: sha512-aOPv5DhsbG06WKfeh2g0H8RGnaeI8pLhaA+Mq1BvzXcghhlDu+FM9K/GjC/f1lWk1UNryfevOR7SdQm95ciHQg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/querystring-builder/3.267.0: - resolution: {integrity: sha512-SKo8V3oPV1wZy4r4lccH7R2LT0PUK/WGaXkKR30wyrtDjJRWVJDYef9ysOpRP+adCTt3G5XO0SzyPQUW5dXYVA==} + /@aws-sdk/querystring-builder/3.272.0: + resolution: {integrity: sha512-ndo++7GkdCj5tBXE6rGcITpSpZS4PfyV38wntGYAlj9liL1omk3bLZRY6uzqqkJpVHqbg2fD7O2qHNItzZgqhw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-uri-escape': 3.201.0 tslib: 2.5.0 dev: false - /@aws-sdk/querystring-parser/3.267.0: - resolution: {integrity: sha512-Krq36GXqEfRfzJ9wOzkkzpbb4SWjgSYydTIgK6KtKapme0HPcB24kmmsjsUVuHzKuQMCHHDRWm+b47iBmHGpSQ==} + /@aws-sdk/querystring-parser/3.272.0: + resolution: {integrity: sha512-5oS4/9n6N1LZW9tI3qq/0GnCuWoOXRgcHVB+AJLRBvDbEe+GI+C/xK1tKLsfpDNgsQJHc4IPQoIt4megyZ/1+A==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/service-error-classification/3.267.0: - resolution: {integrity: sha512-fOWg7bcItmJqD/YQbGvN9o03ucoBzvWNTQEB81mLKMSKr1Cf/ms0f8oa94LlImgqjjfjvAqHh6rUBTpSmSEyaw==} + /@aws-sdk/service-error-classification/3.272.0: + resolution: {integrity: sha512-REoltM1LK9byyIufLqx9znhSolPcHQgVHIA2S0zu5sdt5qER4OubkLAXuo4MBbisUTmh8VOOvIyUb5ijZCXq1w==} engines: {node: '>=14.0.0'} dev: false - /@aws-sdk/shared-ini-file-loader/3.267.0: - resolution: {integrity: sha512-Jz9R5hXKSk+aRoBKi4Bnf6T/FZUBYrIibbLnhiNxpQ1FY9mTggJR/rxuIdOE23LtfW+CRqqEYOtAtmC1oYE6tw==} + /@aws-sdk/shared-ini-file-loader/3.287.0: + resolution: {integrity: sha512-CxZp6R11uC12lNg+vKXc8bU7mqIrM43ZY2BbLRZ4tBlc7RLQpcJyccpEwEQAmJq0PA+rDUNod0gYnrM5DOUCLg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/signature-v4-multi-region/3.267.0: - resolution: {integrity: sha512-qKuI/V8nRg0GGt5zOqx9DmFWYw6f6xeysBH+fw27u7uI1wP62dqKnUs3dnxhJn5BLClYNo6kUyO58urJSR0Kjw==} + /@aws-sdk/signature-v4-multi-region/3.282.0: + resolution: {integrity: sha512-0+WZqFGL2Qjo9Upvn0clrK8hzjgp8I5EzJ81oGga1IQqgpJItl+nMGqfV8pv9xVw3Je5hk4GWCVjS2arXF9s4g==} engines: {node: '>=14.0.0'} peerDependencies: '@aws-sdk/signature-v4-crt': ^3.118.0 @@ -1037,60 +1090,60 @@ packages: '@aws-sdk/signature-v4-crt': optional: true dependencies: - '@aws-sdk/protocol-http': 3.267.0 - '@aws-sdk/signature-v4': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/protocol-http': 3.282.0 + '@aws-sdk/signature-v4': 3.282.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-arn-parser': 3.208.0 tslib: 2.5.0 dev: false - /@aws-sdk/signature-v4/3.267.0: - resolution: {integrity: sha512-Je1e7rum2zvxa3jWfwq4E+fyBdFJmSJAwGtWYz3+/rWipwXFlSAPeSVqtNjHdfzakgabvzLp7aesG4yQTrO2YQ==} + /@aws-sdk/signature-v4/3.282.0: + resolution: {integrity: sha512-rnSL3UyF/No7+O2EMtN1sTCiqL1a+odbfnfo3wCSl8DH5PEYINt2kZgVEvT1Fgaffk1pUggBBOZoR+arPIIDJA==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/is-array-buffer': 3.201.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-hex-encoding': 3.201.0 - '@aws-sdk/util-middleware': 3.267.0 + '@aws-sdk/util-middleware': 3.272.0 '@aws-sdk/util-uri-escape': 3.201.0 '@aws-sdk/util-utf8': 3.254.0 tslib: 2.5.0 dev: false - /@aws-sdk/smithy-client/3.267.0: - resolution: {integrity: sha512-WdgXHqKmFQIkAWETO/I5boX9u6QbMLC4X74OVSBaBLhRjqYmvolMFtNrQzvSKGB3FaxAN9Do41amC0mGoeLC8A==} + /@aws-sdk/smithy-client/3.279.0: + resolution: {integrity: sha512-ZcYWUQDGAYN6NXRpJuSn46PetrpPCA6TrDVwP9+3pERzTXZ66npXoG2XhHjNrOXy/Ted5A3OxKrM4/zLu9tK3A==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-stack': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/middleware-stack': 3.272.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/token-providers/3.267.0: - resolution: {integrity: sha512-CGayGrPl4ONG4RuGbNv+QS4oVuItx4hK2FCbFS7d6V7h53rkDrcFd34NsvbicQ2KVFobE7fKs6ZaripJbJbLHA==} + /@aws-sdk/token-providers/3.287.0: + resolution: {integrity: sha512-RuqgncuQpLD5+W84RbTj/pgJmrjxSPJG0GBAtnISXrc39mGoc0ArOzQUTKIs+cLqDY+WS1/pqXlnQmKvmw3TQw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sso-oidc': 3.267.0 - '@aws-sdk/property-provider': 3.267.0 - '@aws-sdk/shared-ini-file-loader': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/client-sso-oidc': 3.287.0 + '@aws-sdk/property-provider': 3.272.0 + '@aws-sdk/shared-ini-file-loader': 3.287.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/types/3.267.0: - resolution: {integrity: sha512-fICTbSeIfXlTHnciQgDt37R0kXoKxgh0a3prnLWVvTcmf7NFujdZmg5YTAZT3KJJ7SuKsIgnI8azBYioVY8BVQ==} + /@aws-sdk/types/3.272.0: + resolution: {integrity: sha512-MmmL6vxMGP5Bsi+4wRx4mxYlU/LX6M0noOXrDh/x5FfG7/4ZOar/nDxqDadhJtNM88cuWVHZWY59P54JzkGWmA==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.5.0 dev: false - /@aws-sdk/url-parser/3.267.0: - resolution: {integrity: sha512-xoQ5Fd11moiE82QTL9GGE6e73SFuD0Wi73tA75TAwKuY12OP5vDJ4oBC86A1G2T+OzeHJQmYyqiA5j48CzqB6A==} + /@aws-sdk/url-parser/3.272.0: + resolution: {integrity: sha512-vX/Tx02PlnQ/Kgtf5TnrNDHPNbY+amLZjW0Z1d9vzAvSZhQ4i9Y18yxoRDIaDTCNVRDjdhV8iuctW+05PB5JtQ==} dependencies: - '@aws-sdk/querystring-parser': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/querystring-parser': 3.272.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false @@ -1137,33 +1190,33 @@ packages: tslib: 2.5.0 dev: false - /@aws-sdk/util-defaults-mode-browser/3.267.0: - resolution: {integrity: sha512-MgrqpedA58HVR8RpT2A42//5Lb3M0JwEiYlDaA7EvIVsMx1NzO+cng4MDJi03YBAP5hwCVQmO9Sf5Au4dm+m0g==} + /@aws-sdk/util-defaults-mode-browser/3.279.0: + resolution: {integrity: sha512-RnchYRrpapTT5Hu23LOfk6e8RMVq0kUzho6xA6TJj1a4uGxkcRMvgzPipCq1P5uHu0mrkQBg9pGPEVNOUs38/Q==} engines: {node: '>= 10.0.0'} dependencies: - '@aws-sdk/property-provider': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/property-provider': 3.272.0 + '@aws-sdk/types': 3.272.0 bowser: 2.11.0 tslib: 2.5.0 dev: false - /@aws-sdk/util-defaults-mode-node/3.267.0: - resolution: {integrity: sha512-JyFk95T77sGM4q386id/mDt9/7HvoQySAygPyv/lj//WEJJIRKiefB277CKKJPT8nRAsO4mIyAT+YO/xGCxkQA==} + /@aws-sdk/util-defaults-mode-node/3.287.0: + resolution: {integrity: sha512-ZGpbPvUA+m+Lf01eTDHkXmulEPT4LphffEt6M9cHPMhwEZfzxhXLyNXyGRunraoBBzB62hKBbFM2atsoHpuIZA==} engines: {node: '>= 10.0.0'} dependencies: - '@aws-sdk/config-resolver': 3.267.0 - '@aws-sdk/credential-provider-imds': 3.267.0 - '@aws-sdk/node-config-provider': 3.267.0 - '@aws-sdk/property-provider': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/config-resolver': 3.287.0 + '@aws-sdk/credential-provider-imds': 3.287.0 + '@aws-sdk/node-config-provider': 3.287.0 + '@aws-sdk/property-provider': 3.272.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/util-endpoints/3.267.0: - resolution: {integrity: sha512-c6miY83Eo0erqXY+YiS2sOg3izURqvaWHd9przJzBQea9XRCN4ANT2P8AhoC0BPIORutaaOSoCSp/crHG0XLLg==} + /@aws-sdk/util-endpoints/3.272.0: + resolution: {integrity: sha512-c4MPUaJt2G6gGpoiwIOqDfUa98c1J63RpYvf/spQEKOtC/tF5Gfqlxuq8FnAl5lHnrqj1B9ZXLLxFhHtDR0IiQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false @@ -1181,38 +1234,38 @@ packages: tslib: 2.5.0 dev: false - /@aws-sdk/util-middleware/3.267.0: - resolution: {integrity: sha512-7nvqBZVz3RdwYv6lU958g6sWI2Qt8lzxDVn0uwfnPH+fAiX7Ln1Hen2A0XeW5cL5uYUJy6wNM5cyfTzFZosE0A==} + /@aws-sdk/util-middleware/3.272.0: + resolution: {integrity: sha512-Abw8m30arbwxqmeMMha5J11ESpHUNmCeSqSzE8/C4B8jZQtHY4kq7f+upzcNIQ11lsd+uzBEzNG3+dDRi0XOJQ==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.5.0 dev: false - /@aws-sdk/util-retry/3.267.0: - resolution: {integrity: sha512-ZXo1ICG2HgxkIZWlnPteh2R90kwmhRwvbP282CwrrYgTKuMZmW2R/+o6vqhWyPkjoNFN/pno0FxuDA3IYau3Sw==} + /@aws-sdk/util-retry/3.272.0: + resolution: {integrity: sha512-Ngha5414LR4gRHURVKC9ZYXsEJhMkm+SJ+44wlzOhavglfdcKKPUsibz5cKY1jpUV7oKECwaxHWpBB8r6h+hOg==} engines: {node: '>= 14.0.0'} dependencies: - '@aws-sdk/service-error-classification': 3.267.0 + '@aws-sdk/service-error-classification': 3.272.0 tslib: 2.5.0 dev: false - /@aws-sdk/util-stream-browser/3.267.0: - resolution: {integrity: sha512-aaSKWlMc6qgmg6nIuBxrwdhdtP9Ji+jH7a/+6dlH8e1mz1gTxBD0cbuqhHPU/u0XIKg2HxknFc6piquZv5Tnhw==} + /@aws-sdk/util-stream-browser/3.282.0: + resolution: {integrity: sha512-84yUR9MYykbMeiAPYNSgnkEnQm7WWVXjYGNfCXQ+xL6hiQXG3F0q1NZ45aT1bIlCL8L/yck1bdfIvPHYHTpmsg==} dependencies: - '@aws-sdk/fetch-http-handler': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/fetch-http-handler': 3.282.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-base64': 3.208.0 '@aws-sdk/util-hex-encoding': 3.201.0 '@aws-sdk/util-utf8': 3.254.0 tslib: 2.5.0 dev: false - /@aws-sdk/util-stream-node/3.267.0: - resolution: {integrity: sha512-MOKU/u/2E+nShpiCgc/N0D+SmmVUAwhf6TJrK753phuaPOgKzb8bBSpNtg71CWahYCg3vh5jPC5M8kfEC9Xl2Q==} + /@aws-sdk/util-stream-node/3.282.0: + resolution: {integrity: sha512-zZLIxDTShpx4+n+2OE/fBIHKsltJYFl53J75pDycMi4LjeD/yZD3Paz68wexTznjwggnaespPsklGEB2Ug2/rQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/node-http-handler': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/node-http-handler': 3.282.0 + '@aws-sdk/types': 3.272.0 '@aws-sdk/util-buffer-from': 3.208.0 tslib: 2.5.0 dev: false @@ -1224,16 +1277,16 @@ packages: tslib: 2.5.0 dev: false - /@aws-sdk/util-user-agent-browser/3.267.0: - resolution: {integrity: sha512-SmI6xInnPPa0gFhCqhtWOUMTxLeRbm7X5HXzeprhK1d8aNNlUVyALAV7K8ovIjnv3a97lIJSekyb78oTuYITCA==} + /@aws-sdk/util-user-agent-browser/3.282.0: + resolution: {integrity: sha512-Z639oyTa5fZfyi4Xr64+eiAwBCxfpe9Op4Vhnr1z/RwonQM/qywydv6Ttpeq1q5uQ0nG4wTkOMpfh39g+VqIgw==} dependencies: - '@aws-sdk/types': 3.267.0 + '@aws-sdk/types': 3.272.0 bowser: 2.11.0 tslib: 2.5.0 dev: false - /@aws-sdk/util-user-agent-node/3.267.0: - resolution: {integrity: sha512-nfmyffA1yIypJ30CIMO6Tc16t8dFJzdztzoowjmnfb8/LzTZECERM3GICq0DvZDPfSo+jbuz634VtS2K7tVZjA==} + /@aws-sdk/util-user-agent-node/3.287.0: + resolution: {integrity: sha512-yXg0C3WyxyRkQstR4VCTgnEPQd/ViRz+9rEPkYNIWXPvp1l8hPygk5q9tmSD09Lg8wzm6jR6V0MSyJnbwdzq+g==} engines: {node: '>=14.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -1241,8 +1294,8 @@ packages: aws-crt: optional: true dependencies: - '@aws-sdk/node-config-provider': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/node-config-provider': 3.287.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false @@ -1260,12 +1313,12 @@ packages: tslib: 2.5.0 dev: false - /@aws-sdk/util-waiter/3.267.0: - resolution: {integrity: sha512-umiVrTy2kAhWItvv5e4jPDYXnch88eT1uZ2lco9BttE63/MqC8ulNni45BQVvr95cVpYncZ/lH+7HTuEHzUHaw==} + /@aws-sdk/util-waiter/3.272.0: + resolution: {integrity: sha512-N25/XsJ2wkPh1EgkFyb/GRgfHDityScfD49Hk1AwJWpfetzgkcEtWdeW4IuPymXlSKhrm5L+SBw49USxo9kBag==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/abort-controller': 3.267.0 - '@aws-sdk/types': 3.267.0 + '@aws-sdk/abort-controller': 3.272.0 + '@aws-sdk/types': 3.272.0 tslib: 2.5.0 dev: false @@ -1282,25 +1335,25 @@ packages: dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data/7.20.14: - resolution: {integrity: sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==} + /@babel/compat-data/7.21.0: + resolution: {integrity: sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.20.12: - resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} + /@babel/core/7.21.0: + resolution: {integrity: sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.14 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-module-transforms': 7.20.11 - '@babel/helpers': 7.20.13 - '@babel/parser': 7.20.15 + '@babel/generator': 7.21.1 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helpers': 7.21.0 + '@babel/parser': 7.21.2 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -1310,24 +1363,25 @@ packages: - supports-color dev: true - /@babel/generator/7.20.14: - resolution: {integrity: sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==} + /@babel/generator/7.21.1: + resolution: {integrity: sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 jsesc: 2.5.2 dev: true - /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.21.0: resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.20.14 - '@babel/core': 7.20.12 - '@babel/helper-validator-option': 7.18.6 + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.0 + '@babel/helper-validator-option': 7.21.0 browserslist: 4.21.5 lru-cache: 5.1.1 semver: 6.3.0 @@ -1338,29 +1392,29 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-function-name/7.19.0: - resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} + /@babel/helper-function-name/7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 - /@babel/helper-module-transforms/7.20.11: - resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} + /@babel/helper-module-transforms/7.21.2: + resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 @@ -1369,8 +1423,8 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 transitivePeerDependencies: - supports-color dev: true @@ -1378,19 +1432,20 @@ packages: /@babel/helper-plugin-utils/7.20.2: resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-simple-access/7.20.2: resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true /@babel/helper-string-parser/7.19.4: @@ -1401,18 +1456,18 @@ packages: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option/7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} + /@babel/helper-validator-option/7.21.0: + resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers/7.20.13: - resolution: {integrity: sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==} + /@babel/helpers/7.21.0: + resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 transitivePeerDependencies: - supports-color dev: true @@ -1425,163 +1480,155 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser/7.20.15: - resolution: {integrity: sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==} + /@babel/parser/7.21.2: + resolution: {integrity: sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.12: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.21.0: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.12: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.21.0: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.12: + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.21.0: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-jsx/7.18.6: - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.12: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.21.0: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.12: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.21.0: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.12: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.21.0: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.12: + /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.21.0: resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} + /@babel/plugin-transform-react-jsx-self/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.20.12: + /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.21.0: resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/runtime/7.20.13: - resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} + /@babel/runtime/7.21.0: + resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 @@ -1591,30 +1638,30 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.15 - '@babel/types': 7.20.7 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 dev: true - /@babel/traverse/7.20.13: - resolution: {integrity: sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==} + /@babel/traverse/7.21.2: + resolution: {integrity: sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.14 + '@babel/generator': 7.21.1 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 + '@babel/helper-function-name': 7.21.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.15 - '@babel/types': 7.20.7 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.20.7: - resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} + /@babel/types/7.21.2: + resolution: {integrity: sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.19.4 @@ -1625,14 +1672,14 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@codemirror/autocomplete/6.4.1_@codemirror+view@6.9.0: - resolution: {integrity: sha512-06yAmj0FjPZzYOpNeugJtG28GNqU2/CPr34m91Q+fKSyTOR6+hDFiatkPcIkxOlU0K5yP7WH6KoLg3fTqIUgaw==} + /@codemirror/autocomplete/6.4.2_@codemirror+view@6.9.2: + resolution: {integrity: sha512-8WE2xp+D0MpWEv5lZ6zPW1/tf4AGb358T5GWYiKEuCP8MvFfT3tH2mIF9Y2yr2e3KbHuSvsVhosiEyqCpiJhZQ==} peerDependencies: '@codemirror/view': ^6.0.0 dependencies: '@codemirror/language': 6.6.0 '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.0 + '@codemirror/view': 6.9.2 '@lezer/common': 1.0.2 dev: false @@ -1641,14 +1688,14 @@ packages: dependencies: '@codemirror/language': 6.6.0 '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.0 + '@codemirror/view': 6.9.2 '@lezer/common': 1.0.2 dev: false - /@codemirror/lang-css/6.0.2_@codemirror+view@6.9.0: - resolution: {integrity: sha512-4V4zmUOl2Glx0GWw0HiO1oGD4zvMlIQ3zx5hXOE6ipCjhohig2bhWRAasrZylH9pRNTcl1VMa59Lsl8lZWlTzw==} + /@codemirror/lang-css/6.1.1_@codemirror+view@6.9.2: + resolution: {integrity: sha512-P6jdNEHyRcqqDgbvHYyC9Wxkek0rnG3a9aVSRi4a7WrjPbQtBTaOmvYpXmm13zZMAatO4Oqpac+0QZs7sy+LnQ==} dependencies: - '@codemirror/autocomplete': 6.4.1_@codemirror+view@6.9.0 + '@codemirror/autocomplete': 6.4.2_@codemirror+view@6.9.2 '@codemirror/language': 6.6.0 '@codemirror/state': 6.2.0 '@lezer/css': 1.1.1 @@ -1659,36 +1706,36 @@ packages: /@codemirror/lang-html/6.4.2: resolution: {integrity: sha512-bqCBASkteKySwtIbiV/WCtGnn/khLRbbiV5TE+d9S9eQJD7BA4c5dTRm2b3bVmSpilff5EYxvB4PQaZzM/7cNw==} dependencies: - '@codemirror/autocomplete': 6.4.1_@codemirror+view@6.9.0 - '@codemirror/lang-css': 6.0.2_@codemirror+view@6.9.0 + '@codemirror/autocomplete': 6.4.2_@codemirror+view@6.9.2 + '@codemirror/lang-css': 6.1.1_@codemirror+view@6.9.2 '@codemirror/lang-javascript': 6.1.4 '@codemirror/language': 6.6.0 '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.0 + '@codemirror/view': 6.9.2 '@lezer/common': 1.0.2 '@lezer/css': 1.1.1 - '@lezer/html': 1.3.1 + '@lezer/html': 1.3.3 dev: false /@codemirror/lang-javascript/6.1.4: resolution: {integrity: sha512-OxLf7OfOZBTMRMi6BO/F72MNGmgOd9B0vetOLvHsDACFXayBzW8fm8aWnDM0yuy68wTK03MBf4HbjSBNRG5q7A==} dependencies: - '@codemirror/autocomplete': 6.4.1_@codemirror+view@6.9.0 + '@codemirror/autocomplete': 6.4.2_@codemirror+view@6.9.2 '@codemirror/language': 6.6.0 - '@codemirror/lint': 6.1.0 + '@codemirror/lint': 6.2.0 '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.0 + '@codemirror/view': 6.9.2 '@lezer/common': 1.0.2 '@lezer/javascript': 1.4.1 dev: false - /@codemirror/lang-markdown/6.0.5: - resolution: {integrity: sha512-qH0THRYc2M7pIJoAp6jstXZkv8ZMVhNaBm7Bs4+0SLHhHlwX53txFy98AcPwrfq0Sh8Zi6RAuj9j/GyL8E1MKw==} + /@codemirror/lang-markdown/6.1.0: + resolution: {integrity: sha512-HQDJg1Js19fPKKsI3Rp1X0J6mxyrRy2NX6+Evh0+/jGm6IZHL5ygMGKBYNWKXodoDQFvgdofNRG33gWOwV59Ag==} dependencies: '@codemirror/lang-html': 6.4.2 '@codemirror/language': 6.6.0 '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.0 + '@codemirror/view': 6.9.2 '@lezer/common': 1.0.2 '@lezer/markdown': 1.0.2 dev: false @@ -1697,18 +1744,18 @@ packages: resolution: {integrity: sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg==} dependencies: '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.0 + '@codemirror/view': 6.9.2 '@lezer/common': 1.0.2 '@lezer/highlight': 1.1.3 '@lezer/lr': 1.3.3 style-mod: 4.0.0 dev: false - /@codemirror/lint/6.1.0: - resolution: {integrity: sha512-mdvDQrjRmYPvQ3WrzF6Ewaao+NWERYtpthJvoQ3tK3t/44Ynhk8ZGjTSL9jMEv8CgSMogmt75X8ceOZRDSXHtQ==} + /@codemirror/lint/6.2.0: + resolution: {integrity: sha512-KVCECmR2fFeYBr1ZXDVue7x3q5PMI0PzcIbA+zKufnkniMBo1325t0h1jM85AKp8l3tj67LRxVpZfgDxEXlQkg==} dependencies: '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.0 + '@codemirror/view': 6.9.2 crelt: 1.0.5 dev: false @@ -1716,7 +1763,7 @@ packages: resolution: {integrity: sha512-V9n9233lopQhB1dyjsBK2Wc1i+8hcCqxl1wQ46c5HWWLePoe4FluV3TGHoZ04rBRlGjNyz9DTmpJErig8UE4jw==} dependencies: '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.0 + '@codemirror/view': 6.9.2 crelt: 1.0.5 dev: false @@ -1724,8 +1771,8 @@ packages: resolution: {integrity: sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==} dev: false - /@codemirror/view/6.9.0: - resolution: {integrity: sha512-uFaqE6fBOp0Dj/tmWoe/TFlSSIPdpAzhvATgbq1eAKRkgq3hY79FioZ7nfdiT+24kz68AIWuSZ9hi3psKe36WQ==} + /@codemirror/view/6.9.2: + resolution: {integrity: sha512-ci0r/v6aKOSlzOs7/STMTYP3jX/+YMq2dAfAJcLIB6uom4ThtrUlzeuS7GTRGNqJJ+qAJR1vGWfXgu4CO/0myQ==} dependencies: '@codemirror/state': 6.2.0 style-mod: 4.0.0 @@ -1739,46 +1786,46 @@ packages: dev: true optional: true - /@commitlint/cli/17.4.2: - resolution: {integrity: sha512-0rPGJ2O1owhpxMIXL9YJ2CgPkdrFLKZElIZHXDN8L8+qWK1DGH7Q7IelBT1pchXTYTuDlqkOTdh//aTvT3bSUA==} + /@commitlint/cli/17.4.4: + resolution: {integrity: sha512-HwKlD7CPVMVGTAeFZylVNy14Vm5POVY0WxPkZr7EXLC/os0LH/obs6z4HRvJtH/nHCMYBvUBQhGwnufKfTjd5g==} engines: {node: '>=v14'} hasBin: true dependencies: - '@commitlint/format': 17.4.0 - '@commitlint/lint': 17.4.2 - '@commitlint/load': 17.4.2 - '@commitlint/read': 17.4.2 - '@commitlint/types': 17.4.0 + '@commitlint/format': 17.4.4 + '@commitlint/lint': 17.4.4 + '@commitlint/load': 17.4.4 + '@commitlint/read': 17.4.4 + '@commitlint/types': 17.4.4 execa: 5.1.1 lodash.isfunction: 3.0.9 resolve-from: 5.0.0 resolve-global: 1.0.0 - yargs: 17.6.2 + yargs: 17.7.1 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true - /@commitlint/config-conventional/17.4.2: - resolution: {integrity: sha512-JVo1moSj5eDMoql159q8zKCU8lkOhQ+b23Vl3LVVrS6PXDLQIELnJ34ChQmFVbBdSSRNAbbXnRDhosFU+wnuHw==} + /@commitlint/config-conventional/17.4.4: + resolution: {integrity: sha512-u6ztvxqzi6NuhrcEDR7a+z0yrh11elY66nRrQIpqsqW6sZmpxYkDLtpRH8jRML+mmxYQ8s4qqF06Q/IQx5aJeQ==} engines: {node: '>=v14'} dependencies: conventional-changelog-conventionalcommits: 5.0.0 dev: true - /@commitlint/config-validator/17.4.0: - resolution: {integrity: sha512-Sa/+8KNpDXz4zT4bVbz2fpFjvgkPO6u2V2fP4TKgt6FjmOw2z3eEX859vtfeaTav/ukBw0/0jr+5ZTZp9zCBhA==} + /@commitlint/config-validator/17.4.4: + resolution: {integrity: sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.4.0 + '@commitlint/types': 17.4.4 ajv: 8.12.0 dev: true - /@commitlint/ensure/17.4.0: - resolution: {integrity: sha512-7oAxt25je0jeQ/E0O/M8L3ADb1Cvweu/5lc/kYF8g/kXatI0wxGE5La52onnAUAWeWlsuvBNar15WcrmDmr5Mw==} + /@commitlint/ensure/17.4.4: + resolution: {integrity: sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.4.0 + '@commitlint/types': 17.4.4 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 @@ -1791,49 +1838,49 @@ packages: engines: {node: '>=v14'} dev: true - /@commitlint/format/17.4.0: - resolution: {integrity: sha512-Z2bWAU5+f1YZh9W76c84J8iLIWIvvm+mzqogTz0Nsc1x6EHW0Z2gI38g5HAjB0r0I3ZjR15IDEJKhsxyblcyhA==} + /@commitlint/format/17.4.4: + resolution: {integrity: sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.4.0 + '@commitlint/types': 17.4.4 chalk: 4.1.2 dev: true - /@commitlint/is-ignored/17.4.2: - resolution: {integrity: sha512-1b2Y2qJ6n7bHG9K6h8S4lBGUl6kc7mMhJN9gy1SQfUZqe92ToDjUTtgNWb6LbzR1X8Cq4SEus4VU8Z/riEa94Q==} + /@commitlint/is-ignored/17.4.4: + resolution: {integrity: sha512-Y3eo1SFJ2JQDik4rWkBC4tlRIxlXEFrRWxcyrzb1PUT2k3kZ/XGNuCDfk/u0bU2/yS0tOA/mTjFsV+C4qyACHw==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.4.0 + '@commitlint/types': 17.4.4 semver: 7.3.8 dev: true - /@commitlint/lint/17.4.2: - resolution: {integrity: sha512-HcymabrdBhsDMNzIv146+ZPNBPBK5gMNsVH+el2lCagnYgCi/4ixrHooeVyS64Fgce2K26+MC7OQ4vVH8wQWVw==} + /@commitlint/lint/17.4.4: + resolution: {integrity: sha512-qgkCRRFjyhbMDWsti/5jRYVJkgYZj4r+ZmweZObnbYqPUl5UKLWMf9a/ZZisOI4JfiPmRktYRZ2JmqlSvg+ccw==} engines: {node: '>=v14'} dependencies: - '@commitlint/is-ignored': 17.4.2 - '@commitlint/parse': 17.4.2 - '@commitlint/rules': 17.4.2 - '@commitlint/types': 17.4.0 + '@commitlint/is-ignored': 17.4.4 + '@commitlint/parse': 17.4.4 + '@commitlint/rules': 17.4.4 + '@commitlint/types': 17.4.4 dev: true - /@commitlint/load/17.4.2: - resolution: {integrity: sha512-Si++F85rJ9t4hw6JcOw1i2h0fdpdFQt0YKwjuK4bk9KhFjyFkRxvR3SB2dPaMs+EwWlDrDBGL+ygip1QD6gmPw==} + /@commitlint/load/17.4.4: + resolution: {integrity: sha512-z6uFIQ7wfKX5FGBe1AkOF4l/ShOQsaa1ml/nLMkbW7R/xF8galGS7Zh0yHvzVp/srtfS0brC+0bUfQfmpMPFVQ==} engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 17.4.0 + '@commitlint/config-validator': 17.4.4 '@commitlint/execute-rule': 17.4.0 - '@commitlint/resolve-extends': 17.4.0 - '@commitlint/types': 17.4.0 - '@types/node': 16.18.12 + '@commitlint/resolve-extends': 17.4.4 + '@commitlint/types': 17.4.4 + '@types/node': 16.18.14 chalk: 4.1.2 - cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.3.0_gg653o4cxizhrslchmhiad54ma + cosmiconfig: 8.1.0 + cosmiconfig-typescript-loader: 4.3.0_z4cmoxhxykwsj2nxjdheup2ixi lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1_rcvzjt2q3f6gordb34f5djrkie + ts-node: 10.9.1_zix2iy4c4a7fivhrc3ey4gy2pu typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -1845,46 +1892,46 @@ packages: engines: {node: '>=v14'} dev: true - /@commitlint/parse/17.4.2: - resolution: {integrity: sha512-DK4EwqhxfXpyCA+UH8TBRIAXAfmmX4q9QRBz/2h9F9sI91yt6mltTrL6TKURMcjUVmgaB80wgS9QybNIyVBIJA==} + /@commitlint/parse/17.4.4: + resolution: {integrity: sha512-EKzz4f49d3/OU0Fplog7nwz/lAfXMaDxtriidyGF9PtR+SRbgv4FhsfF310tKxs6EPj8Y+aWWuX3beN5s+yqGg==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.4.0 + '@commitlint/types': 17.4.4 conventional-changelog-angular: 5.0.13 conventional-commits-parser: 3.2.4 dev: true - /@commitlint/read/17.4.2: - resolution: {integrity: sha512-hasYOdbhEg+W4hi0InmXHxtD/1favB4WdwyFxs1eOy/DvMw6+2IZBmATgGOlqhahsypk4kChhxjAFJAZ2F+JBg==} + /@commitlint/read/17.4.4: + resolution: {integrity: sha512-B2TvUMJKK+Svzs6eji23WXsRJ8PAD+orI44lVuVNsm5zmI7O8RSGJMvdEZEikiA4Vohfb+HevaPoWZ7PiFZ3zA==} engines: {node: '>=v14'} dependencies: '@commitlint/top-level': 17.4.0 - '@commitlint/types': 17.4.0 + '@commitlint/types': 17.4.4 fs-extra: 11.1.0 git-raw-commits: 2.0.11 minimist: 1.2.8 dev: true - /@commitlint/resolve-extends/17.4.0: - resolution: {integrity: sha512-3JsmwkrCzoK8sO22AzLBvNEvC1Pmdn/65RKXzEtQMy6oYMl0Snrq97a5bQQEFETF0VsvbtUuKttLqqgn99OXRQ==} + /@commitlint/resolve-extends/17.4.4: + resolution: {integrity: sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==} engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 17.4.0 - '@commitlint/types': 17.4.0 + '@commitlint/config-validator': 17.4.4 + '@commitlint/types': 17.4.4 import-fresh: 3.3.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 resolve-global: 1.0.0 dev: true - /@commitlint/rules/17.4.2: - resolution: {integrity: sha512-OGrPsMb9Fx3/bZ64/EzJehY9YDSGWzp81Pj+zJiY+r/NSgJI3nUYdlS37jykNIugzazdEXfMtQ10kmA+Kx2pZQ==} + /@commitlint/rules/17.4.4: + resolution: {integrity: sha512-0tgvXnHi/mVcyR8Y8mjTFZIa/FEQXA4uEutXS/imH2v1UNkYDSEMsK/68wiXRpfW1euSgEdwRkvE1z23+yhNrQ==} engines: {node: '>=v14'} dependencies: - '@commitlint/ensure': 17.4.0 + '@commitlint/ensure': 17.4.4 '@commitlint/message': 17.4.2 '@commitlint/to-lines': 17.4.0 - '@commitlint/types': 17.4.0 + '@commitlint/types': 17.4.4 execa: 5.1.1 dev: true @@ -1900,8 +1947,8 @@ packages: find-up: 5.0.0 dev: true - /@commitlint/types/17.4.0: - resolution: {integrity: sha512-2NjAnq5IcxY9kXtUeO2Ac0aPpvkuOmwbH/BxIm36XXK5LtWFObWJWjXOA+kcaABMrthjWu6la+FUpyYFMHRvbA==} + /@commitlint/types/17.4.4: + resolution: {integrity: sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==} engines: {node: '>=v14'} dependencies: chalk: 4.1.2 @@ -1914,14 +1961,11 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@emotion/babel-plugin/11.10.5: - resolution: {integrity: sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==} - peerDependencies: - '@babel/core': ^7.0.0 + /@emotion/babel-plugin/11.10.6: + resolution: {integrity: sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==} dependencies: '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.18.6 - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 '@emotion/memoize': 0.8.0 '@emotion/serialize': 1.1.1 @@ -1967,20 +2011,17 @@ packages: /@emotion/memoize/0.8.0: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} - /@emotion/react/11.10.5_pmekkgnqduwlme35zpnqhenc34: - resolution: {integrity: sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==} + /@emotion/react/11.10.6_pmekkgnqduwlme35zpnqhenc34: + resolution: {integrity: sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==} peerDependencies: - '@babel/core': ^7.0.0 '@types/react': '*' react: '>=16.8.0' peerDependenciesMeta: - '@babel/core': - optional: true '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 - '@emotion/babel-plugin': 11.10.5 + '@babel/runtime': 7.21.0 + '@emotion/babel-plugin': 11.10.6 '@emotion/cache': 11.10.5 '@emotion/serialize': 1.1.1 '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 @@ -2004,23 +2045,20 @@ packages: resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} dev: false - /@emotion/styled/11.10.5_g6cddab2ma6w7rmdnelgn6dq2a: - resolution: {integrity: sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==} + /@emotion/styled/11.10.6_oouaibmszuch5k64ms7uxp2aia: + resolution: {integrity: sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==} peerDependencies: - '@babel/core': ^7.0.0 '@emotion/react': ^11.0.0-rc.0 '@types/react': '*' react: '>=16.8.0' peerDependenciesMeta: - '@babel/core': - optional: true '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 - '@emotion/babel-plugin': 11.10.5 + '@babel/runtime': 7.21.0 + '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.5_pmekkgnqduwlme35zpnqhenc34 + '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 '@emotion/serialize': 1.1.1 '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 '@emotion/utils': 1.2.0 @@ -2244,8 +2282,8 @@ packages: dev: true optional: true - /@eslint/eslintrc/1.4.1: - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + /@eslint/eslintrc/2.0.0: + resolution: {integrity: sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -2261,6 +2299,11 @@ packages: - supports-color dev: true + /@eslint/js/8.35.0: + resolution: {integrity: sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@humanwhocodes/config-array/0.11.8: resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} engines: {node: '>=10.10.0'} @@ -2302,7 +2345,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 - '@types/node': 16.18.12 + '@types/node': 16.18.14 chalk: 4.1.2 jest-message-util: 28.1.3 jest-util: 28.1.3 @@ -2323,14 +2366,14 @@ packages: '@jest/test-result': 28.1.3 '@jest/transform': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.12 + '@types/node': 16.18.14 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 28.1.3 - jest-config: 28.1.3_@types+node@16.18.12 + jest-config: 28.1.3_@types+node@16.18.14 jest-haste-map: 28.1.3 jest-message-util: 28.1.3 jest-regex-util: 28.0.2 @@ -2358,7 +2401,7 @@ packages: dependencies: '@jest/fake-timers': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.12 + '@types/node': 16.18.14 jest-mock: 28.1.3 dev: true @@ -2385,7 +2428,7 @@ packages: dependencies: '@jest/types': 28.1.3 '@sinonjs/fake-timers': 9.1.2 - '@types/node': 16.18.12 + '@types/node': 16.18.14 jest-message-util: 28.1.3 jest-mock: 28.1.3 jest-util: 28.1.3 @@ -2417,7 +2460,7 @@ packages: '@jest/transform': 28.1.3 '@jest/types': 28.1.3 '@jridgewell/trace-mapping': 0.3.17 - '@types/node': 16.18.12 + '@types/node': 16.18.14 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -2435,7 +2478,7 @@ packages: string-length: 4.0.2 strip-ansi: 6.0.1 terminal-link: 2.1.1 - v8-to-istanbul: 9.0.1 + v8-to-istanbul: 9.1.0 transitivePeerDependencies: - supports-color dev: true @@ -2480,7 +2523,7 @@ packages: resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@jest/types': 28.1.3 '@jridgewell/trace-mapping': 0.3.17 babel-plugin-istanbul: 6.1.1 @@ -2506,7 +2549,7 @@ packages: '@jest/schemas': 28.1.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 16.18.12 + '@types/node': 16.18.14 '@types/yargs': 17.0.22 chalk: 4.1.2 dev: true @@ -2580,8 +2623,8 @@ packages: '@lezer/common': 1.0.2 dev: false - /@lezer/html/1.3.1: - resolution: {integrity: sha512-mxmArW0psdJ3Vd3bZvCbrFpd7gNJgTjqTLhFZfTPo3jsw0STaQ68EWVWBQInv9W8j94XKaL2sbO3qixicFMnYw==} + /@lezer/html/1.3.3: + resolution: {integrity: sha512-04Fyvu66DjV2EjhDIG1kfDdktn5Pfw56SXPrzKNQH5B2m7BDfc6bDsz+ZJG8dLS3kIPEKbyyq1Sm2/kjeG0+AA==} dependencies: '@lezer/common': 1.0.2 '@lezer/highlight': 1.1.3 @@ -2694,8 +2737,8 @@ packages: - webpack-cli dev: true - /@nestjs/common/9.3.8_welcnyot5bzd5wa2aovbkxpi4i: - resolution: {integrity: sha512-CM2+pSDvOrEXETCYciXQPYP9iCral3zu6GHbQkP1PKyyZDtvVsRNoVJ/zVFdmEUwsqvsV75X1VvyXt5w4OA1mg==} + /@nestjs/common/9.3.9_welcnyot5bzd5wa2aovbkxpi4i: + resolution: {integrity: sha512-GshTD9Xz+wD2em6NyzU4NXw5IXMUmapgDgD+iuj6XL0258hvDwODmNk37mBBnZvTZlqER+krvIUKnS34etqF/A==} peerDependencies: cache-manager: <=5 class-transformer: '*' @@ -2718,14 +2761,14 @@ packages: tslib: 2.5.0 uid: 2.0.1 - /@nestjs/config/2.3.1_6sysrfnceog466mrogtvxnbmxe: + /@nestjs/config/2.3.1_jrq2rdgfp2sx67wmylmrqliwxe: resolution: {integrity: sha512-Ckzel0NZ9CWhNsLfE1hxfDuxJuEbhQvGxSlmZ1/X8awjRmAA/g3kT6M1+MO1SHj1wMtPyUfd9WpwkiqFbiwQgA==} peerDependencies: '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 reflect-metadata: ^0.1.13 rxjs: ^6.0.0 || ^7.2.0 dependencies: - '@nestjs/common': 9.3.8_welcnyot5bzd5wa2aovbkxpi4i + '@nestjs/common': 9.3.9_welcnyot5bzd5wa2aovbkxpi4i dotenv: 16.0.3 dotenv-expand: 10.0.0 lodash: 4.17.21 @@ -2734,8 +2777,8 @@ packages: uuid: 9.0.0 dev: false - /@nestjs/core/9.3.8_7ssxb7bx3nq7vbdensazueyaee: - resolution: {integrity: sha512-LtKMF7qzlSN+B4lItxHc/r9IJTSgURZAT5LqMtZynmYDpIkkiG7UrKKx/jAolUF41SGkKXzC6Lh+yralZ97i5A==} + /@nestjs/core/9.3.9_q6agyr4hwia55oswpsa7zjxcpm: + resolution: {integrity: sha512-9g1A1G9eirLXEpH21rc6dKb08zHc2+adhCRz8NW39hbejcsxxD72FApJzt4QBQAKvu862ixt/tdpStnFT7lOSw==} requiresBuild: true peerDependencies: '@nestjs/common': ^9.0.0 @@ -2752,8 +2795,8 @@ packages: '@nestjs/websockets': optional: true dependencies: - '@nestjs/common': 9.3.8_welcnyot5bzd5wa2aovbkxpi4i - '@nestjs/platform-express': 9.3.8_znlpu2ktzydjx7rl4llynpumdm + '@nestjs/common': 9.3.9_welcnyot5bzd5wa2aovbkxpi4i + '@nestjs/platform-express': 9.3.9_77foi4w27ghy47yutmnzv7krjy '@nuxtjs/opencollective': 0.3.2 fast-safe-stringify: 2.1.1 iterare: 1.2.1 @@ -2765,17 +2808,17 @@ packages: transitivePeerDependencies: - encoding - /@nestjs/jwt/10.0.2_@nestjs+common@9.3.8: + /@nestjs/jwt/10.0.2_@nestjs+common@9.3.9: resolution: {integrity: sha512-MLxjCSbO7C9fN2hst5kpIhnJAgglJmrKppXAXqElB8A9ip3ZuCowMDjjmNWWJyfOzE98NV0E0iEQGE2StMUC+Q==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 dependencies: - '@nestjs/common': 9.3.8_welcnyot5bzd5wa2aovbkxpi4i + '@nestjs/common': 9.3.9_welcnyot5bzd5wa2aovbkxpi4i '@types/jsonwebtoken': 9.0.1 jsonwebtoken: 9.0.0 dev: false - /@nestjs/mapped-types/1.2.2_sf6mjpfx2bxuyqvfxh2ti3e5cq: + /@nestjs/mapped-types/1.2.2_sm5si6oczf3vcbfl6qa276t67m: resolution: {integrity: sha512-3dHxLXs3M0GPiriAcCFFJQHoDFUuzTD5w6JDhE7TyfT89YKpe6tcCCIqOZWdXmt9AZjjK30RkHRSFF+QEnWFQg==} peerDependencies: '@nestjs/common': ^7.0.8 || ^8.0.0 || ^9.0.0 @@ -2788,30 +2831,30 @@ packages: class-validator: optional: true dependencies: - '@nestjs/common': 9.3.8_welcnyot5bzd5wa2aovbkxpi4i + '@nestjs/common': 9.3.9_welcnyot5bzd5wa2aovbkxpi4i class-transformer: 0.5.1 class-validator: 0.14.0 reflect-metadata: 0.1.13 dev: false - /@nestjs/passport/9.0.3_h5em43qqpxejdeuyldpwjpxdbe: + /@nestjs/passport/9.0.3_v3ijvyhfbmibt6kvwmic262qla: resolution: {integrity: sha512-HplSJaimEAz1IOZEu+pdJHHJhQyBOPAYWXYHfAPQvRqWtw4FJF1VXl1Qtk9dcXQX1eKytDtH+qBzNQc19GWNEg==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 passport: ^0.4.0 || ^0.5.0 || ^0.6.0 dependencies: - '@nestjs/common': 9.3.8_welcnyot5bzd5wa2aovbkxpi4i + '@nestjs/common': 9.3.9_welcnyot5bzd5wa2aovbkxpi4i passport: 0.6.0 dev: false - /@nestjs/platform-express/9.3.8_znlpu2ktzydjx7rl4llynpumdm: - resolution: {integrity: sha512-VY0tZbMPXyLypIm1FwpFC+xv0DR0RWx+M4baD9JiLmh+jdojm/blfzoFqVMRoZ33F9Q3iUjrQfSJOfgbbTiv5g==} + /@nestjs/platform-express/9.3.9_77foi4w27ghy47yutmnzv7krjy: + resolution: {integrity: sha512-f8ja2sYuDGj2QSMmjg05n3WF19wJG5yTiYxRi64nsu5GKL0qLM1LzxNemehkni/knExlvF2bDpbKKpna9nC1JA==} peerDependencies: '@nestjs/common': ^9.0.0 '@nestjs/core': ^9.0.0 dependencies: - '@nestjs/common': 9.3.8_welcnyot5bzd5wa2aovbkxpi4i - '@nestjs/core': 9.3.8_7ssxb7bx3nq7vbdensazueyaee + '@nestjs/common': 9.3.9_welcnyot5bzd5wa2aovbkxpi4i + '@nestjs/core': 9.3.9_q6agyr4hwia55oswpsa7zjxcpm body-parser: 1.20.1 cors: 2.8.5 express: 4.18.2 @@ -2849,7 +2892,7 @@ packages: - chokidar dev: true - /@nestjs/swagger/6.2.1_ydfrcawl5wcdik4dgpzikzb6by: + /@nestjs/swagger/6.2.1_ldzmua2hsw2tga2e42i6lmmdty: resolution: {integrity: sha512-9M2vkfJHIzLqDZwvM5TEZO0MxRCvIb0xVy0LsmWwxH1lrb0z/4MhU+r2CWDhBtTccVJrKxVPiU2s3T3b9uUJbg==} peerDependencies: '@fastify/static': ^6.0.0 @@ -2866,9 +2909,9 @@ packages: class-validator: optional: true dependencies: - '@nestjs/common': 9.3.8_welcnyot5bzd5wa2aovbkxpi4i - '@nestjs/core': 9.3.8_7ssxb7bx3nq7vbdensazueyaee - '@nestjs/mapped-types': 1.2.2_sf6mjpfx2bxuyqvfxh2ti3e5cq + '@nestjs/common': 9.3.9_welcnyot5bzd5wa2aovbkxpi4i + '@nestjs/core': 9.3.9_q6agyr4hwia55oswpsa7zjxcpm + '@nestjs/mapped-types': 1.2.2_sm5si6oczf3vcbfl6qa276t67m class-transformer: 0.5.1 class-validator: 0.14.0 js-yaml: 4.1.0 @@ -2878,8 +2921,8 @@ packages: swagger-ui-dist: 4.15.5 dev: false - /@nestjs/testing/9.3.8_aknvb6i6yy6c5uvn7ka6dpvunu: - resolution: {integrity: sha512-QyGOfrEOWbT8mi7ruYnh/taKuHDv4caAyf4WZ1YKkGn4tCeTKKNXSvV/y+NoO5o9Li/sLiq9B8EmleB1fxGajw==} + /@nestjs/testing/9.3.9_yqmogfxzeu633isbftgaoi4ho4: + resolution: {integrity: sha512-+mPvSVvSC2SAkYgZZv1mOI2xsdGc1pmq7/sem7iin/JDoFtlvoGSK+pfZHD3IV3EpYtq1v/8/5gi+UFH9yZnDg==} peerDependencies: '@nestjs/common': ^9.0.0 '@nestjs/core': ^9.0.0 @@ -2891,9 +2934,9 @@ packages: '@nestjs/platform-express': optional: true dependencies: - '@nestjs/common': 9.3.8_welcnyot5bzd5wa2aovbkxpi4i - '@nestjs/core': 9.3.8_7ssxb7bx3nq7vbdensazueyaee - '@nestjs/platform-express': 9.3.8_znlpu2ktzydjx7rl4llynpumdm + '@nestjs/common': 9.3.9_welcnyot5bzd5wa2aovbkxpi4i + '@nestjs/core': 9.3.9_q6agyr4hwia55oswpsa7zjxcpm + '@nestjs/platform-express': 9.3.9_77foi4w27ghy47yutmnzv7krjy tslib: 2.5.0 dev: true @@ -3022,8 +3065,8 @@ packages: - supports-color dev: true - /@prisma/client/4.10.1_prisma@4.10.1: - resolution: {integrity: sha512-VonXLJZybdt8e5XZH5vnIGCRNnIh6OMX1FS3H/yzMGLT3STj5TJ/OkMcednrvELgk8PK89Vo3aSh51MWNO0axA==} + /@prisma/client/4.11.0_prisma@4.11.0: + resolution: {integrity: sha512-0INHYkQIqgAjrt7NzhYpeDQi8x3Nvylc2uDngKyFDDj1tTRQ4uV1HnVmd1sQEraeVAN63SOK0dgCKQHlvjL0KA==} engines: {node: '>=14.17'} requiresBuild: true peerDependencies: @@ -3032,21 +3075,21 @@ packages: prisma: optional: true dependencies: - '@prisma/engines-version': 4.10.1-2.aead147aa326ccb985dcfed5b065b4fdabd44b19 - prisma: 4.10.1 + '@prisma/engines-version': 4.11.0-57.8fde8fef4033376662cad983758335009d522acb + prisma: 4.11.0 dev: false - /@prisma/engines-version/4.10.1-2.aead147aa326ccb985dcfed5b065b4fdabd44b19: - resolution: {integrity: sha512-tsjTho7laDhf9EJ9EnDxAPEf7yrigSMDhniXeU4YoWc7azHAs4GPxRi2P9LTFonmHkJLMOLjR77J1oIP8Ife1w==} + /@prisma/engines-version/4.11.0-57.8fde8fef4033376662cad983758335009d522acb: + resolution: {integrity: sha512-3Vd8Qq06d5xD8Ch5WauWcUUrsVPdMC6Ge8ILji8RFfyhUpqon6qSyGM0apvr1O8n8qH8cKkEFqRPsYjuz5r83g==} dev: false - /@prisma/engines/4.10.1: - resolution: {integrity: sha512-B3tcTxjx196nuAu1GOTKO9cGPUgTFHYRdkPkTS4m5ptb2cejyBlH9X7GOfSt3xlI7p4zAJDshJP4JJivCg9ouA==} + /@prisma/engines/4.11.0: + resolution: {integrity: sha512-0AEBi2HXGV02cf6ASsBPhfsVIbVSDC9nbQed4iiY5eHttW9ZtMxHThuKZE1pnESbr8HRdgmFSa/Kn4OSNYuibg==} requiresBuild: true dev: false - /@remix-run/router/1.3.2: - resolution: {integrity: sha512-t54ONhl/h75X94SWsHGQ4G/ZrCEguKSRQr7DrjTciJXW0YU1QhlwYeycvK5JgkzlxmvrK7wq1NB/PLtHxoiDcA==} + /@remix-run/router/1.3.3: + resolution: {integrity: sha512-YRHie1yQEj0kqqCTCJEfHqYSSNlZQ696QJG+MMiW4mxSl9I0ojz/eRhJS4fs88Z5i6D1SmoF9d3K99/QOhI8/w==} engines: {node: '>=14'} dev: false @@ -3066,93 +3109,93 @@ packages: '@sinonjs/commons': 1.8.6 dev: true - /@svgr/babel-plugin-add-jsx-attribute/6.5.1_@babel+core@7.20.12: + /@svgr/babel-plugin-add-jsx-attribute/6.5.1_@babel+core@7.21.0: resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 dev: true - /@svgr/babel-plugin-remove-jsx-attribute/6.5.0_@babel+core@7.20.12: + /@svgr/babel-plugin-remove-jsx-attribute/6.5.0_@babel+core@7.21.0: resolution: {integrity: sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 dev: true - /@svgr/babel-plugin-remove-jsx-empty-expression/6.5.0_@babel+core@7.20.12: + /@svgr/babel-plugin-remove-jsx-empty-expression/6.5.0_@babel+core@7.21.0: resolution: {integrity: sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 dev: true - /@svgr/babel-plugin-replace-jsx-attribute-value/6.5.1_@babel+core@7.20.12: + /@svgr/babel-plugin-replace-jsx-attribute-value/6.5.1_@babel+core@7.21.0: resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 dev: true - /@svgr/babel-plugin-svg-dynamic-title/6.5.1_@babel+core@7.20.12: + /@svgr/babel-plugin-svg-dynamic-title/6.5.1_@babel+core@7.21.0: resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 dev: true - /@svgr/babel-plugin-svg-em-dimensions/6.5.1_@babel+core@7.20.12: + /@svgr/babel-plugin-svg-em-dimensions/6.5.1_@babel+core@7.21.0: resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 dev: true - /@svgr/babel-plugin-transform-react-native-svg/6.5.1_@babel+core@7.20.12: + /@svgr/babel-plugin-transform-react-native-svg/6.5.1_@babel+core@7.21.0: resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 dev: true - /@svgr/babel-plugin-transform-svg-component/6.5.1_@babel+core@7.20.12: + /@svgr/babel-plugin-transform-svg-component/6.5.1_@babel+core@7.21.0: resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 dev: true - /@svgr/babel-preset/6.5.1_@babel+core@7.20.12: + /@svgr/babel-preset/6.5.1_@babel+core@7.21.0: resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1_@babel+core@7.20.12 - '@svgr/babel-plugin-remove-jsx-attribute': 6.5.0_@babel+core@7.20.12 - '@svgr/babel-plugin-remove-jsx-empty-expression': 6.5.0_@babel+core@7.20.12 - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1_@babel+core@7.20.12 - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1_@babel+core@7.20.12 - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1_@babel+core@7.20.12 - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1_@babel+core@7.20.12 - '@svgr/babel-plugin-transform-svg-component': 6.5.1_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1_@babel+core@7.21.0 + '@svgr/babel-plugin-remove-jsx-attribute': 6.5.0_@babel+core@7.21.0 + '@svgr/babel-plugin-remove-jsx-empty-expression': 6.5.0_@babel+core@7.21.0 + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1_@babel+core@7.21.0 + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1_@babel+core@7.21.0 + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1_@babel+core@7.21.0 + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1_@babel+core@7.21.0 + '@svgr/babel-plugin-transform-svg-component': 6.5.1_@babel+core@7.21.0 dev: true /@svgr/cli/6.5.1: @@ -3177,8 +3220,8 @@ packages: resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.20.12 - '@svgr/babel-preset': 6.5.1_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@svgr/babel-preset': 6.5.1_@babel+core@7.21.0 '@svgr/plugin-jsx': 6.5.1_@svgr+core@6.5.1 camelcase: 6.3.0 cosmiconfig: 7.1.0 @@ -3190,7 +3233,7 @@ packages: resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} engines: {node: '>=10'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 entities: 4.4.0 dev: true @@ -3200,8 +3243,8 @@ packages: peerDependencies: '@svgr/core': ^6.0.0 dependencies: - '@babel/core': 7.20.12 - '@svgr/babel-preset': 6.5.1_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@svgr/babel-preset': 6.5.1_@babel+core@7.21.0 '@svgr/core': 6.5.1 '@svgr/hast-util-to-babel-ast': 6.5.1 svg-parser: 2.0.4 @@ -3232,8 +3275,8 @@ packages: svgo: 2.8.0 dev: true - /@swc/core-darwin-arm64/1.3.35: - resolution: {integrity: sha512-zQUFkHx4gZpu0uo2IspvPnKsz8bsdXd5bC33xwjtoAI1cpLerDyqo4v2zIahEp+FdKZjyVsLHtfJiQiA1Qka3A==} + /@swc/core-darwin-arm64/1.3.38: + resolution: {integrity: sha512-4ZTJJ/cR0EsXW5UxFCifZoGfzQ07a8s4ayt1nLvLQ5QoB1GTAf9zsACpvWG8e7cmCR0L76R5xt8uJuyr+noIXA==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] @@ -3241,8 +3284,8 @@ packages: dev: true optional: true - /@swc/core-darwin-x64/1.3.35: - resolution: {integrity: sha512-oOSkSGWtALovaw22lNevKD434OQTPf8X+dVPvPMrJXJpJ34dWDlFWpLntoc+arvKLNZ7LQmTuk8rR1hkrAY7cw==} + /@swc/core-darwin-x64/1.3.38: + resolution: {integrity: sha512-Kim727rNo4Dl8kk0CR8aJQe4zFFtsT1TZGlNrNMUgN1WC3CRX7dLZ6ZJi/VVcTG1cbHp5Fp3mUzwHsMxEh87Mg==} engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -3250,8 +3293,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm-gnueabihf/1.3.35: - resolution: {integrity: sha512-Yie8k00O6O8BCATS/xeKStquV4OYSskUGRDXBQVDw1FrE23PHaSeHCgg4q6iNZjJzXCOJbaTCKnYoIDn9DMf7A==} + /@swc/core-linux-arm-gnueabihf/1.3.38: + resolution: {integrity: sha512-yaRdnPNU2enlJDRcIMvYVSyodY+Amhf5QuXdUbAj6rkDD6wUs/s9C6yPYrFDmoTltrG+nBv72mUZj+R46wVfSw==} engines: {node: '>=10'} cpu: [arm] os: [linux] @@ -3259,8 +3302,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-gnu/1.3.35: - resolution: {integrity: sha512-Zlv3WHa/4x2p51HSvjUWXHfSe1Gl2prqImUZJc8NZOlj75BFzVuR0auhQ+LbwvIQ3gaA1LODX9lyS9wXL3yjxA==} + /@swc/core-linux-arm64-gnu/1.3.38: + resolution: {integrity: sha512-iNY1HqKo/wBSu3QOGBUlZaLdBP/EHcwNjBAqIzpb8J64q2jEN02RizqVW0mDxyXktJ3lxr3g7VW9uqklMeXbjQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -3268,8 +3311,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-musl/1.3.35: - resolution: {integrity: sha512-u6tCYsrSyZ8U+4jLMA/O82veBfLy2aUpn51WxQaeH7wqZGy9TGSJXoO8vWxARQ6b72vjsnKDJHP4MD8hFwcctg==} + /@swc/core-linux-arm64-musl/1.3.38: + resolution: {integrity: sha512-LJCFgLZoPRkPCPmux+Q5ctgXRp6AsWhvWuY61bh5bIPBDlaG9pZk94DeHyvtiwT0syhTtXb2LieBOx6NqN3zeA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -3277,8 +3320,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-gnu/1.3.35: - resolution: {integrity: sha512-Dtxf2IbeH7XlNhP1Qt2/MvUPkpEbn7hhGfpSRs4ot8D3Vf5QEX4S/QtC1OsFWuciiYgHAT1Ybjt4xZic9DSkmA==} + /@swc/core-linux-x64-gnu/1.3.38: + resolution: {integrity: sha512-hRQGRIWHmv2PvKQM/mMV45mVXckM2+xLB8TYLLgUG66mmtyGTUJPyxjnJkbI86WNGqo18k+lAuMG2mn6QmzYwQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -3286,8 +3329,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-musl/1.3.35: - resolution: {integrity: sha512-4XavNJ60GprjpTiESCu5daJUnmErixPAqDitJSMu4TV32LNIE8G00S9pDLXinDTW1rgcGtQdq1NLkNRmwwovtg==} + /@swc/core-linux-x64-musl/1.3.38: + resolution: {integrity: sha512-PTYSqtsIfPHLKDDNbueI5e0sc130vyHRiFOeeC6qqzA2FAiVvIxuvXHLr0soPvKAR1WyhtYmFB9QarcctemL2w==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -3295,8 +3338,8 @@ packages: dev: true optional: true - /@swc/core-win32-arm64-msvc/1.3.35: - resolution: {integrity: sha512-dNGfKCUSX2M4qVyaS80Lyos0FkXyHRCvrdQ2Y4Hrg3FVokiuw3yY6fLohpUfQ5ws3n2A39dh7jGDeh34+l0sGA==} + /@swc/core-win32-arm64-msvc/1.3.38: + resolution: {integrity: sha512-9lHfs5TPNs+QdkyZFhZledSmzBEbqml/J1rqPSb9Fy8zB6QlspixE6OLZ3nTlUOdoGWkcTTdrOn77Sd7YGf1AA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -3304,8 +3347,8 @@ packages: dev: true optional: true - /@swc/core-win32-ia32-msvc/1.3.35: - resolution: {integrity: sha512-ChuPSrDR+JBf7S7dEKPicnG8A3bM0uWPsW2vG+V2wH4iNfNxKVemESHosmYVeEZXqMpomNMvLyeHep1rjRsc0Q==} + /@swc/core-win32-ia32-msvc/1.3.38: + resolution: {integrity: sha512-SbL6pfA2lqvDKnwTHwOfKWvfHAdcbAwJS4dBkFidr7BiPTgI5Uk8wAPcRb8mBECpmIa9yFo+N0cAFRvMnf+cNw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] @@ -3313,8 +3356,8 @@ packages: dev: true optional: true - /@swc/core-win32-x64-msvc/1.3.35: - resolution: {integrity: sha512-/RvphT4WfuGfIK84Ha0dovdPrKB1bW/mc+dtdmhv2E3EGkNc5FoueNwYmXWRimxnU7X0X7IkcRhyKB4G5DeAmg==} + /@swc/core-win32-x64-msvc/1.3.38: + resolution: {integrity: sha512-UFveLrL6eGvViOD8OVqUQa6QoQwdqwRvLtL5elF304OT8eCPZa8BhuXnWk25X8UcOyns8gFcb8Fhp3oaLi/Rlw==} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -3322,21 +3365,21 @@ packages: dev: true optional: true - /@swc/core/1.3.35: - resolution: {integrity: sha512-KmiBin0XSVzJhzX19zTiCqmLslZ40Cl7zqskJcTDeIrRhfgKdiAsxzYUanJgMJIRjYtl9Kcg1V/Ip2o2wL8v3w==} + /@swc/core/1.3.38: + resolution: {integrity: sha512-AiEVehRFws//AiiLx9DPDp1WDXt+yAoGD1kMYewhoF6QLdTz8AtYu6i8j/yAxk26L8xnegy0CDwcNnub9qenyQ==} engines: {node: '>=10'} requiresBuild: true optionalDependencies: - '@swc/core-darwin-arm64': 1.3.35 - '@swc/core-darwin-x64': 1.3.35 - '@swc/core-linux-arm-gnueabihf': 1.3.35 - '@swc/core-linux-arm64-gnu': 1.3.35 - '@swc/core-linux-arm64-musl': 1.3.35 - '@swc/core-linux-x64-gnu': 1.3.35 - '@swc/core-linux-x64-musl': 1.3.35 - '@swc/core-win32-arm64-msvc': 1.3.35 - '@swc/core-win32-ia32-msvc': 1.3.35 - '@swc/core-win32-x64-msvc': 1.3.35 + '@swc/core-darwin-arm64': 1.3.38 + '@swc/core-darwin-x64': 1.3.38 + '@swc/core-linux-arm-gnueabihf': 1.3.38 + '@swc/core-linux-arm64-gnu': 1.3.38 + '@swc/core-linux-arm64-musl': 1.3.38 + '@swc/core-linux-x64-gnu': 1.3.38 + '@swc/core-linux-x64-musl': 1.3.38 + '@swc/core-win32-arm64-msvc': 1.3.38 + '@swc/core-win32-ia32-msvc': 1.3.38 + '@swc/core-win32-x64-msvc': 1.3.38 dev: true /@tanstack/match-sorter-utils/8.7.6: @@ -3346,26 +3389,26 @@ packages: remove-accents: 0.4.2 dev: true - /@tanstack/query-core/4.24.6: - resolution: {integrity: sha512-Tfru6YTDTCpX7dKVwHp/sosw/dNjEdzrncduUjIkQxn7n7u+74HT2ZrGtwwrU6Orws4x7zp3FKRqBPWVVhpx9w==} + /@tanstack/query-core/4.26.1: + resolution: {integrity: sha512-Zrx2pVQUP4ndnsu6+K/m8zerXSVY8QM+YSbxA1/jbBY21GeCd5oKfYl92oXPK0hPEUtoNuunIdiq0ZMqLos+Zg==} - /@tanstack/react-query-devtools/4.24.6_r32zdxeb7iubg3qfkymfterewe: - resolution: {integrity: sha512-d8CN4ZTtLkdCNi9x4Hogma0fdhlv7ckknv/RLuV4nbUciUoZEvhg1cI0+vp/1aY4W3jq9vH0BD/eUQKecgY15Q==} + /@tanstack/react-query-devtools/4.26.1_brdhmlf72zuns3lsk66phyptty: + resolution: {integrity: sha512-ts2mA+fyFYFRi3Cee4xBk8Fx6waSFOM+yCkFqwJfGQRGjjTIMYMZPJv4wkv7vy12IVi1SYhL8au22LRKlXS1Zg==} peerDependencies: - '@tanstack/react-query': 4.24.6 + '@tanstack/react-query': 4.26.1 react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@tanstack/match-sorter-utils': 8.7.6 - '@tanstack/react-query': 4.24.6_biqbaboplfbrettd7655fr4n2y + '@tanstack/react-query': 4.26.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 superjson: 1.12.2 use-sync-external-store: 1.2.0_react@18.2.0 dev: true - /@tanstack/react-query/4.24.6_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-pbJUVZCS4pcXS0kZiY+mVJ01ude0GrH5OXT2g9whcqSveRG/YVup/XdA9NdRpSMGkP2HxDRxxRNsTXkniWeIIA==} + /@tanstack/react-query/4.26.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-i3dnz4TOARGIXrXQ5P7S25Zfi4noii/bxhcwPurh2nrf5EUCcAt/95TB2HSmMweUBx206yIMWUMEQ7ptd6zwDg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -3376,7 +3419,7 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.24.6 + '@tanstack/query-core': 4.26.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 use-sync-external-store: 1.2.0_react@18.2.0 @@ -3410,8 +3453,8 @@ packages: /@types/babel__core/7.20.0: resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: - '@babel/parser': 7.20.15 - '@babel/types': 7.20.7 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.3 @@ -3420,32 +3463,32 @@ packages: /@types/babel__generator/7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.20.15 - '@babel/types': 7.20.7 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 dev: true /@types/babel__traverse/7.18.3: resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true /@types/body-parser/1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 16.18.12 + '@types/node': 16.18.14 /@types/connect/3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 16.18.12 + '@types/node': 16.18.14 /@types/cookie-parser/1.4.3: resolution: {integrity: sha512-CqSKwFwefj4PzZ5n/iwad/bow2hTCh0FlNAeWLtQM3JA/NX/iYagIpWG2cf1bQKQ2c9gU2log5VUCrn7LDOs0w==} @@ -3460,12 +3503,12 @@ packages: /@types/eslint-scope/3.7.4: resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} dependencies: - '@types/eslint': 8.21.0 + '@types/eslint': 8.21.1 '@types/estree': 0.0.51 dev: true - /@types/eslint/8.21.0: - resolution: {integrity: sha512-35EhHNOXgxnUgh4XCJsGhE7zdlDhYDN/aMG6UbkByCFFNgQ7b3U+uVoqBpicFydR8JEfgdjCF7SJ7MiJfzuiTA==} + /@types/eslint/8.21.1: + resolution: {integrity: sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ==} dependencies: '@types/estree': 0.0.51 '@types/json-schema': 7.0.11 @@ -3478,7 +3521,7 @@ packages: /@types/express-serve-static-core/4.17.33: resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: - '@types/node': 16.18.12 + '@types/node': 16.18.14 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 @@ -3488,12 +3531,12 @@ packages: '@types/body-parser': 1.19.2 '@types/express-serve-static-core': 4.17.33 '@types/qs': 6.9.7 - '@types/serve-static': 1.15.0 + '@types/serve-static': 1.15.1 /@types/graceful-fs/4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 16.18.12 + '@types/node': 16.18.14 dev: true /@types/hoist-non-react-statics/3.3.1: @@ -3533,7 +3576,7 @@ packages: /@types/jsonwebtoken/9.0.1: resolution: {integrity: sha512-c5ltxazpWabia/4UzhIoaDcIza4KViOQhdbjRlfcIGVnsE3c3brkz9Z+F/EeJIECOQP7W7US2hNE930cWWkPiw==} dependencies: - '@types/node': 16.18.12 + '@types/node': 16.18.14 /@types/linkify-it/3.0.2: resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} @@ -3563,8 +3606,8 @@ packages: '@types/express': 4.17.17 dev: true - /@types/node/16.18.12: - resolution: {integrity: sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw==} + /@types/node/16.18.14: + resolution: {integrity: sha512-wvzClDGQXOCVNU4APPopC2KtMYukaF1MN/W3xAmslx22Z4/IF1/izDMekuyoUlwfnDHYCIZGaj7jMwnJKBTxKw==} /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -3573,7 +3616,7 @@ packages: /@types/oauth/0.9.1: resolution: {integrity: sha512-a1iY62/a3yhZ7qH7cNUsxoI3U/0Fe9+RnuFrpTKr+0WVOzbKlSLojShCKe20aOD1Sppv+i8Zlq0pLDuTJnwS4A==} dependencies: - '@types/node': 16.18.12 + '@types/node': 16.18.14 dev: true /@types/parse-json/4.0.0: @@ -3583,7 +3626,7 @@ packages: resolution: {integrity: sha512-+WLyrd8JPsCxroK34EjegR0j3FMxp6wqB9cw/sRCFkWT9qic1dymAn021gr336EpyjzdhjUd2KKrqyxvdFSvOA==} dependencies: '@types/express': 4.17.17 - '@types/passport': 1.0.11 + '@types/passport': 1.0.12 '@types/passport-oauth2': 1.4.12 dev: true @@ -3600,18 +3643,18 @@ packages: dependencies: '@types/express': 4.17.17 '@types/oauth': 0.9.1 - '@types/passport': 1.0.11 + '@types/passport': 1.0.12 dev: true /@types/passport-strategy/0.2.35: resolution: {integrity: sha512-o5D19Jy2XPFoX2rKApykY15et3Apgax00RRLf0RUotPDUsYrQa7x4howLYr9El2mlUApHmCMv5CZ1IXqKFQ2+g==} dependencies: '@types/express': 4.17.17 - '@types/passport': 1.0.11 + '@types/passport': 1.0.12 dev: true - /@types/passport/1.0.11: - resolution: {integrity: sha512-pz1cx9ptZvozyGKKKIPLcVDVHwae4hrH5d6g5J+DkMRRjR3cVETb4jMabhXAUbg3Ov7T22nFHEgaK2jj+5CBpw==} + /@types/passport/1.0.12: + resolution: {integrity: sha512-QFdJ2TiAEoXfEQSNDISJR1Tm51I78CymqcBa8imbjo6dNNu+l2huDxxbDEIoFIwOSKMkOfHEikyDuZ38WwWsmw==} dependencies: '@types/express': 4.17.17 dev: true @@ -3635,8 +3678,8 @@ packages: '@types/react': 18.0.28 dev: false - /@types/react-dom/18.0.10: - resolution: {integrity: sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==} + /@types/react-dom/18.0.11: + resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: '@types/react': 18.0.28 dev: true @@ -3661,6 +3704,12 @@ packages: resolution: {integrity: sha512-JpJNEJEsmmltyL2LdE8KRjJ0L2ad5vgLibqNj85clohT9AyTrfN6jvHxStPshDkmtcL/ShFu0p2tbY7DBS1mqQ==} dev: true + /@types/sanitize-html/2.8.1: + resolution: {integrity: sha512-Q6kMAbBBaXA5IagoipeSr4Y/zuGyh4BZ5lewgb3cYe3OYqy0k/d67iMsC4O895eks676bVAe9G+0y1i0k2ZlnA==} + dependencies: + htmlparser2: 8.0.1 + dev: true + /@types/scheduler/0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} @@ -3668,11 +3717,11 @@ packages: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: true - /@types/serve-static/1.15.0: - resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} + /@types/serve-static/1.15.1: + resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} dependencies: '@types/mime': 3.0.1 - '@types/node': 16.18.12 + '@types/node': 16.18.14 /@types/stack-utils/2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} @@ -3682,7 +3731,7 @@ packages: resolution: {integrity: sha512-tLfnlJf6A5mB6ddqF159GqcDizfzbMUB1/DeT59/wBNqzRTNNKsaw79A/1TZ84X+f/EwWH8FeuSkjlCLyqS/zQ==} dependencies: '@types/cookiejar': 2.1.2 - '@types/node': 16.18.12 + '@types/node': 16.18.14 dev: true /@types/supertest/2.0.12: @@ -3691,8 +3740,8 @@ packages: '@types/superagent': 4.1.16 dev: true - /@types/validator/13.7.12: - resolution: {integrity: sha512-YVtyAPqpefU+Mm/qqnOANW6IkqKpCSrarcyV269C8MA8Ux0dbkEuQwM/4CjL47kVEM2LgBef/ETfkH+c6+moFA==} + /@types/validator/13.7.13: + resolution: {integrity: sha512-EMfHccxNKXaSxTK6DN0En9WsXa7uR4w3LQtx31f6Z2JjG5hJQeVX5zUYMZoatjZgnoQmRcT94WnNWwi0BzQW6Q==} /@types/yargs-parser/21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} @@ -3704,8 +3753,8 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin/5.51.0_z4swst3wuuqk4hlme4ajzslgh4: - resolution: {integrity: sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==} + /@typescript-eslint/eslint-plugin/5.54.1_mlk7dnz565t663n4razh6a6v6i: + resolution: {integrity: sha512-a2RQAkosH3d3ZIV08s3DcL/mcGc2M/UC528VkPULFxR9VnVPT8pBu0IyBAJJmVsCmhVfwQX1v6q+QGnmSe1bew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -3715,12 +3764,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm - '@typescript-eslint/scope-manager': 5.51.0 - '@typescript-eslint/type-utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm - '@typescript-eslint/utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/parser': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/scope-manager': 5.54.1 + '@typescript-eslint/type-utils': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/utils': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu debug: 4.3.4 - eslint: 8.34.0 + eslint: 8.35.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 @@ -3732,8 +3781,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==} + /@typescript-eslint/parser/5.54.1_ycpbpc6yetojsgtrx3mwntkhsu: + resolution: {integrity: sha512-8zaIXJp/nG9Ff9vQNh7TI+C3nA6q6iIsGJ4B4L6MhZ7mHnTMR4YP5vp2xydmFXIy8rpyIVbNAG44871LMt6ujg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3742,26 +3791,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.51.0 - '@typescript-eslint/types': 5.51.0 - '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.54.1 + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 debug: 4.3.4 - eslint: 8.34.0 + eslint: 8.35.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.51.0: - resolution: {integrity: sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==} + /@typescript-eslint/scope-manager/5.54.1: + resolution: {integrity: sha512-zWKuGliXxvuxyM71UA/EcPxaviw39dB2504LqAmFDjmkpO8qNLHcmzlh6pbHs1h/7YQ9bnsO8CCcYCSA8sykUg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.51.0 - '@typescript-eslint/visitor-keys': 5.51.0 + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/visitor-keys': 5.54.1 dev: true - /@typescript-eslint/type-utils/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==} + /@typescript-eslint/type-utils/5.54.1_ycpbpc6yetojsgtrx3mwntkhsu: + resolution: {integrity: sha512-WREHsTz0GqVYLIbzIZYbmUUr95DKEKIXZNH57W3s+4bVnuF1TKe2jH8ZNH8rO1CeMY3U4j4UQeqPNkHMiGem3g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -3770,23 +3819,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 + '@typescript-eslint/utils': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu debug: 4.3.4 - eslint: 8.34.0 + eslint: 8.35.0 tsutils: 3.21.0_typescript@4.9.5 typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.51.0: - resolution: {integrity: sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==} + /@typescript-eslint/types/5.54.1: + resolution: {integrity: sha512-G9+1vVazrfAfbtmCapJX8jRo2E4MDXxgm/IMOF4oGh3kq7XuK3JRkOg6y2Qu1VsTRmWETyTkWt1wxy7X7/yLkw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.51.0_typescript@4.9.5: - resolution: {integrity: sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==} + /@typescript-eslint/typescript-estree/5.54.1_typescript@4.9.5: + resolution: {integrity: sha512-bjK5t+S6ffHnVwA0qRPTZrxKSaFYocwFIkZx5k7pvWfsB1I57pO/0M0Skatzzw1sCkjJ83AfGTL0oFIFiDX3bg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -3794,8 +3843,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.51.0 - '@typescript-eslint/visitor-keys': 5.51.0 + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/visitor-keys': 5.54.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -3806,55 +3855,55 @@ packages: - supports-color dev: true - /@typescript-eslint/utils/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==} + /@typescript-eslint/utils/5.54.1_ycpbpc6yetojsgtrx3mwntkhsu: + resolution: {integrity: sha512-IY5dyQM8XD1zfDe5X8jegX6r2EVU5o/WJnLu/znLPWCBF7KNGC+adacXnt5jEYS9JixDcoccI6CvE4RCjHMzCQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.51.0 - '@typescript-eslint/types': 5.51.0 - '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 - eslint: 8.34.0 + '@typescript-eslint/scope-manager': 5.54.1 + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 + eslint: 8.35.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.34.0 + eslint-utils: 3.0.0_eslint@8.35.0 semver: 7.3.8 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys/5.51.0: - resolution: {integrity: sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==} + /@typescript-eslint/visitor-keys/5.54.1: + resolution: {integrity: sha512-q8iSoHTgwCfgcRJ2l2x+xCbu8nBlRAlsQ33k24Adj8eoVBE0f8dUeI+bAa8F84Mv05UGbAx57g2zrRsYIooqQg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.51.0 + '@typescript-eslint/types': 5.54.1 eslint-visitor-keys: 3.3.0 dev: true - /@vitejs/plugin-react-swc/3.1.0_vite@4.1.1: - resolution: {integrity: sha512-xnDULNrkEbtTtRNnMPp+RsuIuIbk1JJV0xY7irchYyv9JJS4uvmc1EYip+qyrnkcX7TQ9c8vCS3AmkQqADI0Fw==} + /@vitejs/plugin-react-swc/3.2.0_vite@4.1.4: + resolution: {integrity: sha512-IcBoXL/mcH7JdQr/nfDlDwTdIaH8Rg7LpfQDF4nAht+juHWIuv6WhpKPCSfY4+zztAaB07qdBoFz1XCZsgo3pQ==} peerDependencies: vite: ^4 dependencies: - '@swc/core': 1.3.35 - vite: 4.1.1 + '@swc/core': 1.3.38 + vite: 4.1.4 dev: true - /@vitejs/plugin-react/3.1.0_vite@4.1.1: + /@vitejs/plugin-react/3.1.0_vite@4.1.4: resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.1.0-beta.0 dependencies: - '@babel/core': 7.20.12 - '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/plugin-transform-react-jsx-self': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.21.0 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.1 + vite: 4.1.4 transitivePeerDependencies: - supports-color dev: true @@ -4247,13 +4296,13 @@ packages: /axios/0.21.4_debug@4.3.4: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} dependencies: - follow-redirects: 1.15.2_debug@4.3.4 + follow-redirects: 1.15.2 transitivePeerDependencies: - debug dev: true - /axios/1.3.2: - resolution: {integrity: sha512-1M3O703bYqYuPhbHeya5bnhpYVsDDRyQSabNja04mZtboLNSuZ4YrltestrLXfHgmzua4TpUqRiVKbiQuo2epw==} + /axios/1.3.4: + resolution: {integrity: sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==} dependencies: follow-redirects: 1.15.2 form-data: 4.0.0 @@ -4262,17 +4311,17 @@ packages: - debug dev: false - /babel-jest/28.1.3_@babel+core@7.20.12: + /babel-jest/28.1.3_@babel+core@7.21.0: resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@jest/transform': 28.1.3 '@types/babel__core': 7.20.0 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 28.1.3_@babel+core@7.20.12 + babel-preset-jest: 28.1.3_@babel+core@7.21.0 chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -4298,7 +4347,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@babel/template': 7.20.7 - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 '@types/babel__core': 7.20.0 '@types/babel__traverse': 7.18.3 dev: true @@ -4307,39 +4356,39 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 cosmiconfig: 7.1.0 resolve: 1.22.1 - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.20.12: + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.21.0: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.12 - dev: true - - /babel-preset-jest/28.1.3_@babel+core@7.20.12: + '@babel/core': 7.21.0 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.0 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.0 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.21.0 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.21.0 + dev: true + + /babel-preset-jest/28.1.3_@babel+core@7.21.0: resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 babel-plugin-jest-hoist: 28.1.3 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.21.0 dev: true /balanced-match/1.0.2: @@ -4364,7 +4413,7 @@ packages: dependencies: buffer: 5.7.1 inherits: 2.0.4 - readable-stream: 3.6.0 + readable-stream: 3.6.1 dev: true /blessed/0.1.81: @@ -4428,8 +4477,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001451 - electron-to-chromium: 1.4.295 + caniuse-lite: 1.0.30001464 + electron-to-chromium: 1.4.325 node-releases: 2.0.10 update-browserslist-db: 1.0.10_browserslist@4.21.5 dev: true @@ -4500,8 +4549,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001451: - resolution: {integrity: sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==} + /caniuse-lite/1.0.30001464: + resolution: {integrity: sha512-oww27MtUmusatpRpCGSOneQk2/l5czXANDSFvsc7VuOQ86s3ANhZetpwXNf1zY/zdfP63Xvjz325DAdAoES13g==} dev: true /chalk/2.4.2: @@ -4575,8 +4624,8 @@ packages: /class-validator/0.14.0: resolution: {integrity: sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==} dependencies: - '@types/validator': 13.7.12 - libphonenumber-js: 1.10.19 + '@types/validator': 13.7.13 + libphonenumber-js: 1.10.21 validator: 13.9.0 /clean-stack/2.2.0: @@ -4655,13 +4704,13 @@ packages: /codemirror/6.0.1: resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} dependencies: - '@codemirror/autocomplete': 6.4.1_@codemirror+view@6.9.0 + '@codemirror/autocomplete': 6.4.2_@codemirror+view@6.9.2 '@codemirror/commands': 6.2.1 '@codemirror/language': 6.6.0 - '@codemirror/lint': 6.1.0 + '@codemirror/lint': 6.2.0 '@codemirror/search': 6.2.3 '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.0 + '@codemirror/view': 6.9.2 dev: false /collect-v8-coverage/1.0.1: @@ -4738,7 +4787,7 @@ packages: dependencies: buffer-from: 1.1.2 inherits: 2.0.4 - readable-stream: 2.3.7 + readable-stream: 2.3.8 typedarray: 0.0.6 /consola/2.15.3: @@ -4835,7 +4884,7 @@ packages: object-assign: 4.1.1 vary: 1.1.2 - /cosmiconfig-typescript-loader/4.3.0_gg653o4cxizhrslchmhiad54ma: + /cosmiconfig-typescript-loader/4.3.0_z4cmoxhxykwsj2nxjdheup2ixi: resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4844,9 +4893,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 16.18.12 - cosmiconfig: 8.0.0 - ts-node: 10.9.1_rcvzjt2q3f6gordb34f5djrkie + '@types/node': 16.18.14 + cosmiconfig: 8.1.0 + ts-node: 10.9.1_zix2iy4c4a7fivhrc3ey4gy2pu typescript: 4.9.5 dev: true @@ -4860,8 +4909,8 @@ packages: path-type: 4.0.0 yaml: 1.10.2 - /cosmiconfig/8.0.0: - resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} + /cosmiconfig/8.1.0: + resolution: {integrity: sha512-0tLZ9URlPGU7JsKq0DQOQ3FoRsYX8xDZ7xMiATQfaiGMz7EHowNkbU9u1coAOmnh9p/1ySpm0RB3JNWRXM5GCg==} engines: {node: '>=14'} dependencies: import-fresh: 3.3.0 @@ -5108,6 +5157,14 @@ packages: entities: 2.2.0 dev: true + /dom-serializer/2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.4.0 + dev: true + /domelementtype/2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: true @@ -5119,6 +5176,13 @@ packages: domelementtype: 2.3.0 dev: true + /domhandler/5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + /domutils/2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} dependencies: @@ -5127,6 +5191,14 @@ packages: domhandler: 4.3.1 dev: true + /domutils/3.0.1: + resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: true + /dot-prop/5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -5157,8 +5229,8 @@ packages: /ee-first/1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - /electron-to-chromium/1.4.295: - resolution: {integrity: sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw==} + /electron-to-chromium/1.4.325: + resolution: {integrity: sha512-K1C03NT4I7BuzsRdCU5RWkgZxtswnKDYM6/eMhkEXqKu4e5T+ck610x3FPzu1y7HVFSiQKZqP16gnJzPpji1TQ==} dev: true /emitter-listener/1.1.2: @@ -5243,7 +5315,7 @@ packages: has-proto: 1.0.1 has-symbols: 1.0.3 internal-slot: 1.0.5 - is-array-buffer: 3.0.1 + is-array-buffer: 3.0.2 is-callable: 1.2.7 is-negative-zero: 2.0.2 is-regex: 1.1.4 @@ -5355,16 +5427,16 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier/8.6.0_eslint@8.34.0: - resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} + /eslint-config-prettier/8.7.0_eslint@8.35.0: + resolution: {integrity: sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.34.0 + eslint: 8.35.0 dev: true - /eslint-plugin-prettier/4.2.1_u5wnrdwibbfomslmnramz52buy: + /eslint-plugin-prettier/4.2.1_xprnzp4ul2bcpmfe73av4voica: resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5375,8 +5447,8 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.34.0 - eslint-config-prettier: 8.6.0_eslint@8.34.0 + eslint: 8.35.0 + eslint-config-prettier: 8.7.0_eslint@8.35.0 prettier: 2.8.4 prettier-linter-helpers: 1.0.0 dev: true @@ -5427,13 +5499,13 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.34.0: + /eslint-utils/3.0.0_eslint@8.35.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.34.0 + eslint: 8.35.0 eslint-visitor-keys: 2.1.0 dev: true @@ -5447,12 +5519,13 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.34.0: - resolution: {integrity: sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==} + /eslint/8.35.0: + resolution: {integrity: sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.4.1 + '@eslint/eslintrc': 2.0.0 + '@eslint/js': 8.35.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -5463,10 +5536,10 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.34.0 + eslint-utils: 3.0.0_eslint@8.35.0 eslint-visitor-keys: 3.3.0 espree: 9.4.1 - esquery: 1.4.0 + esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -5510,8 +5583,8 @@ packages: hasBin: true dev: true - /esquery/1.4.0: - resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + /esquery/1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 @@ -5702,8 +5775,8 @@ packages: /fast-safe-stringify/2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - /fast-xml-parser/4.0.11: - resolution: {integrity: sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA==} + /fast-xml-parser/4.1.2: + resolution: {integrity: sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==} hasBin: true dependencies: strnum: 1.0.5 @@ -5804,19 +5877,6 @@ packages: peerDependenciesMeta: debug: optional: true - dev: false - - /follow-redirects/1.15.2_debug@4.3.4: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dependencies: - debug: 4.3.4 - dev: true /for-each/0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -5865,7 +5925,7 @@ packages: dezalgo: 1.0.4 hexoid: 1.0.0 once: 1.4.0 - qs: 6.11.0 + qs: 6.11.1 dev: true /forwarded/0.2.0: @@ -6221,6 +6281,15 @@ packages: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true + /htmlparser2/8.0.1: + resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.0.1 + entities: 4.4.0 + dev: true + /http-errors/2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -6397,8 +6466,8 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - /is-array-buffer/3.0.1: - resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==} + /is-array-buffer/3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.0 @@ -6510,6 +6579,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-plain-object/5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + dev: true + /is-regex/1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -6602,8 +6676,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.20.12 - '@babel/parser': 7.20.15 + '@babel/core': 7.21.0 + '@babel/parser': 7.21.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -6659,7 +6733,7 @@ packages: '@jest/expect': 28.1.3 '@jest/test-result': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.12 + '@types/node': 16.18.14 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6699,7 +6773,7 @@ packages: jest-util: 28.1.3 jest-validate: 28.1.3 prompts: 2.4.2 - yargs: 17.6.2 + yargs: 17.7.1 transitivePeerDependencies: - '@types/node' - supports-color @@ -6718,10 +6792,10 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@jest/test-sequencer': 28.1.3 '@jest/types': 28.1.3 - babel-jest: 28.1.3_@babel+core@7.20.12 + babel-jest: 28.1.3_@babel+core@7.21.0 chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.0 @@ -6744,7 +6818,7 @@ packages: - supports-color dev: true - /jest-config/28.1.3_@types+node@16.18.12: + /jest-config/28.1.3_@types+node@16.18.14: resolution: {integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: @@ -6756,11 +6830,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@jest/test-sequencer': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.12 - babel-jest: 28.1.3_@babel+core@7.20.12 + '@types/node': 16.18.14 + babel-jest: 28.1.3_@babel+core@7.21.0 chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.0 @@ -6818,7 +6892,7 @@ packages: '@jest/environment': 28.1.3 '@jest/fake-timers': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.12 + '@types/node': 16.18.14 jest-mock: 28.1.3 jest-util: 28.1.3 dev: true @@ -6834,7 +6908,7 @@ packages: dependencies: '@jest/types': 28.1.3 '@types/graceful-fs': 4.1.6 - '@types/node': 16.18.12 + '@types/node': 16.18.14 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.10 @@ -6885,7 +6959,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 - '@types/node': 16.18.12 + '@types/node': 16.18.14 dev: true /jest-pnp-resolver/1.2.3_jest-resolve@28.1.3: @@ -6939,7 +7013,7 @@ packages: '@jest/test-result': 28.1.3 '@jest/transform': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.12 + '@types/node': 16.18.14 chalk: 4.1.2 emittery: 0.10.2 graceful-fs: 4.2.10 @@ -6993,17 +7067,17 @@ packages: resolution: {integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/core': 7.20.12 - '@babel/generator': 7.20.14 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/core': 7.21.0 + '@babel/generator': 7.21.1 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.21.0 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 '@jest/expect-utils': 28.1.3 '@jest/transform': 28.1.3 '@jest/types': 28.1.3 '@types/babel__traverse': 7.18.3 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.21.0 chalk: 4.1.2 expect: 28.1.3 graceful-fs: 4.2.10 @@ -7025,7 +7099,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 - '@types/node': 16.18.12 + '@types/node': 16.18.14 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.10 @@ -7050,7 +7124,7 @@ packages: dependencies: '@jest/test-result': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.12 + '@types/node': 16.18.14 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.10.2 @@ -7062,7 +7136,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 16.18.12 + '@types/node': 16.18.14 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -7071,7 +7145,7 @@ packages: resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@types/node': 16.18.12 + '@types/node': 16.18.14 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -7250,8 +7324,8 @@ packages: type-check: 0.4.0 dev: true - /libphonenumber-js/1.10.19: - resolution: {integrity: sha512-MDZ1zLIkfSDZV5xBta3nuvbEOlsnKCPe4z5r3hyup/AXveevkl9A1eSWmLhd2FX4k7pJDe4MrLeQsux0HI/VWg==} + /libphonenumber-js/1.10.21: + resolution: {integrity: sha512-/udZhx49av2r2gZR/+xXSrwcR8smX/sDNrVpOFrvW+CA26TfYTVZfwb3MIDvmwAYMLs7pXuJjZX0VxxGpqPhsA==} /lilconfig/2.0.6: resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} @@ -7416,8 +7490,8 @@ packages: dependencies: yallist: 4.0.0 - /macos-release/2.5.0: - resolution: {integrity: sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==} + /macos-release/2.5.1: + resolution: {integrity: sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==} engines: {node: '>=6'} dev: true @@ -7886,7 +7960,7 @@ packages: resolution: {integrity: sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==} engines: {node: '>=10'} dependencies: - macos-release: 2.5.0 + macos-release: 2.5.1 windows-release: 4.0.0 dev: true @@ -7946,7 +8020,7 @@ packages: http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 pac-resolver: 5.0.1 - raw-body: 2.5.1 + raw-body: 2.5.2 socks-proxy-agent: 5.0.1 transitivePeerDependencies: - supports-color @@ -7980,6 +8054,10 @@ packages: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + /parse-srcset/1.0.2: + resolution: {integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==} + dev: true + /parseurl/1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -7988,11 +8066,11 @@ packages: resolution: {integrity: sha512-3nPUCc7ttF/3HSP/k9sAXjz3SkGv5Nki84I05kSQPo01Jqq1NzJACgMblCK0fGcv9pKCG/KXU3AJRDGLqHLoIw==} engines: {node: '>= 0.8.0'} dependencies: - passport-oauth2: 1.6.1 + passport-oauth2: 1.7.0 dev: false - /passport-oauth2/1.6.1: - resolution: {integrity: sha512-ZbV43Hq9d/SBSYQ22GOiglFsjsD1YY/qdiptA+8ej+9C1dL1TVB+mBE5kDH/D4AJo50+2i8f4bx0vg4/yDDZCQ==} + /passport-oauth2/1.7.0: + resolution: {integrity: sha512-j2gf34szdTF2Onw3+76alNnaAExlUmHvkc7cL+cmaS5NzHzDP/BvFHJruueQ9XAeNOdpI+CH+PWid8RA7KCwAQ==} engines: {node: '>= 0.4.0'} dependencies: base64url: 3.0.1 @@ -8141,7 +8219,7 @@ packages: async: 3.2.4 debug: 4.3.4 pidusage: 2.0.21 - systeminformation: 5.17.9 + systeminformation: 5.17.12 tx2: 1.0.5 transitivePeerDependencies: - supports-color @@ -8232,13 +8310,13 @@ packages: react-is: 18.2.0 dev: true - /prisma/4.10.1: - resolution: {integrity: sha512-0jDxgg+DruB1kHVNlcspXQB9au62IFfVg9drkhzXudszHNUAQn0lVuu+T8np0uC2z1nKD5S3qPeCyR8u5YFLnA==} + /prisma/4.11.0: + resolution: {integrity: sha512-4zZmBXssPUEiX+GeL0MUq/Yyie4ltiKmGu7jCJFnYMamNrrulTBc+D+QwAQSJ01tyzeGHlD13kOnqPwRipnlNw==} engines: {node: '>=14.17'} hasBin: true requiresBuild: true dependencies: - '@prisma/engines': 4.10.1 + '@prisma/engines': 4.11.0 dev: false /process-nextick-args/2.0.1: @@ -8314,6 +8392,12 @@ packages: dependencies: side-channel: 1.0.4 + /qs/6.11.1: + resolution: {integrity: sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true @@ -8346,13 +8430,23 @@ packages: iconv-lite: 0.4.24 unpipe: 1.0.0 + /raw-body/2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + /react-beautiful-dnd/13.1.1_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ==} peerDependencies: react: ^16.8.5 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.5 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 css-box-model: 1.2.1 memoize-one: 5.2.1 raf-schd: 4.0.3 @@ -8380,7 +8474,7 @@ packages: peerDependencies: react: '>=16.13.1' dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 react: 18.2.0 dev: false @@ -8407,7 +8501,7 @@ packages: react-native: optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@types/react-redux': 7.1.25 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -8422,26 +8516,26 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-router-dom/6.8.1_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-67EXNfkQgf34P7+PSb6VlBuaacGhkKn3kpE51+P6zYSG2kiRoumXEL6e27zTa9+PGF2MNXbgIUHTVlleLbIcHQ==} + /react-router-dom/6.8.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-N/oAF1Shd7g4tWy+75IIufCGsHBqT74tnzHQhbiUTYILYF0Blk65cg+HPZqwC+6SqEyx033nKqU7by38v3lBZg==} engines: {node: '>=14'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.3.2 + '@remix-run/router': 1.3.3 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-router: 6.8.1_react@18.2.0 + react-router: 6.8.2_react@18.2.0 dev: false - /react-router/6.8.1_react@18.2.0: - resolution: {integrity: sha512-Jgi8BzAJQ8MkPt8ipXnR73rnD7EmZ0HFFb7jdQU24TynGW1Ooqin2KVDN9voSC+7xhqbbCd2cjGUepb6RObnyg==} + /react-router/6.8.2_react@18.2.0: + resolution: {integrity: sha512-lF7S0UmXI5Pd8bmHvMdPKI4u4S5McxmHnzJhrYi9ZQ6wE+DA8JN5BzVC5EEBuduWWDaiJ8u6YhVOCmThBli+rw==} engines: {node: '>=14'} peerDependencies: react: '>=16.8' dependencies: - '@remix-run/router': 1.3.2 + '@remix-run/router': 1.3.3 react: 18.2.0 dev: false @@ -8451,7 +8545,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 react: 18.2.0 use-composed-ref: 1.3.0_react@18.2.0 use-latest: 1.2.1_pmekkgnqduwlme35zpnqhenc34 @@ -8500,8 +8594,8 @@ packages: string_decoder: 0.10.31 dev: true - /readable-stream/2.3.7: - resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + /readable-stream/2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -8511,8 +8605,8 @@ packages: string_decoder: 1.1.1 util-deprecate: 1.0.2 - /readable-stream/3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + /readable-stream/3.6.1: + resolution: {integrity: sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==} engines: {node: '>= 6'} dependencies: inherits: 2.0.4 @@ -8545,7 +8639,7 @@ packages: /redux/4.2.1: resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 dev: false /reflect-metadata/0.1.13: @@ -8668,11 +8762,12 @@ packages: /rimraf/4.1.2: resolution: {integrity: sha512-BlIbgFryTbw3Dz6hyoWFhKk+unCcHMSkZGrTFVAx2WmttdBSonsdtRlwiuTbDqTKr+UlXIUqJVS4QT5tUzGENQ==} engines: {node: '>=14'} + deprecated: Please upgrade to 4.3.1 or higher to fix a potentially damaging issue regarding symbolic link following. See https://github.com/isaacs/rimraf/issues/259 for details. hasBin: true dev: true - /rollup/3.15.0: - resolution: {integrity: sha512-F9hrCAhnp5/zx/7HYmftvsNBkMfLfk/dXUh73hPSM2E3CRgap65orDNJbLetoiUFwSAk6iHPLvBrZ5iHYvzqsg==} + /rollup/3.18.0: + resolution: {integrity: sha512-J8C6VfEBjkvYPESMQYxKHxNOh4A5a3FlP+0BETGo34HEcE4eTlgCrO2+eWzlu2a/sHs2QUkZco+wscH7jhhgWg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -8723,6 +8818,17 @@ packages: /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + /sanitize-html/2.10.0: + resolution: {integrity: sha512-JqdovUd81dG4k87vZt6uA6YhDfWkUGruUu/aPmXLxXi45gZExnt9Bnw/qeQU8oGf82vPyaE0vO4aH0PbobB9JQ==} + dependencies: + deepmerge: 4.3.0 + escape-string-regexp: 4.0.0 + htmlparser2: 8.0.1 + is-plain-object: 5.0.0 + parse-srcset: 1.0.2 + postcss: 8.4.21 + dev: true + /sax/1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} dev: true @@ -8938,8 +9044,8 @@ packages: deprecated: Please use @jridgewell/sourcemap-codec instead dev: true - /spdx-correct/3.1.1: - resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + /spdx-correct/3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.12 @@ -8963,7 +9069,7 @@ packages: /split2/3.2.2: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} dependencies: - readable-stream: 3.6.0 + readable-stream: 3.6.1 dev: true /sprintf-js/1.0.3: @@ -9138,7 +9244,7 @@ packages: formidable: 2.1.2 methods: 1.1.2 mime: 2.6.0 - qs: 6.11.0 + qs: 6.11.1 semver: 7.3.8 transitivePeerDependencies: - supports-color @@ -9214,13 +9320,17 @@ packages: resolution: {integrity: sha512-V3eIa28lwB6gg7/wfNvAbjwJYmDXy1Jo1POjyTzlB6wPcHiGlRxq39TSjYGVjQrUSAzpv+a7nzp7mDxgNy57xA==} dev: false - /swagger-ui-express/4.6.0: - resolution: {integrity: sha512-ZxpQFp1JR2RF8Ar++CyJzEDdvufa08ujNUJgMVTMWPi86CuQeVdBtvaeO/ysrz6dJAYXf9kbVNhWD7JWocwqsA==} + /swagger-ui-dist/4.18.0: + resolution: {integrity: sha512-PZeF7r+JsAXC8tEGatOARSEeC0n3ChGqTDcbZUzrV+mGnlW2ZEystlpiEyMWfAY4FAT+uxibfMuRahEvnoG3CQ==} + dev: false + + /swagger-ui-express/4.6.2: + resolution: {integrity: sha512-MHIOaq9JrTTB3ygUJD+08PbjM5Tt/q7x80yz9VTFIatw8j5uIWKcr90S0h5NLMzFEDC6+eVprtoeA5MDZXCUKQ==} engines: {node: '>= v0.10.32'} peerDependencies: express: '>=4.0.0' dependencies: - swagger-ui-dist: 4.15.5 + swagger-ui-dist: 4.18.0 dev: false /symbol-observable/4.0.0: @@ -9228,8 +9338,8 @@ packages: engines: {node: '>=0.10'} dev: true - /systeminformation/5.17.9: - resolution: {integrity: sha512-inxwRLI/4qpx4o85R54/zdhNagdBGBgs0la7Vl3qBorRVKRDk0nNsDTCGzG4lOITsw1gl7LRWeG4Zsp1pC8nfg==} + /systeminformation/5.17.12: + resolution: {integrity: sha512-I3pfMW2vue53u+X08BNxaJieaHkRoMMKjWetY9lbYJeWFaeWPO6P4FkNc4XOCX8F9vbQ0HqQ25RJoz3U/B7liw==} engines: {node: '>=8.0.0'} os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] hasBin: true @@ -9249,8 +9359,8 @@ packages: supports-hyperlinks: 2.3.0 dev: true - /terser-webpack-plugin/5.3.6_webpack@5.75.0: - resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} + /terser-webpack-plugin/5.3.7_webpack@5.75.0: + resolution: {integrity: sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -9269,12 +9379,12 @@ packages: jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.1 - terser: 5.16.3 + terser: 5.16.5 webpack: 5.75.0 dev: true - /terser/5.16.3: - resolution: {integrity: sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==} + /terser/5.16.5: + resolution: {integrity: sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==} engines: {node: '>=10'} hasBin: true dependencies: @@ -9309,7 +9419,7 @@ packages: /through2/4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} dependencies: - readable-stream: 3.6.0 + readable-stream: 3.6.1 dev: true /tiny-invariant/1.3.1: @@ -9399,7 +9509,7 @@ packages: semver: 7.3.8 dev: true - /ts-node/10.9.1_@types+node@16.18.12: + /ts-node/10.9.1_@types+node@16.18.14: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -9418,7 +9528,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 16.18.12 + '@types/node': 16.18.14 acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9429,7 +9539,7 @@ packages: yn: 3.1.1 dev: true - /ts-node/10.9.1_rcvzjt2q3f6gordb34f5djrkie: + /ts-node/10.9.1_zix2iy4c4a7fivhrc3ey4gy2pu: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -9448,7 +9558,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 16.18.12 + '@types/node': 16.18.14 acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9460,9 +9570,9 @@ packages: yn: 3.1.1 dev: true - /tsconfck/2.0.2: - resolution: {integrity: sha512-H3DWlwKpow+GpVLm/2cpmok72pwRr1YFROV3YzAmvzfGFiC1zEM/mc9b7+1XnrxuXtEbhJ7xUSIqjPFbedp7aQ==} - engines: {node: ^14.13.1 || ^16 || >=18, pnpm: ^7.18.0} + /tsconfck/2.0.3: + resolution: {integrity: sha512-o3DsPZO1+C98KqHMdAbWs30zpxD30kj8r9OLA4ML1yghx4khNDzaaShNalfluh8ZPPhzKe3qyVCP1HiZszSAsw==} + engines: {node: ^14.13.1 || ^16 || >=18} hasBin: true peerDependencies: typescript: ^4.3.5 @@ -9729,8 +9839,8 @@ packages: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true - /v8-to-istanbul/9.0.1: - resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} + /v8-to-istanbul/9.1.0: + resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} dependencies: '@jridgewell/trace-mapping': 0.3.17 @@ -9741,7 +9851,7 @@ packages: /validate-npm-package-license/3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: - spdx-correct: 3.1.1 + spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 dev: true @@ -9758,14 +9868,14 @@ packages: dependencies: debug: 4.3.4 globrex: 0.1.2 - tsconfck: 2.0.2 + tsconfck: 2.0.3 transitivePeerDependencies: - supports-color - typescript dev: true - /vite/4.1.1: - resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} + /vite/4.1.4: + resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -9792,7 +9902,7 @@ packages: esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 - rollup: 3.15.0 + rollup: 3.18.0 optionalDependencies: fsevents: 2.3.2 dev: true @@ -9884,7 +9994,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.1.1 tapable: 2.2.1 - terser-webpack-plugin: 5.3.6_webpack@5.75.0 + terser-webpack-plugin: 5.3.7_webpack@5.75.0 watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -10043,8 +10153,8 @@ packages: engines: {node: '>=12'} dev: true - /yargs/17.6.2: - resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} + /yargs/17.7.1: + resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} engines: {node: '>=12'} dependencies: cliui: 8.0.1 @@ -10066,8 +10176,8 @@ packages: engines: {node: '>=10'} dev: true - /zustand/4.3.3_immer@9.0.19+react@18.2.0: - resolution: {integrity: sha512-x2jXq8S0kfLGNwGh87nhRfEc2eZy37tSatpSoSIN+O6HIaBhgQHSONV/F9VNrNcBcKQu/E80K1DeHDYQC/zCrQ==} + /zustand/4.3.6_immer@9.0.19+react@18.2.0: + resolution: {integrity: sha512-6J5zDxjxLE+yukC2XZWf/IyWVKnXT9b9HUv09VJ/bwGCpKNcaTqp7Ws28Xr8jnbvnZcdRaidztAPsXFBIqufiw==} engines: {node: '>=12.7.0'} peerDependencies: immer: '>=9.0'