Binary files /dev/null and b/public/logo180.png differ Binary files /dev/null and b/public/logo192.png differ Binary files /dev/null and b/public/logo512.png differ @@ -0,0 +1,19 @@ +{ + "name": "AIR", + "short_name": "AIR", + "icons": [ + { + "src": "/logo192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/logo512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "start_url": "/", + "display": "standalone" + } + \ No newline at end of file @@ -0,0 +1,19 @@ +import axios from 'axios' + +import { API_URL } from '@/src/shared/lib/constants' + +import { IUserSetting } from '../model/types' + +export const addUserSettings = async (token: string, setting: Omit): Promise => { + try { + const { data } = await axios.post(API_URL + '/api/users/settings/', setting, { + headers: { + Authorization: `Bearer ${token}`, + }, + }) + + return data + } catch (err) { + return null + } +} @@ -0,0 +1,19 @@ +import axios from 'axios' + +import { API_URL } from '@/src/shared/lib/constants' + +import { IUserSetting } from '../model/types' + +export const getUserSettings = async (token: string): Promise => { + try { + const { data } = await axios.get(API_URL + '/api/users/settings/', { + headers: { + Authorization: `Bearer ${token}`, + }, + }) + + return data + } catch (err) { + return [] + } +} @@ -0,0 +1,23 @@ +import axios from 'axios' + +import { API_URL } from '@/src/shared/lib/constants' + +import { getUpdatedSettingsLocal } from '../lib/helpers/update-setting-local' +import { IUserSetting, SettingValueType } from '../model/types' + +export const updateUserSettings = async (token: string, id: string, value: SettingValueType, settings: IUserSetting[]) => { + try { + const { data } = await axios.put( + API_URL + `/api/users/settings/${id}`, + { value: value }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ) + return getUpdatedSettingsLocal({ settings, id, value }) + } catch (err) { + return null + } +} @@ -0,0 +1,23 @@ +import { Device } from '@/src/shared/lib/types/entities' + +import { IUserSetting, SettingType } from '../../model/types' + +interface IProps { + settings: Omit | null + targetType: SettingType + targetDevice: Device +} + +export function isSettingExist({ settings, targetDevice, targetType }: IProps): IUserSetting | null { + if (!settings || settings.length === 0) { + return null + } + + for (let i = 0; i < settings.length; i++) { + if (settings[i].type === targetType && settings[i].device === targetDevice) { + return settings[i] + } + } + + return null +} @@ -0,0 +1,22 @@ +import { IUserSetting, SettingValueType } from '../../model/types' + +interface IProps { + settings: IUserSetting[] + id: string + value: SettingValueType +} + +export function getUpdatedSettingsLocal({ settings, id, value }: IProps): IUserSetting[] { + if (settings.length === 0) { + return settings + } + + return settings.map((setting) => + setting.id === id + ? { + ...setting, + value, + } + : setting + ) +} @@ -0,0 +1,86 @@ +import { createAsyncThunk, createSlice } from '@reduxjs/toolkit' + +import { addUserSettings } from '../api/add-user-settings' +import { getUserSettings } from '../api/get-user-settings' +import { updateUserSettings } from '../api/update-user-settings' +import { getUpdatedSettingsLocal } from '../lib/helpers/update-setting-local' + +import { IUserSetting, SettingValueType } from './types' + +interface IAddSettings { + token: string | undefined | null + setting: Omit +} + +export const getUserAccountSettings = createAsyncThunk('users/getSettings', async (token: string | undefined | null) => { + if (!token) { + return initialState.state + } + return await getUserSettings(token) +}) + +export const addUserAccountSettings = createAsyncThunk('users/addSettings', async ({ token, setting }: IAddSettings) => { + if (!token) { + return + } + return await addUserSettings(token, setting) +}) + +export const updateUserAccountSettings = createAsyncThunk( + 'users/updateSettings', + async ({ + token, + id, + value, + settings, + }: { + token: string | undefined | null + id: string + value: SettingValueType + settings: IUserSetting[] | null + }) => { + if (!token) { + return initialState.state + } + if (!settings) { + return initialState.state + } + return await updateUserSettings(token, id, value, settings) + } +) + +const initialState: { state: IUserSetting[] | null } = { + state: null, +} + +export const settingsSlice = createSlice({ + name: 'balance', + initialState, + reducers: { + setSettings: (state, action) => { + state.state = action.payload + }, + }, + extraReducers: (builder) => { + builder.addCase(getUserAccountSettings.fulfilled, (state, action) => { + state.state = action.payload + localStorage.setItem('global_settings', JSON.stringify(action.payload)) + }) + builder.addCase(addUserAccountSettings.fulfilled, (state, action) => { + if (state.state === null) state.state = [] + if (action.payload) { + state.state = [...state.state, action.payload] + localStorage.setItem('global_settings', JSON.stringify([...state.state, action.payload])) + } + }) + + builder.addCase(updateUserAccountSettings.fulfilled, (state, action) => { + if (action.payload) { + state.state = action.payload + localStorage.setItem('global_settings', JSON.stringify(action.payload)) + } + }) + }, +}) + +export const { setSettings } = settingsSlice.actions @@ -1 +1,16 @@ +import { Device } from '@/src/shared/lib/types/entities' + export type AccountType = 'regular' | 'business_host' | 'business_account' + +export type SettingType = 'sidemenu' + +export type SettingValueType = { + sidemenu_state?: 'opened' | 'closed' +} + +export interface IUserSetting { + id: string + device: Device + type: SettingType + value: SettingValueType +} @@ -92,11 +92,14 @@ const initialState: UserState & ResponseAllInfo = { export const getAll = async (token: string | null | undefined): Promise => { try { - const { data } = await axios.get>(API_URL + '/auth/me', { - headers: { - Authorization: `Bearer ${token}`, - }, - }) + const { data } = await axios.get>( + API_URL + '/auth/me', + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ) return data } catch (err) { @@ -104,13 +107,23 @@ export const getAll = async (token: string | null | undefined): Promise { - return await getAll(token) -}) +export const getAllInfo = createAsyncThunk( + 'user/getAllInfo', + async (token: string | null | undefined) => { + return await getAll(token) + } +) -export const unfollowEmail = createAsyncThunk('user/unfollowEmail', async (token: string | null | undefined) => { - await axios.patch(API_URL + '/auth/email-sub', {}, { headers: { Authorization: `Bearer ${token}` } }) -}) +export const unfollowEmail = createAsyncThunk( + 'user/unfollowEmail', + async (token: string | null | undefined) => { + await axios.patch( + API_URL + '/auth/email-sub', + {}, + { headers: { Authorization: `Bearer ${token}` } } + ) + } +) export const userSlice = createSlice({ name: 'userSlice', @@ -22,8 +22,8 @@ } .userWrap{ display: flex; - align-items: start; - justify-content: start; + align-items: flex-start; + justify-content: flex-start; flex-direction: column; gap: 6px; max-height: 100px; @@ -13,7 +13,7 @@ .buttons { display: flex; align-items: center; - justify-content: end; + justify-content: flex-end; div { margin-right: 10px; } @@ -37,7 +37,6 @@ export function useChats(model: string): ChatsReturn { const { data } = useSession() useEffect(() => { - [][1] if (model && data?.access) { getAllChats(model, data?.access).then((res) => { setChats(res) @@ -44,7 +44,7 @@ export default function FullScreenModal({ modal, setModal, image }: IProps) {
- {!isSvg ? ( + {!isSvg && image ? ( { - useEffect(() => { - console.log(accessed_models) + + const link = useMemo(() => { + return accessed_models && !accessed_models.includes(slug) + ? '/account?scope=subscribe' + : `chat-bot/${slug}` }, [accessed_models]) return ( - - + + - {/*{''}*/} {title} {text} - - {accessed_models && !accessed_models.includes(slug) && ( - + {accessed_models && !accessed_models.includes(slug) && ( - @@ -294,7 +187,10 @@ const InfoBar: React.FC = ({ title, device }) => { {show_balance && ( - + {declineToken(balance.toString())} @@ -303,12 +199,18 @@ const InfoBar: React.FC = ({ title, device }) => {
+ onClick={(e: any) => { //@ts-ignore handleClick(e) - } + }} src={profile_picture_link as string} - sx={{ width: 40, height: 40, bgcolor: '#8280FF', marginLeft: '10px', cursor: 'pointer' }} + sx={{ + width: 40, + height: 40, + bgcolor: '#8280FF', + marginLeft: '10px', + cursor: 'pointer', + }} > {email[0] || 'N'} @@ -316,7 +218,8 @@ const InfoBar: React.FC = ({ title, device }) => { sx={{ marginTop: '6px' }} PaperProps={{ style: { - backgroundColor: theme === 'dark' ? '#151518' : 'white', + backgroundColor: + theme === 'dark' ? '#151518' : 'white', borderRadius: '13px', boxShadow: 'none', }, @@ -336,9 +239,22 @@ const InfoBar: React.FC = ({ title, device }) => { > - router.push('/account?scope=setting')}> - {''} - + + router.push('/account?scope=setting') + } + > + {''} + {' '} Настройки{' '} @@ -346,9 +262,26 @@ const InfoBar: React.FC = ({ title, device }) => { - router.push('/account?scope=business')}> - {''} - + + router.push( + '/account?scope=business' + ) + } + > + {''} + {' '} Компаниям{' '} @@ -359,9 +292,26 @@ const InfoBar: React.FC = ({ title, device }) => { {account_type === 'regular' && ( - router.push('/account?scope=referral')}> - {''} - + + router.push( + '/account?scope=referral' + ) + } + > + {''} + {' '} Рефералам{' '} @@ -372,18 +322,45 @@ const InfoBar: React.FC = ({ title, device }) => { - router.push('/account?scope=subscribe')}> - {''} - + + router.push( + '/account?scope=subscribe' + ) + } + > + {''} + {' '} Оплата{' '} - signOut()} sx={{ marginTop: '15px', cursor: 'pointer' }}> - {''} - + signOut()} + sx={{ marginTop: '15px', cursor: 'pointer' }} + > + {''} + Выйти @@ -1,4 +1,4 @@ -import React from 'react' +import React, { useState } from 'react' import { Box } from '@mui/material' import { ThemeProvider } from '@mui/material/styles' import Head from 'next/head' @@ -8,8 +8,10 @@ import { useSession } from 'next-auth/react' import { getUserBalance } from '@/src/entities/balance' import { useTheme } from '@/src/entities/theme' import { getAllInfo } from '@/src/entities/user-account' +import { isSettingExist } from '@/src/entities/user-account/lib/helpers/is-setting-exist' +import { getUserAccountSettings, setSettings } from '@/src/entities/user-account/model/settings' import InfoBar from '@/src/main/layout/ui/info-bar' -import { useAppDispatch } from '@/src/main/store/store' +import { useAppDispatch, useAppSelector } from '@/src/main/store/store' import { Loader } from '@/src/shared' import { pingFangFont } from '@/src/shared/lib/constants/font/font' import { Device } from '@/src/shared/lib/types/entities' @@ -28,9 +30,13 @@ interface Props { } export const Layout: React.FC = ({ children, device, isAuthPage = false, titlePage, title = titlePage, isLoader }) => { + const { data: sessionData } = useSession() + const appState = useAppSelector((state) => state) + const dispatch = useAppDispatch() + const desktop = device === 'desktop' - const dispatch = useAppDispatch() + const [sidemenuDefaultOpen, setSidemenuDefaultOpen] = useState(true) useTheme() @@ -49,9 +55,45 @@ export const Layout: React.FC = ({ children, device, isAuthPage = false, } }, [status]) + React.useEffect(() => { + if ((sessionData && !sessionStorage.getItem('firstRender')) || (sessionData && !localStorage.getItem('global_settings'))) { + dispatch(getUserAccountSettings(sessionData.access)) + sessionStorage.setItem('firstRender', 'true') + } + }, [sessionData]) + + React.useEffect(() => { + const lsData = localStorage.getItem('global_settings') + if (lsData !== null) { + dispatch(setSettings(JSON.parse(lsData))) + } + + window.addEventListener('beforeunload', () => { + sessionStorage.removeItem('firstRender') + sessionStorage.clear() + }) + }, []) + + React.useEffect(() => { + if (appState.settings.state !== null && device) { + let setting = isSettingExist({ + settings: appState.settings.state, + targetDevice: device, + targetType: 'sidemenu', + }) + if (setting) setting?.value?.sidemenu_state === 'opened' ? setSidemenuDefaultOpen(true) : setSidemenuDefaultOpen(false) + } + }, [appState.settings.state]) + if (status === 'loading' || isLoader) { return ( - + ) @@ -64,6 +106,8 @@ export const Layout: React.FC = ({ children, device, isAuthPage = false, + + = ({ children, device, isAuthPage = false, {!isAuthPage ? ( desktop ? ( - + @@ -4,6 +4,7 @@ import { configureStore } from '@reduxjs/toolkit' import { balanceSlice } from '@/src/entities/balance' import { themeSlice } from '@/src/entities/theme' import { userSlice } from '@/src/entities/user-account' +import { settingsSlice } from '@/src/entities/user-account/model/settings' import { stepperSlice } from '@/src/features/register-business' import { copySlice } from '@/src/features/use-copy/copy-slice' import { paramsStore } from '@/src/main/store/model-parametres-store' @@ -16,9 +17,10 @@ export const store = configureStore({ balance: balanceSlice.reducer, stepper: stepperSlice.reducer, user: userSlice.reducer, - copy: copySlice.reducer, notification: notificationSlice.reducer, params: paramsStore.reducer, + settings: settingsSlice.reducer, + copy: copySlice.reducer, }, }) @@ -71,7 +71,7 @@ .grMain { display: flex; - justify-content: start; + justify-content: flex-start; height: 100%; .list { @@ -95,7 +95,7 @@ .main_block { display: flex; - align-items: start; + align-items: flex-start; justify-content: space-between; margin-top: 20px; } @@ -102,7 +102,7 @@ .main_block { display: flex; - align-items: start; + align-items: flex-start; justify-content: space-between; margin-top: 20px; } @@ -22,7 +22,7 @@ .buttons_block{ display: flex; - justify-content: start; + justify-content: flex-start; align-items: center; gap: 20px; } @@ -43,7 +43,7 @@ .logsList{ margin-top: 15px; display: flex; - justify-content: start; + justify-content: flex-start; align-items: center; flex-wrap: wrap; gap: 15px; @@ -1,112 +1,111 @@ :root[data-theme='light'] { - --air-color: #8280FF; - --background-color-main: #ffffff; - --background-color-additional: #ffffff; - --background-color-page: #fbfbfb; - --background-color-table: white; - --bg-color-button-gray: #e8e8e8; - --color-btn-gray: #5a5a5a; - --search-bg: white; - --text-color-purple: #7f7df3; - --text-color-main: #373737; - --text-color-additional-one: #868686; - --text-color-additional-two: #5e5e5e; - --border-color: #f5f5f5; - --border-color2: #e7e7e7; - --bg-audio: #f2f2fe; - - --new-ui-bg-app-color: #eff0f2; - --new-ui-main-color: white; - --new-ui-gray-color: #A4AAB5; - --new-ui-text-color: #2B2B42; - --new-ui-border: 2px solid #EFF0F2; - --new-ui-btn-danger-bg: #FF23721A; - --new-ui-ctrl-f-button-bg:#F9F9FC; - --new-ui-ctrl-f-button-border:1px solid #C4CBD8; + --air-color: #8280ff; + --background-color-main: #ffffff; + --background-color-additional: #ffffff; + --background-color-page: #fbfbfb; + --background-color-table: white; + --bg-color-button-gray: #e8e8e8; + --color-btn-gray: #5a5a5a; + --search-bg: white; + --text-color-purple: #7f7df3; + --text-color-main: #373737; + --text-color-additional-one: #868686; + --text-color-additional-two: #5e5e5e; + --border-color: #f5f5f5; + --border-color2: #e7e7e7; + --bg-audio: #f2f2fe; + + --new-ui-bg-app-color: #eff0f2; + --new-ui-main-color: white; + --new-ui-gray-color: #a4aab5; + --new-ui-text-color: #2b2b42; + --new-ui-border: 2px solid #eff0f2; + --new-ui-btn-danger-bg: #ff23721a; + --new-ui-ctrl-f-button-bg: #f9f9fc; + --new-ui-ctrl-f-button-border: 1px solid #c4cbd8; } :root[data-theme='dark'] { - --air-color: #8280FF; - --background-color-main: #303030; - --background-color-page: #303030; - --background-color-table: #4b4b4b; - --background-color-additional: #373737; - --search-bg: #464646; - --color-btn-gray: #d0d0d0; - --bg-color-button-gray: #5d5a5a; - --text-color-additional-one: #d4d4d4; - --text-color-main: #ffffff; - --text-color-additional-two: #ffffff; - --text-color-purple: #7f7df3; - --border-color: #202020; - --border-color2: #2c2c2c; - --bg-audio: #303030; - - --new-ui-bg-app-color: #303035; - --new-ui-border: 1px solid #40404E; - --new-ui-main-color: #151518; - --new-ui-gray-color: #A4AAB5; - --new-ui-text-color: white; - --new-ui-btn-danger-bg: #FF23721A; - --new-ui-ctrl-f-button-bg:#242428; - --new-ui-ctrl-f-button-border:1px solid #303035; + --air-color: #8280ff; + --background-color-main: #303030; + --background-color-page: #303030; + --background-color-table: #4b4b4b; + --background-color-additional: #373737; + --search-bg: #464646; + --color-btn-gray: #d0d0d0; + --bg-color-button-gray: #5d5a5a; + --text-color-additional-one: #d4d4d4; + --text-color-main: #ffffff; + --text-color-additional-two: #ffffff; + --text-color-purple: #7f7df3; + --border-color: #202020; + --border-color2: #2c2c2c; + --bg-audio: #303030; + + --new-ui-bg-app-color: #303035; + --new-ui-border: 1px solid #40404e; + --new-ui-main-color: #151518; + --new-ui-gray-color: #a4aab5; + --new-ui-text-color: white; + --new-ui-btn-danger-bg: #ff23721a; + --new-ui-ctrl-f-button-bg: #242428; + --new-ui-ctrl-f-button-border: 1px solid #303035; } * { - box-sizing: border-box; - padding: 0; - margin: 0; + box-sizing: border-box; + padding: 0; + margin: 0; } html { - } body { - max-width: 100vw; - background-color: var(--new-ui-bg-app-color); - scroll-behavior: smooth; - font-feature-settings: 'lnum' 1; + max-width: 100vw; + background-color: var(--new-ui-bg-app-color); + scroll-behavior: smooth; + font-feature-settings: 'lnum' 1; } a { - color: inherit; - text-decoration: none; + color: inherit; + text-decoration: none; } p { - font-size: 15px; - font-style: normal; - font-weight: 400; - color: var(--new-ui-text-color); + font-size: 15px; + font-style: normal; + font-weight: 400; + color: var(--new-ui-text-color); } .introjs-tooltip { - max-width: 350px !important; - border-radius: 10px; - background-color: transparent !important; - box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.04), 0px 4px 32px rgba(0, 0, 0, 0.16) !important; + max-width: 350px !important; + border-radius: 10px; + background-color: transparent !important; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.04), 0px 4px 32px rgba(0, 0, 0, 0.16) !important; } .introjs-tooltip-header { - border-radius: 10px 9px 0px 0px !important; + border-radius: 10px 9px 0px 0px !important; } .introjs-tooltip * { - color: white; - background-color: #8685c6; + color: white; + background-color: #8685c6; } .left { - border-right-color: #8685c6 !important; - border: 10px; - background-color: transparent !important; + border-right-color: #8685c6 !important; + border: 10px; + background-color: transparent !important; } .bottom { - border-top-color: #6d6ca6 !important; - border: 10px; - background-color: transparent !important; + border-top-color: #6d6ca6 !important; + border: 10px; + background-color: transparent !important; } /*li {*/ @@ -114,306 +113,308 @@ p { /*}*/ .right { - border-left-color: #8685c6 !important; - border: 10px; - background-color: transparent !important; + border-left-color: #8685c6 !important; + border: 10px; + background-color: transparent !important; } .introjs-skipbutton { - margin-top: 6px !important; - color: rgba(255, 255, 255, 0.5) !important; + margin-top: 6px !important; + color: rgba(255, 255, 255, 0.5) !important; } .MuiPaper-root.MuiAutocomplete-paper { - background-color:var(--new-ui-main-color); /* Замените #your-color на ваш цвет */ - border: 1px solid var(--new-ui-main-color); /* Замените #your-border-color на цвет бордюра */ - box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.15); /* Измените тень, если необходимо */ - } - - /* Изменение цвета полоски сверху выпадающего списка */ - .MuiAutocomplete-listbox:before { - border-top: 1px solid var(--new-ui-main-color); /* Замените #your-border-color на цвет бордюра */ - } - - /* Изменение цвета полоски снизу выпадающего списка */ - .MuiAutocomplete-listbox:after { - border-bottom: 1px solid var(--new-ui-main-color); /* Замените #your-border-color на цвет бордюра */ - } + background-color: var(--new-ui-main-color); /* Замените #your-color на ваш цвет */ + border: 1px solid var(--new-ui-main-color); /* Замените #your-border-color на цвет бордюра */ + box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.15); /* Измените тень, если необходимо */ +} + +/* Изменение цвета полоски сверху выпадающего списка */ +.MuiAutocomplete-listbox:before { + border-top: 1px solid var(--new-ui-main-color); /* Замените #your-border-color на цвет бордюра */ +} + +/* Изменение цвета полоски снизу выпадающего списка */ +.MuiAutocomplete-listbox:after { + border-bottom: 1px solid var(--new-ui-main-color); /* Замените #your-border-color на цвет бордюра */ +} .MuiAutocomplete-popup { - background-color: var(--new-ui-main-color); /* Замените #your-color на ваш цвет */ - } - - /* Изменение цвета элементов в выпадающем списке */ - .MuiAutocomplete-option { - background-color: var(--new-ui-main-color); /* Замените #your-color на ваш цвет */ - color:var(--new-ui-text-color); /* Замените #your-text-color на цвет текста элементов */ - } - - /* Изменение цвета активного элемента в выпадающем списке */ - .MuiAutocomplete-option.Mui-selected { - background-color:var(--new-ui-main-color); /* Замените #your-selected-color на цвет активного элемента */ - color: var(--new-ui-main-color); /* Замените #your-selected-text-color на цвет текста активного элемента */ - } + background-color: var(--new-ui-main-color); /* Замените #your-color на ваш цвет */ +} + +/* Изменение цвета элементов в выпадающем списке */ +.MuiAutocomplete-option { + background-color: var(--new-ui-main-color); /* Замените #your-color на ваш цвет */ + color: var(--new-ui-text-color); /* Замените #your-text-color на цвет текста элементов */ +} + +/* Изменение цвета активного элемента в выпадающем списке */ +.MuiAutocomplete-option.Mui-selected { + background-color: var( + --new-ui-main-color + ); /* Замените #your-selected-color на цвет активного элемента */ + color: var( + --new-ui-main-color + ); /* Замените #your-selected-text-color на цвет текста активного элемента */ +} .introjs-tooltiptext { - padding: 6px 20px !important; - padding-bottom: 15px !important; - font-size: 15px !important; - line-height: 150% !important; + padding: 6px 20px !important; + padding-bottom: 15px !important; + font-size: 15px !important; + line-height: 150% !important; } .introjs-helperLayer { - border: 1px solid #8685c6 !important; - border-radius: 20px !important; - box-shadow: rgba(33, 33, 33, 0.8) 0px 0px 0px 0px, rgba(33, 33, 33, 0.5) 0px 0px 0px 5000px !important; + border: 1px solid #8685c6 !important; + border-radius: 20px !important; + box-shadow: rgba(33, 33, 33, 0.8) 0px 0px 0px 0px, rgba(33, 33, 33, 0.5) 0px 0px 0px 5000px !important; } .introjs-tooltipbuttons { - border-radius: 0px 0px 10px 10px !important; - border: none !important; - background-color: #6d6ca6 !important; + border-radius: 0px 0px 10px 10px !important; + border: none !important; + background-color: #6d6ca6 !important; } .introjs-tooltipbuttons * { - background-color: transparent !important; - border: none !important; - color: white !important; - font-size: 14px !important; - font-weight: 600 !important; + background-color: transparent !important; + border: none !important; + color: white !important; + font-size: 14px !important; + font-weight: 600 !important; - text-shadow: none !important; + text-shadow: none !important; } .introjs-button:focus { - box-shadow: none !important; + box-shadow: none !important; } .introjs-tooltip-title { - margin-top: 5px !important; - font-weight: 500 !important; + margin-top: 5px !important; + font-weight: 500 !important; +} + +.MuiMenu-paper { + padding: 0; } +/* Примените фиксированную ширину, если необходимо */ .MuiMenu-paper { - padding: 0; - } - - /* Примените фиксированную ширину, если необходимо */ - .MuiMenu-paper { - - } +} .pd-30 { - padding: 30px; + padding: 30px; } -@media (max-width:768px) { - .pd-30 { - padding: 25px; - } +@media (max-width: 768px) { + .pd-30 { + padding: 25px; + } } .bg-color-block { - background-color: var(--new-ui-main-color); + background-color: var(--new-ui-main-color); } .border-radius-main { - border-radius: 15px; + border-radius: 15px; } .mt-15 { - margin-top: 15px; + margin-top: 15px; } .mt-30 { - margin-top: 15px; + margin-top: 15px; } .color-gray { - color: var(--new-ui-gray-color); + color: var(--new-ui-gray-color); } .font-16 { - font-size: 16px; + font-size: 16px; } .relative { - position: relative; + position: relative; } th { - color: var(--new-ui-text-color) !important; + color: var(--new-ui-text-color) !important; } .content-center-translate { - text-align: center; - position: absolute; - top: 150px; - left: 37%; - transform: translate(0, -50%); + text-align: center; + position: absolute; + top: 150px; + left: 37%; + transform: translate(0, -50%); } -.tutorial-chat-gpt{ - position: relative; +.tutorial-chat-gpt { + position: relative; } .title-block { - letter-spacing: 0.39px; - color: var(--new-ui-gray-color); - font-size: 13px !important; - font-weight: 600; - text-transform: uppercase; + letter-spacing: 0.39px; + color: var(--new-ui-gray-color); + font-size: 13px !important; + font-weight: 600; + text-transform: uppercase; } .title-struct { - color: var(--new-ui-text-color); - font-size: 15px; - font-style: normal; - font-weight: 600; + color: var(--new-ui-text-color); + font-size: 15px; + font-style: normal; + font-weight: 600; } .text { - color: var(--new-ui-text-color); - font-size: 15px; - font-style: normal; - font-weight: 400; + color: var(--new-ui-text-color); + font-size: 15px; + font-style: normal; + font-weight: 400; } .title-main-gray { - color: var(--new-ui-gray-color); - font-size: 15px; - font-style: normal; - font-weight: 400; + color: var(--new-ui-gray-color); + font-size: 15px; + font-style: normal; + font-weight: 400; } .title-vspomogatel { - color: var(--new-ui-text-color); - font-size: 20px; - font-style: normal; - font-weight: 600; - line-height: normal; + color: var(--new-ui-text-color); + font-size: 20px; + font-style: normal; + font-weight: 600; + line-height: normal; } ::placeholder { - color: var(--new-ui-gray-color) + color: var(--new-ui-gray-color); } textarea { - border-radius: 10px; - background-color: transparent; - border: var(--new-ui-border); - color: var(--new-ui-text-color); - padding: 10px; - font-size: 15px; - font-family: inherit; + border-radius: 10px; + background-color: transparent; + border: var(--new-ui-border); + color: var(--new-ui-text-color); + padding: 10px; + font-size: 15px; + font-family: inherit; } .rdw-option-wrapper { - border: none !important; + border: none !important; } .rdw-option-wrapper:hover { - box-shadow: none !important; + box-shadow: none !important; } .rdw-option-wrapper { - background-color: transparent !important; - max-width: 900px; + background-color: transparent !important; + max-width: 900px; } .rdw-editor-toolbar { - background-color: transparent !important; - padding-bottom: 15px !important; - border: none !important; - border-bottom: 1px solid #EFF0F2 !important; + background-color: transparent !important; + padding-bottom: 15px !important; + border: none !important; + border-bottom: 1px solid #eff0f2 !important; } .rdw-dropdown-wrapper { - background-color: transparent !important; - border: 2px solid var(--new-ui-bg-app-color) !important; - border-radius: 10px !important; - padding: 10px !important; - height: 36px !important; - min-width: 40px !important; + background-color: transparent !important; + border: 2px solid var(--new-ui-bg-app-color) !important; + border-radius: 10px !important; + padding: 10px !important; + height: 36px !important; + min-width: 40px !important; } .rdw-dropdown-wrapper:hover { - box-shadow: none !important; + box-shadow: none !important; } .rdw-editor-wrapper { - color: var(--new-ui-text-color); + color: var(--new-ui-text-color); } .rdw-dropdown-wrapper { - background-color: transparent !important; - position: relative; + background-color: transparent !important; + position: relative; } .rdw-dropdown-optionwrapper { - width: 100% !important; - margin-top: 15px !important; - overflow: hidden; - color: inherit !important; - overflow-y: hidden !important; + width: 100% !important; + margin-top: 15px !important; + overflow: hidden; + color: inherit !important; + overflow-y: hidden !important; } .rdw-block-dropdown { - width: 150px !important; + width: 150px !important; } .rdw-dropdown-optionwrapper > li { - - color: inherit !important; + color: inherit !important; } .rdw-dropdown-optionwrapper:hover { - box-shadow: none; - color: inherit !important; + box-shadow: none; + color: inherit !important; } .border-bottom-1px-gray { - border-bottom: 1px solid #EFF0F2 !important; + border-bottom: 1px solid #eff0f2 !important; } .pointer { - cursor: pointer; + cursor: pointer; } .air-color { - background-color: var(--air-color); + background-color: var(--air-color); } -[contenteditable="true"]:focus { - outline: none; - border: 1px solid var(--air-color) !important; +[contenteditable='true']:focus { + outline: none; + border: 1px solid var(--air-color) !important; } /*scroll styles*/ -.smallScroll::-webkit-scrollbar{ - height: 5px; - width: 2px; +.smallScroll::-webkit-scrollbar { + height: 5px; + width: 2px; } .smallScroll::-webkit-scrollbar-track { - background: initial; - margin: 21px 0; + background: initial; + margin: 21px 0; } .smallScroll::-webkit-scrollbar-thumb { - background-color: rgba(217, 217, 217, 0.49); - border-radius: 5px; + background-color: rgba(217, 217, 217, 0.49); + border-radius: 5px; } -.height{ - height: calc(400px + (1024 - 400) * ((100vh - 400px) / (1024 - 400))); +.height { + height: calc(400px + (1024 - 400) * ((100vh - 400px) / (1024 - 400))); } -.rotate-180{ - transform: rotate(180deg); - transition: all; - transition-duration: 250ms; +.rotate-180 { + transform: rotate(180deg); + transition: all; + transition-duration: 250ms; } -.rotate-0{ - transform: rotate(0deg); - transition: all; - transition-duration: 250ms; -} \ No newline at end of file +.rotate-0 { + transform: rotate(0deg); + transition: all; + transition-duration: 250ms; +} @@ -1,4 +1,4 @@ -import React, { useCallback } from 'react' +import React, { useCallback, useEffect } from 'react' import { useDispatch } from 'react-redux' import { Box, Collapse, Stack, Typography } from '@mui/material' import { useRouter } from 'next/router' @@ -49,6 +49,7 @@ const Page: React.FC = ({ deviceType, deviceOs }) => { const desktop = deviceType === 'desktop' const { data } = useSession() const router = useRouter() + const { chats, currentChat, @@ -61,7 +62,11 @@ const Page: React.FC = ({ deviceType, deviceOs }) => { isTryRename, setIsTryRename, } = useChats(modelType) - const { messages, sendMessage, loading, getMessagesPagination, deleteMessage } = useModel(currentChat, showError, modelType) + const { messages, sendMessage, loading, getMessagesPagination, deleteMessage } = useModel( + currentChat, + showError, + modelType + ) const includeParams = useAppSelector((state) => state.params.params) const dispatch = useDispatch() @@ -69,7 +74,7 @@ const Page: React.FC = ({ deviceType, deviceOs }) => { const deleteMessageMemo = useCallback(deleteMessage, [currentChat, messages]) React.useEffect(() => { - if (data?.access && !botParams) { + if (data?.access) { model_api.getBotParams(router.asPath.split('/')[2], data.access).then((res) => { setBotParams(res) setModelType(res.slug) @@ -78,35 +83,55 @@ const Page: React.FC = ({ deviceType, deviceOs }) => { dispatch( setParametres( res.parameters.reduce( - (a, v) => (v.versions.includes(res.versions[0].slug) ? { ...a, [v.key]: v.values.default } : { ...a }), + (a, v) => + v.versions.includes(res.versions[0].slug) + ? { ...a, [v.key]: v.values.default } + : { ...a }, {} ) ) ) } else { setVersion('') - dispatch(setParametres(res.parameters.reduce((a, v) => ({ ...a, [v.key]: v.values.default }), {}))) + dispatch( + setParametres( + res.parameters.reduce( + (a, v) => ({ ...a, [v.key]: v.values.default }), + {} + ) + ) + ) } }) } - }, [data?.access]) + }, [data?.access, router.query]) const resetParams = () => { if (botParams) { dispatch(setParametres({})) - if (botParams.versions.length !== 0) { + if (botParams.versions?.length !== 0) { setVersion(botParams.versions[0].slug) dispatch( setParametres( botParams.parameters.reduce( - (a, v) => (v.versions.includes(botParams.versions[0].slug) ? { ...a, [v.key]: v.values.default } : { ...a }), + (a, v) => + v.versions.includes(botParams.versions[0].slug) + ? { ...a, [v.key]: v.values.default } + : { ...a }, {} ) ) ) } else { setVersion(botParams.slug) - dispatch(setParametres(botParams.parameters.reduce((a, v) => ({ ...a, [v.key]: v.values.default }), {}))) + dispatch( + setParametres( + botParams.parameters.reduce( + (a, v) => ({ ...a, [v.key]: v.values.default }), + {} + ) + ) + ) } } } @@ -118,13 +143,23 @@ const Page: React.FC = ({ deviceType, deviceOs }) => { dispatch( setParametres( botParams.parameters.reduce( - (a, v) => (v.versions.includes(version) ? { ...a, [v.key]: v.values.default } : { ...a }), + (a, v) => + v.versions.includes(version) + ? { ...a, [v.key]: v.values.default } + : { ...a }, {} ) ) ) } else { - dispatch(setParametres(botParams.parameters.reduce((a, v) => ({ ...a, [v.key]: v.values.default }), {}))) + dispatch( + setParametres( + botParams.parameters.reduce( + (a, v) => ({ ...a, [v.key]: v.values.default }), + {} + ) + ) + ) } } } @@ -170,7 +205,11 @@ const Page: React.FC = ({ deviceType, deviceOs }) => { } return ( - + <Box className={styles.main}> @@ -209,9 +248,16 @@ const Page: React.FC<any> = ({ deviceType, deviceOs }) => { /> {desktop && ( <Stack className='pd-30 bg-color-block border-radius-main' spacing={2}> - {botParams?.versions && botParams.versions.length !== 0 && ( + {botParams?.versions && botParams.versions?.length !== 0 && ( <> - <Typography sx={{ color: '#A4AAB5', fontWeight: '600', fontSize: '14px', letterSpacing: '0.1px' }}> + <Typography + sx={{ + color: '#A4AAB5', + fontWeight: '600', + fontSize: '14px', + letterSpacing: '0.1px', + }} + > ВЕРСИИ </Typography> <ChatSelect @@ -232,7 +278,14 @@ const Page: React.FC<any> = ({ deviceType, deviceOs }) => { setParams(!params) }} > - <Typography sx={{ color: '#A4AAB5', fontWeight: '600', fontSize: '14px', letterSpacing: '0.1px' }}> + <Typography + sx={{ + color: '#A4AAB5', + fontWeight: '600', + fontSize: '14px', + letterSpacing: '0.1px', + }} + > ПАРАМЕТРЫ </Typography> <svg @@ -241,7 +294,9 @@ const Page: React.FC<any> = ({ deviceType, deviceOs }) => { viewBox='0 0 21 13' fill='none' xmlns='http://www.w3.org/2000/svg' - className={`${params ? 'rotate-180' : 'rotate-0'}`} + className={`${ + params ? 'rotate-180' : 'rotate-0' + }`} > <path fillRule='evenodd' @@ -254,21 +309,42 @@ const Page: React.FC<any> = ({ deviceType, deviceOs }) => { )} {botParams && botParams.parameters?.length > 0 ? ( - <Collapse in={params} orientation='vertical' collapsedSize={0} sx={{}}> - <BotParamsMap currentVersion={version} params={botParams?.parameters} /> - <ResetFilters desktop={desktop} closeDrawer={hideMobileSettings} reset={resetParams} /> + <Collapse + in={params} + orientation='vertical' + collapsedSize={0} + sx={{}} + > + <BotParamsMap + currentVersion={version} + params={botParams?.parameters} + /> + <ResetFilters + desktop={desktop} + closeDrawer={hideMobileSettings} + reset={resetParams} + /> </Collapse> ) : ( - <Typography sx={{ color: '#6e6e6e', fontSize: '15px', fontWeight: '500' }}> + <Typography + sx={{ + color: '#6e6e6e', + fontSize: '15px', + fontWeight: '500', + }} + > Параметры отсутствуют </Typography> )} </Stack> )} {!desktop && ( - <DrawerCustom open={openFiltersMobile} onClose={hideMobileSettings}> + <DrawerCustom + open={openFiltersMobile} + onClose={hideMobileSettings} + > <Stack spacing={1} padding={2.4}> - {botParams?.versions && botParams.versions.length !== 0 && ( + {botParams?.versions && botParams.versions?.length !== 0 && ( <> <Typography sx={{ @@ -302,11 +378,24 @@ const Page: React.FC<any> = ({ deviceType, deviceOs }) => { > ПАРАМЕТРЫ </Typography> - <BotParamsMap currentVersion={version} params={botParams?.parameters} /> - <ResetFilters closeDrawer={hideMobileSettings} desktop={desktop} reset={resetParams} /> + <BotParamsMap + currentVersion={version} + params={botParams?.parameters} + /> + <ResetFilters + closeDrawer={hideMobileSettings} + desktop={desktop} + reset={resetParams} + /> </> ) : ( - <Typography sx={{ color: '#6e6e6e', fontSize: '15px', fontWeight: '500' }}> + <Typography + sx={{ + color: '#6e6e6e', + fontSize: '15px', + fontWeight: '500', + }} + > Параметры отсутствуют </Typography> )} @@ -43,7 +43,6 @@ const Page: React.FC<any> = ({ deviceType }) => { return ( <Layout titlePage={'Чат-боты'} device={deviceType}> <Typography sx={{ fontSize: 24, fontWeight: 'bold', marginTop: '25px' }}>Чат-боты</Typography> - <Box display='flex' flexWrap='wrap' width='100%' justifyContent='start'> {bots ? ( bots.map((item, idx) => ( @@ -24,6 +24,7 @@ import { IModel } from '@/src/shared/api/models/models' import { getTypeDevice } from '@/src/shared/lib/helpers' import { getDeviceOs } from '@/src/shared/lib/helpers/get-type-device' import { useShowData } from '@/src/shared/lib/hooks' +import { ArrowDownScroll } from '@/src/shared/ui/icon-components/scroll-down-arrow' import { ImageMessagesList } from '@/src/widgets/messages/image-messages-list' export async function getServerSideProps(context: any): Promise<{ props: any }> { @@ -51,10 +52,16 @@ const Images: React.FC<any> = ({ deviceType, deviceOs }) => { const [version, setVersion] = React.useState<string>('') const [modelType, setModelType] = React.useState<string>('') const [params, setParams] = React.useState<boolean>(false) - const refScroll = useRef(null) const includeParams = useAppSelector((state) => state.params.params) const dispatch = useDispatch() + const { messages, loading, createImage, isComplete, getMessagesPagination } = useModelImages<Setting>(showError, modelType, deviceType) + + const [chatScrollHeight, setChatScrollHeight] = React.useState(0) + const [scrollBottom, setScrollBottom] = React.useState(0) + const refScrollMobile = useRef<any>() + const [isPaginating, setIsPaginating] = React.useState(false) + React.useEffect(() => { model_api .getBotParams(router.asPath.split('/')[2], data?.access) @@ -66,20 +73,29 @@ const Images: React.FC<any> = ({ deviceType, deviceOs }) => { dispatch( setParametres( res.parameters.reduce( - (a, v) => (v.versions.includes(res.versions[0].slug) ? { ...a, [v.key]: v.values.default } : { ...a }), + (a, v) => + v.versions.includes(res.versions[0].slug) + ? { ...a, [v.key]: v.values.default } + : { ...a }, {} ) ) ) } else { setVersion('') - dispatch(setParametres(res.parameters.reduce((a, v) => ({ ...a, [v.key]: v.values.default }), {}))) + dispatch( + setParametres( + res.parameters.reduce( + (a, v) => ({ ...a, [v.key]: v.values.default }), + {} + ) + ) + ) } }) .catch((err) => {}) - }, [data?.access]) + }, [data?.access, router.query]) - const { messages, loading, createImage, isComplete } = useModelImages<Setting>(showError, modelType, deviceType) const onLoadImage = (event: React.ChangeEvent<HTMLInputElement>) => { if (event.target.files) { setImage(event.target.files[0]) @@ -103,14 +119,24 @@ const Images: React.FC<any> = ({ deviceType, deviceOs }) => { dispatch( setParametres( botParams.parameters.reduce( - (a, v) => (v.versions.includes(botParams.versions[0].slug) ? { ...a, [v.key]: v.values.default } : { ...a }), + (a, v) => + v.versions.includes(botParams.versions[0].slug) + ? { ...a, [v.key]: v.values.default } + : { ...a }, {} ) ) ) } else { setVersion(botParams.slug) - dispatch(setParametres(botParams.parameters.reduce((a, v) => ({ ...a, [v.key]: v.values.default }), {}))) + dispatch( + setParametres( + botParams.parameters.reduce( + (a, v) => ({ ...a, [v.key]: v.values.default }), + {} + ) + ) + ) } } } @@ -122,13 +148,23 @@ const Images: React.FC<any> = ({ deviceType, deviceOs }) => { dispatch( setParametres( botParams.parameters.reduce( - (a, v) => (v.versions.includes(version) ? { ...a, [v.key]: v.values.default } : { ...a }), + (a, v) => + v.versions.includes(version) + ? { ...a, [v.key]: v.values.default } + : { ...a }, {} ) ) ) } else { - dispatch(setParametres(botParams.parameters.reduce((a, v) => ({ ...a, [v.key]: v.values.default }), {}))) + dispatch( + setParametres( + botParams.parameters.reduce( + (a, v) => ({ ...a, [v.key]: v.values.default }), + {} + ) + ) + ) } } } @@ -171,7 +207,7 @@ const Images: React.FC<any> = ({ deviceType, deviceOs }) => { React.useEffect(() => { if (isComplete) { if (!desktop) { - const block = refScroll.current + const block = refScrollMobile.current if (block) { //@ts-ignore block.scrollTop = block.scrollHeight @@ -182,18 +218,55 @@ const Images: React.FC<any> = ({ deviceType, deviceOs }) => { } }, [isComplete]) + const handleMobileScroll = () => { + setScrollBottom(refScrollMobile.current?.scrollHeight - refScrollMobile.current?.scrollTop - refScrollMobile.current?.clientHeight) + + if (refScrollMobile.current && messages?.length !== 0) { + const { scrollTop, scrollHeight, clientHeight } = refScrollMobile.current + if (scrollTop === 0) { + if (getMessagesPagination) { + setIsPaginating(true) + getMessagesPagination(deviceType) + } + } + } + } + + const handleScroll = () => { + if (window.scrollY + window.innerHeight >= document.documentElement.scrollHeight) { + setIsPaginating(true) + getMessagesPagination(deviceType) + } + } + React.useEffect(() => { - if (!desktop && messages !== null) { - const block = refScroll.current + window.addEventListener('scroll', handleScroll) + return () => { + window.removeEventListener('scroll', handleScroll) + } + }, []) - const time = setTimeout(() => { - if (block) { + React.useEffect(() => { + const block = deviceType === 'desktop' ? window : refScrollMobile.current + if (block) { + if (messages != undefined && !isPaginating) { + setChatScrollHeight(block.scrollHeight) + const time = setTimeout(() => { //@ts-ignore - block.scrollTop = block.scrollHeight - } - }, 250) - return () => clearTimeout(time) + block.scrollTo({ + top: block.scrollHeight, + behavior: 'smooth', // добавляем плавную прокрутку + }) + }, 350) + return () => clearTimeout(time) + } else if (messages != undefined && isPaginating) { + //@ts-ignore + block.scrollTop = block.scrollHeight - chatScrollHeight + + setChatScrollHeight(block.scrollHeight) + } } + setIsPaginating(false) }, [messages]) return ( @@ -204,7 +277,11 @@ const Images: React.FC<any> = ({ deviceType, deviceOs }) => { justifyContent='space-between' alignItems='start' flexDirection={desktop ? 'row' : 'column-reverse'} - sx={{ marginBottom: desktop ? 0 : 3, width: desktop ? '97%' : '100%', marginTop: desktop ? 3 : '15px' }} + sx={{ + marginBottom: desktop ? 0 : 3, + width: desktop ? '97%' : '100%', + marginTop: desktop ? 3 : '15px', + }} > <Box sx={{ @@ -233,14 +310,45 @@ const Images: React.FC<any> = ({ deviceType, deviceOs }) => { /> )} </Stack> - <Box className={'bg-color-block border-radius-main'} sx={{ padding: '30px' }}> - <ImageMessagesList isComplete={isComplete} device={deviceType} images={messages} /> + <Box + className={'bg-color-block border-radius-main'} + sx={{ padding: '30px' }} + > + <ImageMessagesList + isComplete={isComplete} + device={deviceType} + images={messages} + /> </Box> </> ) : ( <Box className={'bg-color-block border-radius-main'}> + {scrollBottom > 500 && ( + <Box + sx={{ + position: 'absolute', + left: 0, + right: 0, + width: 'fit-content', + cursor: 'pointer', + margin: '0 auto', + bottom: '100px', + zIndex: 10, + }} + onClick={() => { + const block = refScrollMobile.current + + block.scrollTo({ + top: block.scrollHeight, + behavior: 'smooth', // добавляем плавную прокрутку + }) + }} + > + <ArrowDownScroll /> + </Box> + )} <Box - ref={refScroll} + ref={refScrollMobile} sx={{ padding: '30px', height: ios @@ -250,8 +358,13 @@ const Images: React.FC<any> = ({ deviceType, deviceOs }) => { overflowX: 'hidden', }} className={'smallScroll'} + onScroll={handleMobileScroll} > - <ImageMessagesList isComplete={isComplete} device={deviceType} images={messages} /> + <ImageMessagesList + isComplete={isComplete} + device={deviceType} + images={messages} + /> </Box> <Stack alignItems='center'> {botParams && ( @@ -274,10 +387,21 @@ const Images: React.FC<any> = ({ deviceType, deviceOs }) => { )} </Box> {desktop && ( - <Stack spacing={2} className='pd-30 bg-color-block border-radius-main' sx={{ width: '25.5%', height: 'auto' }}> + <Stack + spacing={2} + className='pd-30 bg-color-block border-radius-main' + sx={{ width: '25.5%', height: 'auto' }} + > {botParams?.versions && botParams.versions.length !== 0 ? ( <> - <Typography sx={{ color: '#A4AAB5', fontWeight: '600', fontSize: '14px', letterSpacing: '0.1px' }}> + <Typography + sx={{ + color: '#A4AAB5', + fontWeight: '600', + fontSize: '14px', + letterSpacing: '0.1px', + }} + > ВЕРСИИ </Typography> <ChatSelect @@ -300,7 +424,14 @@ const Images: React.FC<any> = ({ deviceType, deviceOs }) => { setParams(!params) }} > - <Typography sx={{ color: '#A4AAB5', fontWeight: '600', fontSize: '14px', letterSpacing: '0.1px' }}> + <Typography + sx={{ + color: '#A4AAB5', + fontWeight: '600', + fontSize: '14px', + letterSpacing: '0.1px', + }} + > ПАРАМЕТРЫ </Typography> <svg @@ -322,12 +453,32 @@ const Images: React.FC<any> = ({ deviceType, deviceOs }) => { )} {botParams && botParams.parameters?.length > 0 ? ( - <Collapse in={params} orientation='vertical' collapsedSize={0} sx={{}}> - <BotParamsMap currentVersion={version} params={botParams?.parameters} /> - <ResetFilters desktop={desktop} closeDrawer={hideMobileSettings} reset={resetParams} /> + <Collapse + in={params} + orientation='vertical' + collapsedSize={0} + sx={{}} + > + <BotParamsMap + currentVersion={version} + params={botParams?.parameters} + /> + <ResetFilters + desktop={desktop} + closeDrawer={hideMobileSettings} + reset={resetParams} + /> </Collapse> ) : ( - <Typography sx={{ color: '#6e6e6e', fontSize: '15px', fontWeight: '500' }}>Параметры отсутствуют</Typography> + <Typography + sx={{ + color: '#6e6e6e', + fontSize: '15px', + fontWeight: '500', + }} + > + Параметры отсутствуют + </Typography> )} </Stack> )} @@ -369,11 +520,26 @@ const Images: React.FC<any> = ({ deviceType, deviceOs }) => { > ПАРАМЕТРЫ </Typography> - <BotParamsMap currentVersion={version} params={botParams?.parameters} /> - <ResetFilters closeDrawer={hideMobileSettings} desktop={desktop} reset={resetParams} /> + <BotParamsMap + currentVersion={version} + params={botParams?.parameters} + /> + <ResetFilters + closeDrawer={hideMobileSettings} + desktop={desktop} + reset={resetParams} + /> </> ) : ( - <Typography sx={{ color: '#6e6e6e', fontSize: '15px', fontWeight: '500' }}>Параметры отсутствуют</Typography> + <Typography + sx={{ + color: '#6e6e6e', + fontSize: '15px', + fontWeight: '500', + }} + > + Параметры отсутствуют + </Typography> )} </Stack> </DrawerCustom> @@ -12,29 +12,6 @@ import { IShortModel } from '@/src/shared/api/models/models' import { Card } from '@/src/shared/card/card' import { getTypeDevice } from '@/src/shared/lib/helpers' -interface Model { - uid: string - title: string - description: string - link: string - model: string - languages: string[] - slug: string - companies: string - token_price: number - model_config: { - n: number - model: string - top_p: number - temperature: number - presence_penalty: number - frequency_penalty: number - } - image_link: string - is_favourite: boolean - available_versions: null -} - export async function getServerSideProps(context: any): Promise<{ props: any }> { const deviceType = getTypeDevice(context) @@ -64,12 +41,12 @@ export const Images: React.FC<any> = ({ deviceType }) => { <Typography sx={{ fontSize: 24, fontWeight: 'bold', marginTop: '25px' }}>Изображения</Typography> <Box display='flex' flexWrap='wrap'> {bots ? ( - bots.map((item) => { + bots.map((item, idx) => { return ( <Card accessed_models={user.payment_plan.plan.accessed_models} - key={item.uid} uid={item.uid} + key={idx} slug={item.slug} text={item.description} title={item.title} @@ -22,6 +22,7 @@ axios.defaults.httpsAgent = new https.Agent({ const inter = Raleway({ subsets: ['latin'] }) function App({ Component, pageProps: { session, ...pageProps } }: AppProps) { + return ( <> <style jsx global>{` @@ -1,17 +0,0 @@ -import * as Sentry from '@sentry/nextjs' -import Error from 'next/error' - -const CustomErrorComponent = (props) => { - return <Error statusCode={props.statusCode} /> -} - -CustomErrorComponent.getInitialProps = async (contextData) => { - // In case this is running in a serverless function, await this in order to give ServerError - // time to send the error before the lambda exits - await Sentry.captureUnderscoreErrorException(contextData) - - // This will contain the status code of the response - return Error.getInitialProps(contextData) -} - -export default CustomErrorComponent @@ -335,8 +335,7 @@ const Account: React.FC<IAccountProps> = ({ device, token, plans }) => { > <Typography sx={{ fontSize: 24, fontWeight: 'bold' }}>Ваш аккаунт</Typography> <Tabs - value={0} - onChange={() => 1 + 2} + value={scope} variant='scrollable' className={styles2.wrap_toggle_button} aria-label='Platform' @@ -356,7 +355,7 @@ const Account: React.FC<IAccountProps> = ({ device, token, plans }) => { onClick={() => changeScope(el.scope)} key={el.title} className={scope === el.scope ? styles2.wrap_toggle_button_active : styles2.wrap_toggle_button} - value='web' + value={el.scope} label={el.title} /> ) @@ -1,15 +0,0 @@ -import * as React from 'react' - -type Props = {} - -export default function ClientError(props: Props) { - return ( - <div - onClick={() => { - throw Error('client error') - }} - > - click me! - </div> - ) -} @@ -1,7 +0,0 @@ -export async function getServerSideProps(context: any): Promise<{ props: any }> { - throw 'server error' -} - -export default function ServerError() { - return <div></div> -} @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react' +import React, { useCallback, useEffect, useRef, useState } from 'react' import axios, { AxiosError, AxiosResponse } from 'axios' import base64 from 'base64-encode-file' import { useSession } from 'next-auth/react' @@ -23,7 +23,7 @@ const formDataHelper = (file: File, dataForSend: MessageSend<any>): FormData => export const ModelsWithChatsEndpoints = { getData: async (chatUid: string, offset: number, token?: string) => { try { - const { data } = await axios.get<Message[]>(API_URL + `/chats/${chatUid}/messages/?limit=100&offset=${offset}`, { + const { data } = await axios.get<Message[]>(API_URL + `/chats/${chatUid}/messages/?limit=10&offset=${offset}`, { headers: { Authorization: `Bearer ${token}`, }, @@ -77,12 +77,12 @@ export function useModel( setMessages([]) ;(async () => { setLoading(true) - const answer = await ModelsWithChatsEndpoints.getData(currentChat, offset, data?.access) + const answer = await ModelsWithChatsEndpoints.getData(currentChat, 0, data?.access) setLoading(false) if (Array.isArray(answer)) { setMessages(answer.reverse()) - // setOffset((prev) => prev + 10) + setOffset(answer.length) } else { showError('Ошибка загрузки чата') return @@ -100,7 +100,7 @@ export function useModel( if (Array.isArray(answer) && messages != null) { const newMessages = answer.reverse() setMessages([...newMessages, ...messages]) - setOffset((prev) => prev + 10) + setOffset((prev) => prev + answer.length) } else { showError('Ошибка загрузки сообщений') return @@ -192,9 +192,9 @@ export function useModel( } export const ModelsWithImagesEndpoints = { - getData: async (type: string, token?: string) => { + getData: async (type: string, offset: number, token?: string) => { try { - const { data } = await axios.get<Message[]>(API_URL + `/media/image/${type}?limit=100`, { + const { data } = await axios.get<Message[]>(API_URL + `/media/image/${type}?limit=10&offset=${offset}`, { headers: { Authorization: `Bearer ${token}`, }, @@ -242,13 +242,33 @@ export function useModelImages<T>(showError: (message: string) => void, type: st const [isComplete, setIsComplete] = useState<boolean>(false) + const [offset, setOffset] = useState<number>(0) + const dispatch = useAppDispatch() + const typeRef = useRef(type) + const dataRef = useRef(data) + const messagesRef = useRef(messages) + const offsetRef = useRef(offset) + + useEffect(() => { + typeRef.current = type + }, [type]) + useEffect(() => { + dataRef.current = data + }, [data]) + useEffect(() => { + messagesRef.current = messages + }, [messages]) + useEffect(() => { + offsetRef.current = offset + }, [offset]) + useEffect(() => { if (data?.access && type !== '' && type !== undefined) { ;(async () => { setLoading(true) - const answer = await getData(type, data?.access) + const answer = await getData(type, offset, data?.access) setLoading(false) if ('error' in answer) { showError('Ошибка загрузки чата') @@ -258,14 +278,46 @@ export function useModelImages<T>(showError: (message: string) => void, type: st if (Array.isArray(answer)) { if (device === 'desktop') { setMessages(answer) + setOffset(answer.length) } else { setMessages(answer.reverse()) + setOffset(answer.length) } } })() } }, [data?.access, type]) + const getMessagesPagination = useCallback( + async (device: 'mobile' | 'desktop') => { + // console.log(dataRef.current?.access); + // console.log(typeRef.current); + // console.log(offsetRef.current); + // console.log(messagesRef.current); + + if (dataRef.current?.access && typeRef.current !== '' && typeRef.current !== undefined) { + setLoading(true) + const answer = await getData(typeRef.current, offsetRef.current, dataRef.current?.access) + setLoading(false) + + if (Array.isArray(answer) && messagesRef.current != null && device === 'mobile') { + const newMessages = answer.reverse() + setMessages([...newMessages, ...messagesRef.current]) + setOffset((prev) => prev + answer.length) + } else if (Array.isArray(answer) && messagesRef.current != null && device === 'desktop') { + setMessages([...messagesRef.current, ...answer]) + setOffset((prev) => prev + answer.length) + } else { + console.log('err') + + showError('Ошибка загрузки сообщений') + return + } + } + }, + [data?.access, type, offset, messages] + ) + const createImage = async <T>(dataForSend: MessageSend<T>) => { const { content, file } = dataForSend @@ -301,7 +353,7 @@ export function useModelImages<T>(showError: (message: string) => void, type: st setIsComplete(true) } - return { messages, createImage, loading, isComplete } + return { messages, createImage, loading, isComplete, getMessagesPagination } } export const ModelsMediaApi = { @@ -158,11 +158,13 @@ export const createChat = async (model: string, token?: string) => { export const getAllChats = async (model: string, token?: string): Promise<Chat[] | []> => { try { const { data } = await axios.get(API_URL + `/chats/?model=${model}`, { headers: { Authorization: `Bearer ${token}` } }) - + if (data.length === 0) { const newChat = await createChat(model, token) + return [newChat].reverse() } + return data.reverse() } catch (e) { return [] @@ -1,4 +1,4 @@ -import React from 'react' +import React, { useMemo } from 'react' import { Box, Button, Typography } from '@mui/material' import Image from 'next/image' import Link from 'next/link' @@ -15,15 +15,21 @@ interface IProps { } export const Card = ({ text, icon, title, uid, slug, accessed_models }: IProps) => { - // const userBalance = useAppSelector((state) => state.user.payment_plan.current_token_balance) - // const isAvailable = Math.floor(+userBalance) > 5 || (Math.floor(+userBalance) === 0 && title !== 'Dalle') - // const linkFull = isAvailable ? link ?? '' : '/account?scope=subscribe' + const link = useMemo(() => { + return accessed_models && !accessed_models.includes(slug) + ? '/account?scope=subscribe' + : `/images/${slug}` + }, [accessed_models]) + return ( - <Box className={styles.card}> - <Link href={`/images/${slug}`}> + <Link href={link}> + <Box className={styles.card}> <Box height='50%' - sx={{ backgroundImage: `url(${icon || '/model-preview.png'})`, backgroundSize: 'cover' }} + sx={{ + backgroundImage: `url(${icon || '/model-preview.png'})`, + backgroundSize: 'cover', + }} display='flex' justifyContent='space-between' width='100%' @@ -32,10 +38,8 @@ export const Card = ({ text, icon, title, uid, slug, accessed_models }: IProps) <Typography className={styles.title}>{title}</Typography> <Typography className={styles.text}>{text}</Typography> </Box> - </Link> - {accessed_models && !accessed_models.includes(slug) && ( - <Link href={'account?scope=subscribe'}> + {accessed_models && !accessed_models.includes(slug) && ( <Box sx={{ position: 'absolute', @@ -59,7 +63,11 @@ export const Card = ({ text, icon, title, uid, slug, accessed_models }: IProps) textAlign: 'center', }} > - <Button disabled className='btn-classic' sx={{ width: '86%', top: '10%' }}> + <Button + disabled + className='btn-classic' + sx={{ width: '86%', top: '10%' }} + > <Image style={{ marginRight: '7px', marginBottom: '2px' }} src={'/star-white.svg'} @@ -71,20 +79,8 @@ export const Card = ({ text, icon, title, uid, slug, accessed_models }: IProps) </Button> </Box> </Box> - </Link> - )} - - {/*<Image*/} - {/* onClick={(e) => {*/} - {/* e.preventDefault()*/} - {/* changeFavorite(uid)*/} - {/* }}*/} - {/* style={{ position: 'absolute', right: 20, zIndex: 1000, top: 20 }}*/} - {/* src={isFavorite ? '/svg/sub_menu/favourite.svg' : '/svg/sub_menu/favourite_off.svg'}*/} - {/* width={25}*/} - {/* height={25}*/} - {/* alt={''}*/} - {/*/>*/} - </Box> + )} + </Box> + </Link> ) } @@ -1,2 +1,3 @@ export { getAccessToken } from './get-token' export { getTypeDevice } from './get-type-device' +export { useConcat } from './reactive-concat' @@ -0,0 +1,5 @@ +import { useMemo } from 'react' + +export const useConcat = <R>(...arrays: any[]) => { + return useMemo<R>(() => arrays.reduce((a, b) => a.concat(b), []), arrays) +} @@ -1,7 +1,7 @@ .main { width: 100%; display: flex; - justify-content: start; + justify-content: flex-start; gap: 20px; margin-bottom: 24px; @@ -45,7 +45,11 @@ export const DateInput = ({ }} label={label ? label : 'Дата'} value={date ? dayjs(new Date().toDateString()) : prevdate ? dayjs(new Date().toDateString()).add(-1, 'year') : null} - onChange={(date) => setDate(JSON.stringify(date).split('"')[1].split('T')[0])} + onChange={(date) => { + if (date?.isValid()) { + setDate(JSON.stringify(date).split('"')[1].split('T')[0]) + } + }} format='MM-DD-YYYY' views={['year', 'month', 'day']} /> @@ -28,22 +28,6 @@ export const lineOptions = { color: 'rgba(191, 197, 208, 0.20)', }, }, - xAxes: [ - { - gridLines: { - zeroLineWidth: 0, - zeroLineColor: 'transparent', - }, - }, - ], - yAxes: [ - { - gridLines: { - zeroLineWidth: 0, - zeroLineColor: 'transparent', - }, - }, - ], }, plugins: { legend: { @@ -0,0 +1,11 @@ +import * as React from 'react' +import { SVGProps } from 'react' + +export const ArrowDownScroll: React.FC<SVGProps<SVGSVGElement>> = ({ ...props }) => { + return ( + <svg width='36' height='36' viewBox='0 0 36 36' fill='none' xmlns='http://www.w3.org/2000/svg'> + <rect width='36' height='36' rx='18' fill='#7F7DF3' /> + <path d='M25 16L18 23L11 16' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' /> + </svg> + ) +} @@ -60,7 +60,6 @@ export const SwitchCustom = (props: any) => { }, }} {...props} - defaultChecked inputProps={{ 'aria-label': 'ant design' }} /> ) @@ -39,7 +39,7 @@ export const InputStyleLight = { fontWeight: 400, }, '& .Mui-disabled': { - '-webkit-text-fill-color': 'red', + webkitTextFillColor: 'red', backgroundColor: '#151518', color: 'red !important', }, @@ -15,6 +15,7 @@ export { Input, InputStyleDark, InputStyleLight } from './ui/input' export { InputImagesModels } from './ui/input-images-models/input-images-models' export { Loader } from './ui/loader/loader' export type { ModalProps } from './ui/modal/modal' +export { useConcat } from './lib/helpers' export { Modal } from './ui/modal/modal' export { NotificationMenu } from './ui/notification-menu' export { RandomImage } from './ui/random-image' @@ -95,7 +95,7 @@ export default function BusinessHost() { <Box className={styles2.title2}> <Box> <Typography className={styles.name}>Затраты</Typography> - <ArrowUpOrDown anchorElModel={showPersons} onClick={() => setShowPersons((prev) => !prev)} className={styles2.arrow} /> + <ArrowUpOrDown directionY={showPersons} onClick={() => setShowPersons((prev) => !prev)} className={styles2.arrow} /> </Box> </Box> {showPersons && ( @@ -159,7 +159,7 @@ const MailingBlock = ({ info, mailing }: { info: InfoBusiness | null | undefined <Box> <Typography className={styles.name}>Уведомления о низком балансе</Typography> <ArrowUpOrDown - anchorElModel={showPersons} + directionY={showPersons} onClick={() => setShowPersons((prev) => !prev)} className={styles2.arrow} /> @@ -65,7 +65,7 @@ export const Info = ({ {type !== 'business_security' ? ( <Typography className={styles.role} sx={{ fontSize: '17px', fontWeight: '400' }}> Режим валидации по IP :{' '} - <Typography sx={{ color: '#7f7df3' }}>{data?.is_ip_whitelist_enabled ? 'включен' : 'выключен'}</Typography> + <Typography component='span' sx={{ color: '#7f7df3' }}>{data?.is_ip_whitelist_enabled ? 'включен' : 'выключен'}</Typography> </Typography> ) : ( <></> @@ -69,7 +69,7 @@ .title2 { display: flex; justify-content: space-between; - align-items: end; + align-items: flex-end; p { color: var(--text-color-purple); font-size: 16px; @@ -101,11 +101,11 @@ } } -.logsList{ +.logsList { margin-top: 15px; display: flex; - justify-content: start; - align-items: end; + justify-content: flex-start; + align-items: flex-end; flex-wrap: wrap; gap: 15px; } @@ -114,4 +114,4 @@ font-size: 15px !important; font-weight: 500 !important; margin-bottom: 5px; -} \ No newline at end of file +} @@ -35,7 +35,7 @@ export const ModelsList = () => { <Box className={styles.title}> <Typography className={styles.name}>Нейросети</Typography> <Typography className={styles.count}>{models.length}</Typography> - <ArrowUpOrDown anchorElModel={showModels} onClick={() => setShowModels((prev) => !prev)} className={styles.arrow} /> + <ArrowUpOrDown directionY={showModels} onClick={() => setShowModels((prev) => !prev)} className={styles.arrow} /> </Box> {showModels && ( @@ -96,7 +96,7 @@ export const BusinessGroups = ({ company_uid }: { company_uid?: string }) => { <Box className={styles.title2}> <Box> <Typography className={styles.name}>Бизнес-группы</Typography> - <ArrowUpOrDown anchorElModel={showPersons} onClick={() => setShowPersons((prev) => !prev)} className={styles.arrow} /> + <ArrowUpOrDown directionY={showPersons} onClick={() => setShowPersons((prev) => !prev)} className={styles.arrow} /> </Box> <Typography onClick={() => { @@ -62,7 +62,7 @@ export const IpList = () => { ) : ( <></> )} - <ArrowUpOrDown anchorElModel={showPersons} onClick={() => setShowPersons((prev) => !prev)} className={styles.arrow} /> + <ArrowUpOrDown directionY={showPersons} onClick={() => setShowPersons((prev) => !prev)} className={styles.arrow} /> </Box> </Box> {showPersons && ( @@ -64,7 +64,7 @@ export const LogList = () => { <Box className={styles.title2}> <Box> <Typography className={styles.name}>Журнал</Typography> - <ArrowUpOrDown anchorElModel={showPersons} onClick={() => setShowPersons((prev) => !prev)} className={styles.arrow} /> + <ArrowUpOrDown directionY={showPersons} onClick={() => setShowPersons((prev) => !prev)} className={styles.arrow} /> </Box> </Box> @@ -99,7 +99,7 @@ export const PersonsList = ({ <Box> <Typography className={styles.name}>Сотрудники </Typography> {persons?.length !== 0 && <Typography className={styles.count}>{persons?.length}</Typography>} - <ArrowUpOrDown anchorElModel={showPersons} onClick={() => setShowPersons((prev) => !prev)} className={styles.arrow} /> + <ArrowUpOrDown directionY={showPersons} onClick={() => setShowPersons((prev) => !prev)} className={styles.arrow} /> </Box> <Typography onClick={() => setInviteModal(true)}>Добавить сотрудника</Typography> </Box> @@ -121,7 +121,7 @@ export const SecurityList = ({ <Box> <Typography className={styles.name}>Сотрудники безопасности</Typography> {persons?.length !== 0 && <Typography className={styles.count}>{persons?.length}</Typography>} - <ArrowUpOrDown anchorElModel={showPersons} onClick={() => setShowPersons((prev) => !prev)} className={styles.arrow} /> + <ArrowUpOrDown directionY={showPersons} onClick={() => setShowPersons((prev) => !prev)} className={styles.arrow} /> </Box> <Typography onClick={() => setInviteModal(true)}>Добавить сотрудника</Typography> </Box> @@ -87,7 +87,6 @@ export const Chats = ({ <ToggleButtonGroup className={chatsStyles.container} color='primary' - value={0} exclusive aria-label='chats' sx={{ @@ -107,9 +106,7 @@ export const Chats = ({ }, }} > - {localChats === null || localChats?.length <= 0 ? ( - <></> - ) : ( + {!(localChats === null || localChats?.length <= 0) && localChats?.map((el) => { return ( <ToggleButton @@ -296,8 +293,7 @@ export const Chats = ({ )} </ToggleButton> ) - }) - )} + })} </ToggleButtonGroup> </Box> ) @@ -58,7 +58,8 @@ export function BotMessage(props: any) { : {} return ( - <Slide direction='right' in={props.isNewMessage} mountOnEnter unmountOnExit> + // <Slide direction='right' in={props.isNewMessage} mountOnEnter unmountOnExit> + <Box> <Box sx={{ display: 'flex', @@ -252,6 +253,6 @@ export function BotMessage(props: any) { </Box> </Box> </Box> - </Slide> + </Box> ) } @@ -67,7 +67,8 @@ export const UserMessage = React.memo(function UserMessage(props: IMessagesList) {props.message.file && <FullScreenModal modal={modal} setModal={setModal} image={props.message.file.toString()} />} <span className='tutorial-message'> {!props.message.from_model ? ( - <Slide className='tutorial-message-me' direction='left' in={props.isNewMessage} mountOnEnter unmountOnExit> + // <Slide className='tutorial-message-me' direction='left' in={props.isNewMessage} mountOnEnter unmountOnExit> + <Box> <Box className='smallScroll' sx={{ @@ -492,7 +493,7 @@ export const UserMessage = React.memo(function UserMessage(props: IMessagesList) )} </Box> </Box> - </Slide> + </Box> ) : ( <BotMessage modelTitle={props.modelTitle} @@ -1,8 +1,9 @@ import React, { memo, useEffect } from 'react' -import { Box } from '@mui/material' +import { Box, CircularProgress } from '@mui/material' import { useSession } from 'next-auth/react' import { Message } from '@/src/shared/lib/types/model' +import { ArrowDownScroll } from '@/src/shared/ui/icon-components/scroll-down-arrow' import { IsNextDay } from '@/src/widgets/messages/is-next-day' import { PreviewView } from '@/src/widgets/messages/message-components/preview-view' @@ -17,32 +18,64 @@ interface IMessagesList { modelTitle: string | undefined setResendValue: (value: string) => void onLoadImage?: (event: React.ChangeEvent<HTMLInputElement> | null, file?: File) => void + loading: boolean } export const ChatMessagesList: React.FC<IMessagesList> = memo( - ({ messageResponse, onLoadImage, setResendValue, modelTitle, device, modelType, mode, getMessagesPagination, deleteMessage }) => { + ({ messageResponse, onLoadImage, setResendValue, modelTitle, device, modelType, mode, getMessagesPagination, deleteMessage, loading }) => { const paginationScroll = React.useRef<any>() + const [isPaginating, setIsPaginating] = React.useState(false) + const [chatScrollHeight, setChatScrollHeight] = React.useState(0) + const [scrollBottom, setScrollBottom] = React.useState(0) + const desktop = device === 'desktop' const { status } = useSession() const [isNewMessage, setIsNewMessage] = React.useState(false) React.useEffect(() => { - if (messageResponse != undefined) { - const block = paginationScroll.current + const block = paginationScroll.current + + if (messageResponse != undefined && !isPaginating) { + setChatScrollHeight(paginationScroll.current.scrollHeight) const time = setTimeout(() => { if (block) { //@ts-ignore - block.scrollTop = block.scrollHeight + block.scrollTo({ + top: block.scrollHeight, + behavior: 'smooth', // добавляем плавную прокрутку + }) } }, 250) return () => clearTimeout(time) + } else if (messageResponse != undefined && isPaginating) { + if (block) { + //@ts-ignore + block.scrollTop = block.scrollHeight - chatScrollHeight + setChatScrollHeight(paginationScroll.current.scrollHeight) + } } + setIsPaginating(false) }, [messageResponse]) useEffect(() => { setIsNewMessage(true) }, [messageResponse]) + const handleScroll = () => { + console.log(paginationScroll.current?.scrollHeight - paginationScroll.current?.scrollTop - paginationScroll.current?.clientHeight) + setScrollBottom(paginationScroll.current?.scrollHeight - paginationScroll.current?.scrollTop - paginationScroll.current?.clientHeight) + + if (paginationScroll.current && messageResponse?.length !== 0) { + const { scrollTop, scrollHeight, clientHeight } = paginationScroll.current + if (scrollTop === 0) { + if (getMessagesPagination) { + setIsPaginating(true) + getMessagesPagination() + } + } + } + } + return ( <Box sx={{ @@ -55,7 +88,56 @@ export const ChatMessagesList: React.FC<IMessagesList> = memo( paddingLeft: desktop ? 1 : 0, }} ref={paginationScroll} + onScroll={handleScroll} > + {scrollBottom > 500 && ( + <Box + sx={{ + position: 'absolute', + left: 0, + right: 0, + width: 'fit-content', + cursor: 'pointer', + margin: '0 auto', + bottom: '100px', + zIndex: 10, + }} + onClick={() => { + //@ts-ignore + const block = paginationScroll.current + + block.scrollTo({ + top: block.scrollHeight, + behavior: 'smooth', // добавляем плавную прокрутку + }) + }} + > + <ArrowDownScroll /> + </Box> + )} + + {loading && ( + <Box + sx={{ + position: 'absolute', + left: 0, + right: 0, + width: 'fit-content', + margin: '0 auto', + top: '10px', + zIndex: 10, + }} + > + <CircularProgress + size={18} + thickness={3} + sx={{ + color: '#7F7DF3', + }} + /> + </Box> + )} + {messageResponse?.length === 0 && status === 'authenticated' ? ( <>{desktop && modelType !== 'deepl' && <PreviewView setValue={setResendValue} />}</> ) : ( @@ -0,0 +1,15 @@ +import { NavigationSearchModelLink } from './types' +import { API_URL } from '@/src/shared/lib/constants' +import axios from 'axios' + +export const getModelChatLinks = async (token: string) => { + return await axios.get<NavigationSearchModelLink[]>(API_URL + '/api/chats/links', { + headers: { Authorization: `Bearer ${token}` }, + }) +} + +export const getModelMediaLinks = async (token: string) => { + return await axios.get<NavigationSearchModelLink[]>(API_URL + '/api/media/images/links', { + headers: { Authorization: `Bearer ${token}` }, + }) +} @@ -0,0 +1,12 @@ +export interface NavigationSearchModelLink { + title: string + slug: string +} + +export interface NavigationSearchLink { + label: string + url: string + category: string + external?: boolean + uid?: string +} @@ -0,0 +1 @@ +export * from './static-links' @@ -0,0 +1,35 @@ +import { NavigationSearchLink } from "../api/types"; + +export const staticLinks: NavigationSearchLink[] = [ + { + label: 'Дашборд', + url: '/', + category: 'Навигация' + }, + { + label: 'Оплата', + url: '/account?scope=subscribe', + category: 'Навигация', + }, + { + label: 'Настройки', + url: '/account?scope=setting', + category: 'Навигация', + }, + { + label: 'Настройки корп. аккаунта', + url: '/account?scope=business', + category: 'Навигация', + }, + { + label: 'API-ключи', + url: '/api-keys', + category: 'Навигация', + }, + { + label: 'Реквизиты', + url: 'https://air.fail/requisites', + category: 'Навигация', + external: true, + }, +] @@ -0,0 +1,2 @@ +export * from './use-model' +export * from './use-chat-links' \ No newline at end of file @@ -0,0 +1,34 @@ +import { useEffect, useId, useMemo, useState } from 'react' +import { NavigationSearchLink, NavigationSearchModelLink } from '../api/types' +import { getModelChatLinks, getModelMediaLinks } from '../api/api-get-model-links' +import { uniqueId } from 'lodash' +import { useSession } from 'next-auth/react' + +export const useNavigationSearchChatLinks = () => { + const [chatLinks, setChatLinks] = useState<NavigationSearchModelLink[]>([]) + + const { data } = useSession() + + const fetchChatLinks = async () => { + if(!data) return + setChatLinks((await getModelChatLinks(data.access)).data) + } + + const visibleChatLinks = useMemo<NavigationSearchLink[]>( + () => + chatLinks.map((el) => ({ + uid: uniqueId(), + label: el.title, + url: 'chat-bot/' + el.slug, + category: 'Чат-боты', + })), + [chatLinks] + ) + + return { + chatLinks, + setChatLinks, + visibleChatLinks, + fetchChatLinks, + } +} @@ -0,0 +1,34 @@ +import { useEffect, useMemo, useState } from 'react' +import { NavigationSearchLink, NavigationSearchModelLink } from '../api/types' +import { getModelMediaLinks } from '../api/api-get-model-links' +import { uniqueId } from 'lodash' +import { useSession } from 'next-auth/react' + +export const useNavigationSearchMediaLinks = () => { + const [mediaLinks, setMediaLinks] = useState<NavigationSearchModelLink[]>([]) + + const { data } = useSession() + + const fetchMediaLinks = async () => { + if (!data) return + setMediaLinks((await getModelMediaLinks(data.access)).data) + } + + const visibleMediaLinks = useMemo<NavigationSearchLink[]>( + () => + mediaLinks.map((el) => ({ + uid: uniqueId(), + label: el.title, + url: 'images/' + el.slug, + category: 'Изображения', + })), + [mediaLinks] + ) + + return { + mediaLinks, + setMediaLinks, + visibleMediaLinks, + fetchMediaLinks, + } +} @@ -0,0 +1,70 @@ +import { RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import { NavigationSearchLink } from '../api/types' +import { useRouter } from 'next/router' + +export const useNavigationSearchModel = (links: NavigationSearchLink[]) => { + // state + const [search, setSearch] = useState<string>('') + + const [searchOpen, setSearchOpen] = useState(false) + + const searchRef = useRef<HTMLInputElement>(null) + + const { push } = useRouter() + + const filteredLinks = useMemo(() => { + if (!search) return links + return links.filter((el) => el.label.toLowerCase().includes(search.toLowerCase())) + }, [search, links]) + + // hooks + const ctrlF = (e: KeyboardEvent) => { + if (!searchRef.current) { + return + } + + if ((e.key === 'f' || e.key === 'F') && (e.ctrlKey || e.metaKey)) { + e.preventDefault() + ;(searchRef.current as HTMLInputElement).focus() + setSearchOpen(true) + } + } + + const enteredCallback = (e: KeyboardEvent) => { + if (e.key === 'Enter') { + e.preventDefault() + e.stopPropagation() + + const value = filteredLinks.at(0) + + console.log(value) + console.log(filteredLinks) + + if (value) { + push('/' + value.url) + setSearchOpen(false) + } + } + } + + // state hooks + useEffect(() => { + document.addEventListener('keydown', ctrlF, false) + searchRef.current?.addEventListener('keydown', enteredCallback, false) + return () => { + document.removeEventListener('keydown', ctrlF, false) + searchRef.current?.removeEventListener('keydown', enteredCallback, false) + } + }, [ctrlF]) + + return { + // S + search, + searchOpen, + searchRef, + filteredLinks, + // F + setSearch, + setSearchOpen, + } +} @@ -0,0 +1 @@ +export { Search as NavigationSearch } from './search' @@ -0,0 +1,9 @@ +.ctrl { + padding: 2px; + text-align: center; + width: 55px; + height: 25px; + border-radius: 7px; + border: var(--new-ui-ctrl-f-button-border); + background: var(--new-ui-ctrl-f-button-bg); +} @@ -0,0 +1,28 @@ +import { Box, Typography } from '@mui/material' +import React from 'react' + +import styles from './key-for-search.module.scss' + +interface KeyForSearchProps { + userAgent: string | null +} + +export const KeyForSearch = ({ userAgent }: KeyForSearchProps) => { + if (userAgent === null) { + return null + } + + const checkType = () => { + if (userAgent.includes('Windows')) { + return 'Ctrl + F' + } else { + return '⌥+F' + } + } + + return ( + <Box className={styles.ctrl}> + <Typography sx={{ fontSize: '13px', color: '#A4AAB5', fontWeight: 500 }}>{checkType()}</Typography> + </Box> + ) +} @@ -0,0 +1,154 @@ +import React, { useEffect, useMemo } from 'react' +import { Autocomplete, Box, Stack, TextField, Typography } from '@mui/material' +import Image from 'next/image' +import { KeyForSearch } from './key-for-search' +import { useNavigationSearchChatLinks, useNavigationSearchModel } from '../model' +import { staticLinks } from '../config' +import { InputStyleDark, InputStyleLight, useConcat } from '@/src/shared' +import { useAppSelector } from '@/src/main/store/store' +import { useRouter } from 'next/router' +import { NavigationSearchLink } from '../api/types' +import { useNavigationSearchMediaLinks } from '../model/use-media-links' + +interface SearchProps { + device: string +} + +export const Search = ({ device }: SearchProps) => { + const desktop = device === 'desktop' + + const { theme } = useAppSelector((state) => state.theme) + + const { push } = useRouter() + + const { fetchChatLinks, visibleChatLinks } = useNavigationSearchChatLinks() + + const { fetchMediaLinks, visibleMediaLinks } = useNavigationSearchMediaLinks() + + const links = useConcat<NavigationSearchLink[]>( + visibleChatLinks, + visibleMediaLinks, + staticLinks + ) + + useEffect(() => { + console.log(links) + }, [links]) + + const { search, setSearch, searchOpen, setSearchOpen, searchRef, filteredLinks } = + useNavigationSearchModel(links) + + useEffect(() => { + fetchChatLinks() + fetchMediaLinks() + }, []) + + return ( + <> + <Stack> + <Autocomplete + disablePortal + freeSolo + sx={{ width: '457px' }} + noOptionsText={'Не найдено'} + options={filteredLinks} + // filterOptions={filter} + groupBy={(link) => link.category} + renderGroup={(params) => ( + <li key={params.key}> + <div> + <Typography + sx={{ + fontSize: '16px', + fontWeight: 600, + color: '#A4AAB5', + marginLeft: '10px', + }} + > + {params.group} + </Typography> + </div> + <ul>{params.children}</ul> + </li> + )} + open={searchOpen} + onOpen={() => setSearchOpen(true)} + onClose={() => setSearchOpen(false)} + getOptionLabel={(label: any) => (label as NavigationSearchLink).label} + renderOption={(option, state) => ( + <Typography + {...option} + key={state.uid ?? state.label} + sx={{ + display: 'flex', + alignItems: 'center', + fontSize: '18px', + fontWeight: 500, + }} + > + <span style={{ marginLeft: '20px' }}>{state.label}</span> + </Typography> + )} + onChange={async (event, value: any) => { + if (!value) { + return + } + if (value.external) { + return window.open(value.url, '_blank') + } + push('/' + value.url) + }} + renderInput={(params) => ( + <TextField + inputRef={searchRef} + {...params} + fullWidth + sx={ + theme === 'light' + ? { + ...InputStyleLight, + '& input': { + fontSize: '18px !important', + fontWeight: 500, + }, + } + : { + ...InputStyleDark, + } + } + className='bg-color-block' + size='small' + value={search} + onChange={(e: any) => setSearch(e.target.value)} + placeholder='Поиск по платформе' + InputProps={{ + ...params.InputProps, + startAdornment: ( + <Image + src={'/search.svg'} + width={15} + height={15} + alt='Поиск' + style={{ + marginLeft: '8px', + marginRight: '4px', + marginTop: '2px', + transform: 'scaleX(-1)', + }} + /> + ), + endAdornment: ( + <KeyForSearch + userAgent={ + desktop ? window.navigator.userAgent : null + } + /> + ), + }} + /> + )} + /> + </Stack> + </> + ) +} @@ -0,0 +1,2 @@ +export * from './ui' +export * from './config' \ No newline at end of file @@ -1,7 +1,7 @@ .wrap { display: flex; justify-content: space-between; - align-items: start; + align-items: flex-start; width: 100%; @media (max-width: 768px) { @@ -19,7 +19,7 @@ height: 176px; display: flex; flex-direction: column; - align-items: start; + align-items: flex-start; justify-content: space-between; .manage { @@ -15,9 +15,14 @@ import { usePathname } from 'next/navigation' import { useRouter } from 'next/router' import { signOut, useSession } from 'next-auth/react' +import { addUserSettings } from '@/src/entities/user-account/api/add-user-settings' +import { updateUserSettings } from '@/src/entities/user-account/api/update-user-settings' +import { isSettingExist } from '@/src/entities/user-account/lib/helpers/is-setting-exist' +import { addUserAccountSettings, updateUserAccountSettings } from '@/src/entities/user-account/model/settings' import { getAll, ResponseAllInfo } from '@/src/entities/user-account/model/user-type-slice' -import { useAppSelector } from '@/src/main/store/store' +import { useAppDispatch, useAppSelector } from '@/src/main/store/store' import { TooltipCustom } from '@/src/shared' +import { Device } from '@/src/shared/lib/types/entities' import '../styles/styles.module.css' import styles from '../styles/styles.module.css' @@ -29,8 +34,8 @@ export const menuListTop = [ export const menuListMiddle = [ { title: 'Чат-боты', link: '/chat-bot', icon: '/svg/side-menu/chat', activeList: ['chat-bot'] }, - { title: 'Изображения', link: '/images', icon: '/svg/side-menu/image', activeList: ['dalle', 'kandinksy', 'stable-diffusion', 'midjourney'] }, - //{ title: 'Копирайтинг', link: '/copy', icon: '/svg/side-menu/copyrating', activeList: ['/create'] }, + { title: 'Изображения', link: '/images', icon: '/svg/side-menu/image', activeList: ['images'] }, + // { title: 'Копирайтинг', link: '/copywriting/my', icon: '/svg/side-menu/copyrating', activeList: ['copywriting'] }, // { title: 'Видео', link: '/video', icon: '/svg/side-menu/video', activeList: [] }, // { title: 'Аудио', link: '/audio', icon: '/svg/side-menu/audio', activeList: [] }, // { title: 'Код', link: '/code', icon: '/svg/side-menu/code', activeList: [] }, @@ -83,14 +88,16 @@ const Drawer = styled(MuiDrawer, { shouldForwardProp: (prop) => prop !== 'open' }), })) -export const SideMenu = () => { - const [open, setOpen] = React.useState(true) +export const SideMenu = ({ device, sidemenuDefaultOpen }: { device: Device; sidemenuDefaultOpen: boolean }) => { + const [open, setOpen] = React.useState(sidemenuDefaultOpen) + const [isInitialValueSet, setIsInitialValueSet] = React.useState(false) const { status, data } = useSession() + const dispatch = useAppDispatch() const { pathname, basePath, asPath, push } = useRouter() - const theme = useAppSelector((state) => state.theme.theme) + const { theme, settings } = useAppSelector((state) => state) const handleDrawerOpen = () => { setOpen(true) @@ -116,10 +123,44 @@ export const SideMenu = () => { getAll(data?.access).then((res) => setUserInfo(res)) }, [data?.access]) + useEffect(() => { + if (settings.state !== null && isInitialValueSet) { + let response = isSettingExist({ settings: settings.state, targetDevice: device, targetType: 'sidemenu' }) + + if (response && data?.access) { + dispatch( + updateUserAccountSettings({ + token: data.access, + id: response.id, + value: { sidemenu_state: open ? 'opened' : 'closed' }, + settings: settings.state, + }) + ) + } else if (data?.access) { + dispatch( + addUserAccountSettings({ + token: data.access, + setting: { device, type: 'sidemenu', value: { sidemenu_state: open ? 'opened' : 'closed' } }, + }) + ) + } + } + }, [open]) + + useEffect(() => { + if (settings.state !== null && !isInitialValueSet) { + let setting = isSettingExist({ settings: settings.state, targetDevice: device, targetType: 'sidemenu' }) + if (setting) { + setting?.value?.sidemenu_state === 'opened' ? setOpen(true) : setOpen(false) + } + setIsInitialValueSet(true) + } + }, [settings.state]) + return ( <Drawer className={styles.drawer} - PaperProps={{ sx: { backgroundColor: theme === 'light' ? 'white' : '#151518', border: 'none' } }} + PaperProps={{ sx: { backgroundColor: theme.theme === 'light' ? 'white' : '#151518', border: 'none' } }} variant='permanent' open={open} > @@ -166,7 +207,7 @@ export const SideMenu = () => { key={el.title} open={open} pathname={asPath} - theme={theme} + theme={theme.theme} title={el.title} link={el.link} icon={el.icon} @@ -181,7 +222,7 @@ export const SideMenu = () => { key={el.title} open={open} pathname={asPath} - theme={theme} + theme={theme.theme} title={el.title} link={el.link} icon={el.icon} @@ -196,7 +237,7 @@ export const SideMenu = () => { <MenuItem open={open} pathname={pathname} - theme={theme} + theme={theme.theme} title={'Поддержка'} link={null} icon={'/svg/side-menu/side-question'} @@ -205,7 +246,7 @@ export const SideMenu = () => { <MenuItem open={open} pathname={pathname} - theme={theme} + theme={theme.theme} title={'API-ключи'} link={'/api-keys'} icon={'/svg/side-menu/api-keys'} @@ -287,6 +328,7 @@ export function MenuItem(props: MenuItemProps) { style={{ backgroundColor: 'transparent' }} > <ListItem + component='div' sx={{ backgroundColor: isActive ? 'rgba(130, 128, 255, 0.08)' : 'none', borderRadius: '10px', @@ -1,11 +1,16 @@ import React from 'react' import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown' import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp' +import SvgIcon from '@mui/icons-material/KeyboardArrowDown' -const ArrowUpOrDown = (props: any) => { +interface ArrowUpOrDownProps extends React.ComponentProps<typeof SvgIcon> { + directionY: boolean +} + +const ArrowUpOrDown = ({ directionY, ...props }: ArrowUpOrDownProps) => { return ( <> - {props.anchorElModel ? ( + {directionY ? ( <KeyboardArrowUpIcon sx={{ color: '#7F7DF3' }} {...props} /> ) : ( <KeyboardArrowDownIcon sx={{ color: '#7F7DF3' }} {...props} /> @@ -1,125 +0,0 @@ -import React, { memo } from 'react' -import MenuIcon from '@mui/icons-material/Menu' -import { Box, Button, Stack, Typography } from '@mui/material' -import dynamic from 'next/dynamic' -import Link from 'next/link' -import Router, { useRouter } from 'next/router' -import { useSession } from 'next-auth/react' - -import { useAppSelector } from '@/src/main/store/store' -import { Balance } from '@/src/shared' -import { NavigateTopBar } from '@/src/widgets/top-bar-model/ui/navigate-top-bar' -import { NavigateTopBarMobile } from '@/src/widgets/top-bar-model/ui/navigate-top-bar-mobile' - -interface IModelTopBar { - device: 'mobile' | 'desktop' - favorites: any[] | [] - token: string | null - title: string -} - -export const ModelTopBar: React.FC<IModelTopBar> = memo(({ device, token, favorites, title }) => { - const theme = useAppSelector((state) => state.theme.theme) - - const [anchorElModel, setAnchorElModel] = React.useState<HTMLElement | null>(null) - - const desktop = device === 'desktop' - - const { status } = useSession() - - const { pathname } = useRouter() - - const balance = useAppSelector((state) => state.balance.balance) - - const closeMenuModel = () => setAnchorElModel(null) - const openMenuModel = (event: React.MouseEvent<HTMLButtonElement>) => { - setAnchorElModel(event.currentTarget) - } - const goToPayment = () => { - Router.push('/account') - } - - const LazyTutorial = dynamic(() => import('@/src/features/tutorial-gpt').then((component) => component.Tutorial)) - - const LazyArrowIcon = dynamic(() => import('./arrow-up-or-down')) - - return ( - <Stack - direction='row' - justifyContent='space-between' - alignItems='center' - sx={{ - backgroundColor: desktop ? (theme === 'light' ? '#F8F8F8' : '#4B4B4B') : theme === 'light' ? '#F8F8F8' : 'transparent', - borderRadius: desktop ? '15px' : '15px 15px', - marginTop: desktop ? 1 : 0, - marginBottom: desktop ? 2 : 1, - padding: desktop ? '8px 5px' : '4px 0', - boxShadow: desktop ? 'none' : 'rgba(17, 17, 26, 0.05) 0px 4px 16px, rgba(17, 17, 26, 0.05) 0px 8px 32px;', - }} - > - <Stack direction='row' alignItems='center'> - {desktop && <Button onClick={openMenuModel}>{desktop && <MenuIcon sx={{ color: '#7F7DF3' }} />}</Button>} - <Stack onClick={openMenuModel as any} direction='row' alignItems='center'> - <Typography - onClick={openMenuModel} - variant='body2' - sx={{ - color: '#7F7DF3', - lineHeight: '26.6px', - fontSize: '19px', - fontWeight: '600px', - marginLeft: desktop ? 0 : 2, - }} - > - {title} - </Typography> - {!desktop && <LazyArrowIcon anchorElModel={anchorElModel} />} - </Stack> - - {desktop ? ( - <NavigateTopBar favorites={favorites} closeMenu={closeMenuModel} anchorEl={anchorElModel} /> - ) : ( - <NavigateTopBarMobile anchorEl={anchorElModel} closeMenu={closeMenuModel} favorites={favorites} /> - )} - </Stack> - - <Box display='flex' alignItems='center'> - {desktop && status === 'authenticated' && pathname === '/chatgpt' && <LazyTutorial />} - <Stack - direction='row' - className='tutorial-balance' - sx={{ - backgroundColor: theme === 'light' ? (desktop ? 'white' : 'transparent') : '#373737', - marginRight: 1.2, - padding: desktop ? '8px 15px' : '8px 0px', - borderRadius: '10px', - marginLeft: 3, - }} - > - {token && ( - <Link href={'/account'}> - <Balance balance={balance} /> - </Link> - )} - {desktop && ( - <Typography - variant='body2' - sx={{ - color: '#7F7DF3', - lineHeight: '21px', - fontSize: '15px', - marginLeft: token ? 3 : 0, - '&:hover': { cursor: 'pointer' }, - }} - onClick={goToPayment} - > - Купить токены - </Typography> - )} - </Stack> - </Box> - </Stack> - ) -}) - -ModelTopBar.displayName = 'ModelTopBar' @@ -1 +0,0 @@ -export { ModelTopBar } from './ui/model-top-bar' @@ -1,7 +0,0 @@ -import * as Sentry from '@sentry/nextjs' - -export async function register() { - if (process.env.NEXT_RUNTIME === 'nodejs') { - await import('../sentry.server.config') - } -} \ No newline at end of file @@ -1,30 +1,30 @@ { - "plugins": [ - "prettier", - "simple-import-sort" - ], - "extends": ["next/core-web-vitals"], - "rules": { - "no-console": "warn", - "quotes": ["warn", "single"], - "indent": "off", - "jsx-quotes": [ "warn", "prefer-single"], - "simple-import-sort/imports": ["error",{ - "groups": [ - // Packages `react` related packages come first. - ["^react", "^@?\\w"], - // Internal packages. - ["^(@|components)(/.*|$)"], - // Side effect imports. - ["^\\u0000"], - // Parent imports. Put `..` last. - ["^\\.\\.(?!/?$)", "^\\.\\./?$"], - // Other relative imports. Put same-folder imports and `.` last. - ["^\\./(?=.*/)(?!/?$)", "^\\.(?!/?$)", "^\\./?$"], - // Style imports. - ["^.+\\.?(css)$"] - ] - }], - "simple-import-sort/exports": "error" - } + "plugins": ["prettier", "simple-import-sort"], + "extends": ["next/core-web-vitals"], + "rules": { + "no-console": "warn", + "quotes": ["warn", "single"], + "indent": "off", + "jsx-quotes": ["warn", "prefer-single"], + "simple-import-sort/imports": [ + "warn", + { + "groups": [ + // Packages `react` related packages come first. + ["^react", "^@?\\w"], + // Internal packages. + ["^(@|components)(/.*|$)"], + // Side effect imports. + ["^\\u0000"], + // Parent imports. Put `..` last. + ["^\\.\\.(?!/?$)", "^\\.\\./?$"], + // Other relative imports. Put same-folder imports and `.` last. + ["^\\./(?=.*/)(?!/?$)", "^\\.(?!/?$)", "^\\./?$"], + // Style imports. + ["^.+\\.?(css)$"] + ] + } + ], + "simple-import-sort/exports": "warn" + } } @@ -38,6 +38,3 @@ next-env.d.ts /.idea - -# ServerError Config File -.env.sentry-build-plugin @@ -5,8 +5,6 @@ "trailingComma": "es5", "jsxBracketSameLine": false, "semi": false, - "printWidth": 150, + "printWidth": 100, "jsxSingleQuote": true } - - @@ -8,9 +8,9 @@ const nextConfig = { asyncWebAssembly: true, layers: true, } + return config }, - reactStrictMode: false, images: { domains: [ @@ -32,20 +32,3 @@ const withBundleAnalyzer = require('@next/bundle-analyzer')({ }) module.exports = withBundleAnalyzer(nextConfig) - -// Injected content via ServerError wizard below - -const { withSentryConfig } = require('@sentry/nextjs') - -module.exports = withSentryConfig(module.exports, { - org: process.env.SENTRY_ORGANIZATION, - sentryUrl: process.env.SENTRY_DOMAIN, - widenClientFileUpload: true, - reactComponentAnnotation: { - enabled: true, - }, - tunnelRoute: '/monitoring', - hideSourceMaps: true, - disableLogger: true, - automaticVercelMonitors: false, -}) @@ -20,7 +20,7 @@ "@mui/x-date-pickers": "^6.6.0", "@next/bundle-analyzer": "^13.4.3", "@reduxjs/toolkit": "^1.9.5", - "@sentry/nextjs": "^8.42.0", + "@sentry/nextjs": "^7.59.2", "@types/cookie": "^0.5.1", "@types/intro.js": "^5.1.1", "@types/lodash": "^4.14.195", @@ -30,7 +30,6 @@ "@types/react-syntax-highlighter": "^15.5.7", "axios": "^0.24.0", "base64-encode-file": "^1.0.7", - "buffer": "^6.0.3", "chart.js": "^4.4.0", "cookie": "^0.5.0", "cross-env": "^7.0.3", @@ -90,6 +89,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -114,6 +114,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", + "peer": true, "engines": { "node": ">=6.9.0" } @@ -122,6 +123,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.13", @@ -193,6 +195,7 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "peer": true, "dependencies": { "@babel/compat-data": "^7.22.9", "@babel/helper-validator-option": "^7.22.15", @@ -250,6 +253,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -276,6 +280,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "peer": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -314,6 +319,7 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "peer": true, "engines": { "node": ">=6.9.0" } @@ -322,6 +328,7 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.4.tgz", "integrity": "sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==", + "peer": true, "dependencies": { "@babel/template": "^7.22.15", "@babel/traverse": "^7.23.4", @@ -732,14 +739,13 @@ "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==" }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "license": "MIT", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dependencies": { - "@jridgewell/set-array": "^1.2.1", + "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { "node": ">=6.0.0" @@ -754,36 +760,22 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "license": "MIT", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "engines": { "node": ">=6.0.0" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT" + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "license": "MIT", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1405,1903 +1397,366 @@ "node": ">= 8" } }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" + "node_modules/@panva/hkdf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@panva/hkdf/-/hkdf-1.1.1.tgz", + "integrity": "sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==", + "funding": { + "url": "https://github.com/sponsors/panva" } }, - "node_modules/@opentelemetry/api-logs": { - "version": "0.54.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.54.2.tgz", - "integrity": "sha512-4MTVwwmLgUh5QrJnZpYo6YRO5IBLAggf2h8gWDblwRagDStY13aEvt7gGk3jewrMaPlHiF83fENhIx0HO97/cQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=14" - } + "node_modules/@polka/url": { + "version": "1.0.0-next.23", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz", + "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==" }, - "node_modules/@opentelemetry/context-async-hooks": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.28.0.tgz", - "integrity": "sha512-igcl4Ve+F1N2063PJUkesk/GkYyuGIWinYkSyAFTnIj3gzrOgvOA4k747XNdL47HRRL1w/qh7UW8NDuxOLvKFA==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" } }, - "node_modules/@opentelemetry/core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", - "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", - "license": "Apache-2.0", + "node_modules/@reduxjs/toolkit": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.7.tgz", + "integrity": "sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" - }, - "engines": { - "node": ">=14" + "immer": "^9.0.21", + "redux": "^4.2.1", + "redux-thunk": "^2.4.2", + "reselect": "^4.1.8" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation": { - "version": "0.54.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.54.2.tgz", - "integrity": "sha512-go6zpOVoZVztT9r1aPd79Fr3OWiD4N24bCPJsIKkBses8oyFo12F/Ew3UBTdIu6hsW4HC4MVEJygG6TEyJI/lg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.54.2", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.0.2" }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } } }, - "node_modules/@opentelemetry/instrumentation-amqplib": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.43.0.tgz", - "integrity": "sha512-ALjfQC+0dnIEcvNYsbZl/VLh7D2P1HhFF4vicRKHhHFIUV3Shpg4kXgiek5PLhmeKSIPiUB25IYH5RIneclL4A==", - "license": "Apache-2.0", + "node_modules/@rollup/plugin-commonjs": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.0.tgz", + "integrity": "sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.54.0", - "@opentelemetry/semantic-conventions": "^1.27.0" + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.27.0" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" }, "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "rollup": "^2.68.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@opentelemetry/instrumentation-connect": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.40.0.tgz", - "integrity": "sha512-3aR/3YBQ160siitwwRLjwqrv2KBT16897+bo6yz8wIfel6nWOxTZBJudcbsK3p42pTC7qrbotJ9t/1wRLpv79Q==", - "license": "Apache-2.0", + "node_modules/@rollup/pluginutils": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz", + "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.54.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@types/connect": "3.4.36" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" }, "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@opentelemetry/instrumentation-dataloader": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.12.0.tgz", - "integrity": "sha512-pnPxatoFE0OXIZDQhL2okF//dmbiWFzcSc8pUg9TqofCLYZySSxDCgQc69CJBo5JnI3Gz1KP+mOjS4WAeRIH4g==", - "license": "Apache-2.0", + "node_modules/@rushstack/eslint-patch": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.6.0.tgz", + "integrity": "sha512-2/U3GXA6YiPYQDLGwtGlnNgKYBSwCFIHf8Y9LUY5VATHdtbLlU0Y1R3QoBnT0aB4qv/BEiVVsj7LJXoQCgJ2vA==" + }, + "node_modules/@sentry-internal/tracing": { + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.81.1.tgz", + "integrity": "sha512-E5xm27xrLXL10knH2EWDQsQYh5nb4SxxZzJ3sJwDGG9XGKzBdlp20UUhKqx00wixooVX9uCj3e4Jg8SvNB1hKg==", "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0" + "@sentry/core": "7.81.1", + "@sentry/types": "7.81.1", + "@sentry/utils": "7.81.1" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "node": ">=8" } }, - "node_modules/@opentelemetry/instrumentation-dataloader/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", + "node_modules/@sentry/browser": { + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.81.1.tgz", + "integrity": "sha512-DNtS7bZEnFPKVoGazKs5wHoWC0FwsOFOOMNeDvEfouUqKKbjO7+RDHbr7H6Bo83zX4qmZWRBf8V+3n3YPIiJFw==", "dependencies": { - "@opentelemetry/api": "^1.0.0" + "@sentry-internal/tracing": "7.81.1", + "@sentry/core": "7.81.1", + "@sentry/replay": "7.81.1", + "@sentry/types": "7.81.1", + "@sentry/utils": "7.81.1" }, "engines": { - "node": ">=14" + "node": ">=8" } }, - "node_modules/@opentelemetry/instrumentation-dataloader/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", + "node_modules/@sentry/cli": { + "version": "1.77.1", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-1.77.1.tgz", + "integrity": "sha512-OtJ7U9LeuPUAY/xow9wwcjM9w42IJIpDtClTKI/RliE685vd/OJUIpiAvebHNthDYpQynvwb/0iuF4fonh+CKw==", + "hasInstallScript": true, "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" + "https-proxy-agent": "^5.0.0", + "mkdirp": "^0.5.5", + "node-fetch": "^2.6.7", + "progress": "^2.0.3", + "proxy-from-env": "^1.1.0", + "which": "^2.0.2" }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-dataloader/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", "bin": { - "semver": "bin/semver.js" + "sentry-cli": "bin/sentry-cli" }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/@opentelemetry/instrumentation-express": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.44.0.tgz", - "integrity": "sha512-GWgibp6Q0wxyFaaU8ERIgMMYgzcHmGrw3ILUtGchLtLncHNOKk0SNoWGqiylXWWT4HTn5XdV8MGawUgpZh80cA==", - "license": "Apache-2.0", + "node_modules/@sentry/core": { + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.81.1.tgz", + "integrity": "sha512-tU37yAmckOGCw/moWKSwekSCWWJP15O6luIq+u7wal22hE88F3Vc5Avo8SeF3upnPR+4ejaOFH+BJTr6bgrs6Q==", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.54.0", - "@opentelemetry/semantic-conventions": "^1.27.0" + "@sentry/types": "7.81.1", + "@sentry/utils": "7.81.1" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "node": ">=8" } }, - "node_modules/@opentelemetry/instrumentation-fastify": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.41.0.tgz", - "integrity": "sha512-pNRjFvf0mvqfJueaeL/qEkuGJwgtE5pgjIHGYwjc2rMViNCrtY9/Sf+Nu8ww6dDd/Oyk2fwZZP7i0XZfCnETrA==", - "license": "Apache-2.0", + "node_modules/@sentry/integrations": { + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.81.1.tgz", + "integrity": "sha512-DN5ONn0/LX5HHVPf1EBGHFssIZaZmLgkqUIeMqCNYBpB4DiOrJANnGwTcWKDPphqhdPxjnPv9AGRLaU0PdvvZQ==", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.54.0", - "@opentelemetry/semantic-conventions": "^1.27.0" + "@sentry/core": "7.81.1", + "@sentry/types": "7.81.1", + "@sentry/utils": "7.81.1", + "localforage": "^1.8.1" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "node": ">=8" } }, - "node_modules/@opentelemetry/instrumentation-fs": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.16.0.tgz", - "integrity": "sha512-hMDRUxV38ln1R3lNz6osj3YjlO32ykbHqVrzG7gEhGXFQfu7LJUx8t9tEwE4r2h3CD4D0Rw4YGDU4yF4mP3ilg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.54.0" + "node_modules/@sentry/nextjs": { + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-7.81.1.tgz", + "integrity": "sha512-Wx0QiZHttf+WJkao4UQ5szOWJVu/pmPdKZKE4FWsJuG+mUu6FviOXgh0T0Iq+NnJrgqzKzGLMN6rIWPzN9PLkg==", + "dependencies": { + "@rollup/plugin-commonjs": "24.0.0", + "@sentry/core": "7.81.1", + "@sentry/integrations": "7.81.1", + "@sentry/node": "7.81.1", + "@sentry/react": "7.81.1", + "@sentry/types": "7.81.1", + "@sentry/utils": "7.81.1", + "@sentry/vercel-edge": "7.81.1", + "@sentry/webpack-plugin": "1.21.0", + "chalk": "3.0.0", + "resolve": "1.22.8", + "rollup": "2.78.0", + "stacktrace-parser": "^0.1.10" }, "engines": { - "node": ">=14" + "node": ">=8" }, "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "next": "^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0", + "react": "16.x || 17.x || 18.x", + "webpack": ">= 4.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, - "node_modules/@opentelemetry/instrumentation-generic-pool": { - "version": "0.39.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.39.0.tgz", - "integrity": "sha512-y4v8Y+tSfRB3NNBvHjbjrn7rX/7sdARG7FuK6zR8PGb28CTa0kHpEGCJqvL9L8xkTNvTXo+lM36ajFGUaK1aNw==", - "license": "Apache-2.0", + "node_modules/@sentry/nextjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=14" + "node": ">=8" }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@opentelemetry/instrumentation-generic-pool/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", + "node_modules/@sentry/nextjs/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dependencies": { - "@opentelemetry/api": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=14" + "node": ">=8" } }, - "node_modules/@opentelemetry/instrumentation-generic-pool/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", + "node_modules/@sentry/nextjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "node": ">=7.0.0" } }, - "node_modules/@opentelemetry/instrumentation-generic-pool/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "node_modules/@sentry/nextjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/@opentelemetry/instrumentation-graphql": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.44.0.tgz", - "integrity": "sha512-FYXTe3Bv96aNpYktqm86BFUTpjglKD0kWI5T5bxYkLUPEPvFn38vWGMJTGrDMVou/i55E4jlWvcm6hFIqLsMbg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.54.0" - }, + "node_modules/@sentry/nextjs/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "node": ">=8" } }, - "node_modules/@opentelemetry/instrumentation-hapi": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.41.0.tgz", - "integrity": "sha512-jKDrxPNXDByPlYcMdZjNPYCvw0SQJjN+B1A+QH+sx+sAHsKSAf9hwFiJSrI6C4XdOls43V/f/fkp9ITkHhKFbQ==", - "license": "Apache-2.0", + "node_modules/@sentry/nextjs/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "node": ">=8" } }, - "node_modules/@opentelemetry/instrumentation-hapi/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", + "node_modules/@sentry/node": { + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.81.1.tgz", + "integrity": "sha512-bKS3Mb95bar8AUEZSLKQ/RTSfFXo5sCSPNiBr5dDFuVljDFdkLq6NE3svG5bisrbENqfi0bqWsB4GZ7NHRTPbA==", "dependencies": { - "@opentelemetry/api": "^1.0.0" + "@sentry-internal/tracing": "7.81.1", + "@sentry/core": "7.81.1", + "@sentry/types": "7.81.1", + "@sentry/utils": "7.81.1", + "https-proxy-agent": "^5.0.0" }, "engines": { - "node": ">=14" + "node": ">=8" } }, - "node_modules/@opentelemetry/instrumentation-hapi/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", + "node_modules/@sentry/react": { + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.81.1.tgz", + "integrity": "sha512-kk0plP/mf8KgVLOiImIpp1liYysmh3Un8uXcVAToomSuHZPGanelFAdP0XhY+0HlWU9KIfxTjhMte1iSwQ8pYw==", "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" + "@sentry/browser": "7.81.1", + "@sentry/types": "7.81.1", + "@sentry/utils": "7.81.1", + "hoist-non-react-statics": "^3.3.2" }, "engines": { - "node": ">=14" + "node": ">=8" }, "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "react": "15.x || 16.x || 17.x || 18.x" } }, - "node_modules/@opentelemetry/instrumentation-hapi/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/@sentry/replay": { + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.81.1.tgz", + "integrity": "sha512-4ueT0C4bYjngN/9p0fEYH10dTMLovHyk9HxJ6zSTgePvGVexhg+cSEHXisoBDwHeRZVnbIvsVM0NA7rmEDXJJw==", + "dependencies": { + "@sentry-internal/tracing": "7.81.1", + "@sentry/core": "7.81.1", + "@sentry/types": "7.81.1", + "@sentry/utils": "7.81.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/@opentelemetry/instrumentation-http": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.53.0.tgz", - "integrity": "sha512-H74ErMeDuZfj7KgYCTOFGWF5W9AfaPnqLQQxeFq85+D29wwV2yqHbz2IKLYpkOh7EI6QwDEl7rZCIxjJLyc/CQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "1.26.0", - "@opentelemetry/instrumentation": "0.53.0", - "@opentelemetry/semantic-conventions": "1.27.0", - "semver": "^7.5.2" - }, + "node_modules/@sentry/types": { + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.81.1.tgz", + "integrity": "sha512-dvJvGyctiaPMIQqa46k56Re5IODWMDxiHJ1UjBs/WYDLrmWFPGrEbyJ8w8CYLhYA+7qqrCyIZmHbWSTRIxstHw==", "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "node": ">=8" } }, - "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", + "node_modules/@sentry/utils": { + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.81.1.tgz", + "integrity": "sha512-gq+MDXIirHKxNZ+c9/lVvCXd6y2zaZANujwlFggRH2u9SRiPaIXVilLpvMm4uJqmqBMEcY81ArujExtHvkbCqg==", "dependencies": { - "@opentelemetry/api": "^1.0.0" + "@sentry/types": "7.81.1" }, "engines": { - "node": ">=14" + "node": ">=8" } }, - "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", - "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", - "license": "Apache-2.0", + "node_modules/@sentry/vercel-edge": { + "version": "7.81.1", + "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-7.81.1.tgz", + "integrity": "sha512-fO5yV+2rz+024XKvhBSGhUdi502j3S1Vds+fIUJVgpgehpxsx4CQQUA1nQDaqDWEtPCB6LcBupD3XvkhBTS5Mw==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" + "@sentry-internal/tracing": "7.81.1", + "@sentry/core": "7.81.1", + "@sentry/types": "7.81.1", + "@sentry/utils": "7.81.1" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": ">=8" } }, - "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", + "node_modules/@sentry/webpack-plugin": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-1.21.0.tgz", + "integrity": "sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==", "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" + "@sentry/cli": "^1.77.1", + "webpack-sources": "^2.0.0 || ^3.0.0" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "node": ">= 8" } }, - "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-http/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@opentelemetry/instrumentation-ioredis": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.43.0.tgz", - "integrity": "sha512-i3Dke/LdhZbiUAEImmRG3i7Dimm/BD7t8pDDzwepSvIQ6s2X6FPia7561gw+64w+nx0+G9X14D7rEfaMEmmjig==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/redis-common": "^0.36.2", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-ioredis/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-ioredis/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-ioredis/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@opentelemetry/instrumentation-kafkajs": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.4.0.tgz", - "integrity": "sha512-I9VwDG314g7SDL4t8kD/7+1ytaDBRbZQjhVaQaVIDR8K+mlsoBhLsWH79yHxhHQKvwCSZwqXF+TiTOhoQVUt7A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.54.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-knex": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.41.0.tgz", - "integrity": "sha512-OhI1SlLv5qnsnm2dOVrian/x3431P75GngSpnR7c4fcVFv7prXGYu29Z6ILRWJf/NJt6fkbySmwdfUUnFnHCTg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.54.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-koa": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.43.0.tgz", - "integrity": "sha512-lDAhSnmoTIN6ELKmLJBplXzT/Jqs5jGZehuG22EdSMaTwgjMpxMDI1YtlKEhiWPWkrz5LUsd0aOO0ZRc9vn3AQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-koa/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-koa/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-koa/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@opentelemetry/instrumentation-lru-memoizer": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.40.0.tgz", - "integrity": "sha512-21xRwZsEdMPnROu/QsaOIODmzw59IYpGFmuC4aFWvMj6stA8+Ei1tX67nkarJttlNjoM94um0N4X26AD7ff54A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-lru-memoizer/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-lru-memoizer/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-lru-memoizer/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@opentelemetry/instrumentation-mongodb": { - "version": "0.48.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.48.0.tgz", - "integrity": "sha512-9YWvaGvrrcrydMsYGLu0w+RgmosLMKe3kv/UNlsPy8RLnCkN2z+bhhbjjjuxtUmvEuKZMCoXFluABVuBr1yhjw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.54.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-mongoose": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.42.0.tgz", - "integrity": "sha512-AnWv+RaR86uG3qNEMwt3plKX1ueRM7AspfszJYVkvkehiicC3bHQA6vWdb6Zvy5HAE14RyFbu9+2hUUjR2NSyg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-mongoose/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-mongoose/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-mongoose/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@opentelemetry/instrumentation-mysql": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.41.0.tgz", - "integrity": "sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@types/mysql": "2.15.26" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-mysql/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-mysql/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-mysql/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@opentelemetry/instrumentation-mysql2": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.41.0.tgz", - "integrity": "sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@opentelemetry/sql-common": "^0.40.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-mysql2/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-mysql2/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-mysql2/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@opentelemetry/instrumentation-nestjs-core": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.40.0.tgz", - "integrity": "sha512-WF1hCUed07vKmf5BzEkL0wSPinqJgH7kGzOjjMAiTGacofNXjb/y4KQ8loj2sNsh5C/NN7s1zxQuCgbWbVTGKg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-nestjs-core/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-nestjs-core/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-nestjs-core/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@opentelemetry/instrumentation-pg": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.44.0.tgz", - "integrity": "sha512-oTWVyzKqXud1BYEGX1loo2o4k4vaU1elr3vPO8NZolrBtFvQ34nx4HgUaexUDuEog00qQt+MLR5gws/p+JXMLQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@opentelemetry/sql-common": "^0.40.1", - "@types/pg": "8.6.1", - "@types/pg-pool": "2.0.6" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-pg/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-pg/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-pg/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@opentelemetry/instrumentation-redis-4": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.42.0.tgz", - "integrity": "sha512-NaD+t2JNcOzX/Qa7kMy68JbmoVIV37fT/fJYzLKu2Wwd+0NCxt+K2OOsOakA8GVg8lSpFdbx4V/suzZZ2Pvdjg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.53.0", - "@opentelemetry/redis-common": "^0.36.2", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-redis-4/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-redis-4/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-redis-4/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@opentelemetry/instrumentation-tedious": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.15.0.tgz", - "integrity": "sha512-Kb7yo8Zsq2TUwBbmwYgTAMPK0VbhoS8ikJ6Bup9KrDtCx2JC01nCb+M0VJWXt7tl0+5jARUbKWh5jRSoImxdCw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.54.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@types/tedious": "^4.0.14" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-undici": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.6.0.tgz", - "integrity": "sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.53.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.7.0" - } - }, - "node_modules/@opentelemetry/instrumentation-undici/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation-undici/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/instrumentation-undici/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@opentelemetry/instrumentation/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@opentelemetry/redis-common": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz", - "integrity": "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/resources": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", - "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/semantic-conventions": "1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.28.0.tgz", - "integrity": "sha512-ceUVWuCpIao7Y5xE02Xs3nQi0tOGmMea17ecBdwtCvdo9ekmO+ijc9RFDgfifMl7XCBf41zne/1POM3LqSTZDA==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/resources": "1.28.0", - "@opentelemetry/semantic-conventions": "1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/sql-common": { - "version": "0.40.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz", - "integrity": "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^1.1.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0" - } - }, - "node_modules/@panva/hkdf": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@panva/hkdf/-/hkdf-1.1.1.tgz", - "integrity": "sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.23", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz", - "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==" - }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@prisma/instrumentation": { - "version": "5.19.1", - "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-5.19.1.tgz", - "integrity": "sha512-VLnzMQq7CWroL5AeaW0Py2huiNKeoMfCH3SUxstdzPrlWQi6UQ9UrfcbUkNHlVFqOMacqy8X/8YtE0kuKDpD9w==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.8", - "@opentelemetry/instrumentation": "^0.49 || ^0.50 || ^0.51 || ^0.52.0", - "@opentelemetry/sdk-trace-base": "^1.22" - } - }, - "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/api-logs": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz", - "integrity": "sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz", - "integrity": "sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.52.1", - "@types/shimmer": "^1.0.2", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@prisma/instrumentation/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@reduxjs/toolkit": { - "version": "1.9.7", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.7.tgz", - "integrity": "sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ==", - "dependencies": { - "immer": "^9.0.21", - "redux": "^4.2.1", - "redux-thunk": "^2.4.2", - "reselect": "^4.1.8" - }, - "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18", - "react-redux": "^7.2.1 || ^8.0.2" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-redux": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-commonjs": { - "version": "28.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.1.tgz", - "integrity": "sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA==", - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "fdir": "^6.2.0", - "is-reference": "1.2.1", - "magic-string": "^0.30.3", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=16.0.0 || 14 >= 14.17" - }, - "peerDependencies": { - "rollup": "^2.68.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/fdir": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", - "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.3.tgz", - "integrity": "sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.6.0.tgz", - "integrity": "sha512-2/U3GXA6YiPYQDLGwtGlnNgKYBSwCFIHf8Y9LUY5VATHdtbLlU0Y1R3QoBnT0aB4qv/BEiVVsj7LJXoQCgJ2vA==" - }, - "node_modules/@sentry-internal/browser-utils": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.42.0.tgz", - "integrity": "sha512-xzgRI0wglKYsPrna574w1t38aftuvo44gjOKFvPNGPnYfiW9y4m+64kUz3JFbtanvOrKPcaITpdYiB4DeJXEbA==", - "license": "MIT", - "dependencies": { - "@sentry/core": "8.42.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry-internal/feedback": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.42.0.tgz", - "integrity": "sha512-dkIw5Wdukwzngg5gNJ0QcK48LyJaMAnBspqTqZ3ItR01STi6Z+6+/Bt5XgmrvDgRD+FNBinflc5zMmfdFXXhvw==", - "license": "MIT", - "dependencies": { - "@sentry/core": "8.42.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry-internal/replay": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.42.0.tgz", - "integrity": "sha512-oNcJEBlDfXnRFYC5Mxj5fairyZHNqlnU4g8kPuztB9G5zlsyLgWfPxzcn1ixVQunth2/WZRklDi4o1ZfyHww7w==", - "license": "MIT", - "dependencies": { - "@sentry-internal/browser-utils": "8.42.0", - "@sentry/core": "8.42.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry-internal/replay-canvas": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.42.0.tgz", - "integrity": "sha512-XrPErqVhPsPh/oFLVKvz7Wb+Fi2J1zCPLeZCxWqFuPWI2agRyLVu0KvqJyzSpSrRAEJC/XFzuSVILlYlXXSfgA==", - "license": "MIT", - "dependencies": { - "@sentry-internal/replay": "8.42.0", - "@sentry/core": "8.42.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/babel-plugin-component-annotate": { - "version": "2.22.6", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.22.6.tgz", - "integrity": "sha512-V2g1Y1I5eSe7dtUVMBvAJr8BaLRr4CLrgNgtPaZyMT4Rnps82SrZ5zqmEkLXPumlXhLUWR6qzoMNN2u+RXVXfQ==", - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/@sentry/browser": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.42.0.tgz", - "integrity": "sha512-lStrEk609KJHwXfDrOgoYVVoFFExixHywxSExk7ZDtwj2YPv6r6Y1gogvgr7dAZj7jWzadHkxZ33l9EOSJBfug==", - "license": "MIT", - "dependencies": { - "@sentry-internal/browser-utils": "8.42.0", - "@sentry-internal/feedback": "8.42.0", - "@sentry-internal/replay": "8.42.0", - "@sentry-internal/replay-canvas": "8.42.0", - "@sentry/core": "8.42.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/bundler-plugin-core": { - "version": "2.22.6", - "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.22.6.tgz", - "integrity": "sha512-1esQdgSUCww9XAntO4pr7uAM5cfGhLsgTK9MEwAKNfvpMYJi9NUTYa3A7AZmdA8V6107Lo4OD7peIPrDRbaDCg==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "2.22.6", - "@sentry/cli": "^2.36.1", - "dotenv": "^16.3.1", - "find-up": "^5.0.0", - "glob": "^9.3.2", - "magic-string": "0.30.8", - "unplugin": "1.0.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@sentry/bundler-plugin-core/node_modules/magic-string": { - "version": "0.30.8", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", - "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@sentry/cli": { - "version": "2.39.1", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.39.1.tgz", - "integrity": "sha512-JIb3e9vh0+OmQ0KxmexMXg9oZsR/G7HMwxt5BUIKAXZ9m17Xll4ETXTRnRUBT3sf7EpNGAmlQk1xEmVN9pYZYQ==", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.7", - "progress": "^2.0.3", - "proxy-from-env": "^1.1.0", - "which": "^2.0.2" - }, - "bin": { - "sentry-cli": "bin/sentry-cli" - }, - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@sentry/cli-darwin": "2.39.1", - "@sentry/cli-linux-arm": "2.39.1", - "@sentry/cli-linux-arm64": "2.39.1", - "@sentry/cli-linux-i686": "2.39.1", - "@sentry/cli-linux-x64": "2.39.1", - "@sentry/cli-win32-i686": "2.39.1", - "@sentry/cli-win32-x64": "2.39.1" - } - }, - "node_modules/@sentry/cli-darwin": { - "version": "2.39.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.39.1.tgz", - "integrity": "sha512-kiNGNSAkg46LNGatfNH5tfsmI/kCAaPA62KQuFZloZiemTNzhy9/6NJP8HZ/GxGs8GDMxic6wNrV9CkVEgFLJQ==", - "license": "BSD-3-Clause", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-linux-arm": { - "version": "2.39.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.39.1.tgz", - "integrity": "sha512-DkENbxyRxUrfLnJLXTA4s5UL/GoctU5Cm4ER1eB7XN7p9WsamFJd/yf2KpltkjEyiTuplv0yAbdjl1KX3vKmEQ==", - "cpu": [ - "arm" - ], - "license": "BSD-3-Clause", - "optional": true, - "os": [ - "linux", - "freebsd" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-linux-arm64": { - "version": "2.39.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.39.1.tgz", - "integrity": "sha512-5VbVJDatolDrWOgaffsEM7znjs0cR8bHt9Bq0mStM3tBolgAeSDHE89NgHggfZR+DJ2VWOy4vgCwkObrUD6NQw==", - "cpu": [ - "arm64" - ], - "license": "BSD-3-Clause", - "optional": true, - "os": [ - "linux", - "freebsd" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-linux-i686": { - "version": "2.39.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.39.1.tgz", - "integrity": "sha512-pXWVoKXCRrY7N8vc9H7mETiV9ZCz+zSnX65JQCzZxgYrayQPJTc+NPRnZTdYdk5RlAupXaFicBI2GwOCRqVRkg==", - "cpu": [ - "x86", - "ia32" - ], - "license": "BSD-3-Clause", - "optional": true, - "os": [ - "linux", - "freebsd" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-linux-x64": { - "version": "2.39.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.39.1.tgz", - "integrity": "sha512-IwayNZy+it7FWG4M9LayyUmG1a/8kT9+/IEm67sT5+7dkMIMcpmHDqL8rWcPojOXuTKaOBBjkVdNMBTXy0mXlA==", - "cpu": [ - "x64" - ], - "license": "BSD-3-Clause", - "optional": true, - "os": [ - "linux", - "freebsd" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-win32-i686": { - "version": "2.39.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.39.1.tgz", - "integrity": "sha512-NglnNoqHSmE+Dz/wHeIVRnV2bLMx7tIn3IQ8vXGO5HWA2f8zYJGktbkLq1Lg23PaQmeZLPGlja3gBQfZYSG10Q==", - "cpu": [ - "x86", - "ia32" - ], - "license": "BSD-3-Clause", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-win32-x64": { - "version": "2.39.1", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.39.1.tgz", - "integrity": "sha512-xv0R2CMf/X1Fte3cMWie1NXuHmUyQPDBfCyIt6k6RPFPxAYUgcqgMPznYwVMwWEA1W43PaOkSn3d8ZylsDaETw==", - "cpu": [ - "x64" - ], - "license": "BSD-3-Clause", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/core": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.42.0.tgz", - "integrity": "sha512-ac6O3pgoIbU6rpwz6LlwW0wp3/GAHuSI0C5IsTgIY6baN8rOBnlAtG6KrHDDkGmUQ2srxkDJu9n1O6Td3cBCqw==", - "license": "MIT", - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/nextjs": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-8.42.0.tgz", - "integrity": "sha512-8gZ0kVwaMpNeDg510m/8OSIuPSahP9GaKoFwPqscbvvbk1Hd+9wdW2X6YhdY+KzKiPLmYH/dGU20CvtN0iZqeg==", - "license": "MIT", - "dependencies": { - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/instrumentation-http": "0.53.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@rollup/plugin-commonjs": "28.0.1", - "@sentry-internal/browser-utils": "8.42.0", - "@sentry/core": "8.42.0", - "@sentry/node": "8.42.0", - "@sentry/opentelemetry": "8.42.0", - "@sentry/react": "8.42.0", - "@sentry/vercel-edge": "8.42.0", - "@sentry/webpack-plugin": "2.22.6", - "chalk": "3.0.0", - "resolve": "1.22.8", - "rollup": "3.29.5", - "stacktrace-parser": "^0.1.10" - }, - "engines": { - "node": ">=14.18" - }, - "peerDependencies": { - "next": "^13.2.0 || ^14.0 || ^15.0.0-rc.0" - } - }, - "node_modules/@sentry/nextjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@sentry/nextjs/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/nextjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@sentry/nextjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/@sentry/nextjs/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/nextjs/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/node": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.42.0.tgz", - "integrity": "sha512-MsNrmAIwDaxf1jTX1FsgZ+3mUq6G6IuU6FAqyp7TDnvUTsbWUtr0OM6EvVUz0zCImybIh9dcTQ+6KTmUyA7URw==", - "license": "MIT", - "dependencies": { - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^1.25.1", - "@opentelemetry/core": "^1.25.1", - "@opentelemetry/instrumentation": "^0.54.0", - "@opentelemetry/instrumentation-amqplib": "^0.43.0", - "@opentelemetry/instrumentation-connect": "0.40.0", - "@opentelemetry/instrumentation-dataloader": "0.12.0", - "@opentelemetry/instrumentation-express": "0.44.0", - "@opentelemetry/instrumentation-fastify": "0.41.0", - "@opentelemetry/instrumentation-fs": "0.16.0", - "@opentelemetry/instrumentation-generic-pool": "0.39.0", - "@opentelemetry/instrumentation-graphql": "0.44.0", - "@opentelemetry/instrumentation-hapi": "0.41.0", - "@opentelemetry/instrumentation-http": "0.53.0", - "@opentelemetry/instrumentation-ioredis": "0.43.0", - "@opentelemetry/instrumentation-kafkajs": "0.4.0", - "@opentelemetry/instrumentation-knex": "0.41.0", - "@opentelemetry/instrumentation-koa": "0.43.0", - "@opentelemetry/instrumentation-lru-memoizer": "0.40.0", - "@opentelemetry/instrumentation-mongodb": "0.48.0", - "@opentelemetry/instrumentation-mongoose": "0.42.0", - "@opentelemetry/instrumentation-mysql": "0.41.0", - "@opentelemetry/instrumentation-mysql2": "0.41.0", - "@opentelemetry/instrumentation-nestjs-core": "0.40.0", - "@opentelemetry/instrumentation-pg": "0.44.0", - "@opentelemetry/instrumentation-redis-4": "0.42.0", - "@opentelemetry/instrumentation-tedious": "0.15.0", - "@opentelemetry/instrumentation-undici": "0.6.0", - "@opentelemetry/resources": "^1.26.0", - "@opentelemetry/sdk-trace-base": "^1.26.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@prisma/instrumentation": "5.19.1", - "@sentry/core": "8.42.0", - "@sentry/opentelemetry": "8.42.0", - "import-in-the-middle": "^1.11.2" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/opentelemetry": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.42.0.tgz", - "integrity": "sha512-QPb9kMFgl35TIwIz0u+BFTbPG461CofMiloidJ44GFZ9cB33T5cB0oIN7ut/5tsH/AvqUmucydsV/Nj3HNQx9g==", - "license": "MIT", - "dependencies": { - "@sentry/core": "8.42.0" - }, - "engines": { - "node": ">=14.18" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/core": "^1.25.1", - "@opentelemetry/instrumentation": "^0.54.0", - "@opentelemetry/sdk-trace-base": "^1.26.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - } - }, - "node_modules/@sentry/react": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.42.0.tgz", - "integrity": "sha512-UBi/WM4oMa+kOA99R7t7Ke57zq6uQw6mALYW4fJ+wuhHZJBLDDDHSGpEUhdWuQ1oWQv/laT34DGS44PJOjfeAg==", - "license": "MIT", - "dependencies": { - "@sentry/browser": "8.42.0", - "@sentry/core": "8.42.0", - "hoist-non-react-statics": "^3.3.2" - }, - "engines": { - "node": ">=14.18" - }, - "peerDependencies": { - "react": "^16.14.0 || 17.x || 18.x || 19.x" - } - }, - "node_modules/@sentry/vercel-edge": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-8.42.0.tgz", - "integrity": "sha512-OvUPowWCLqrllJ/1mUs2SfkNGNVjYDJ2+nmbHOdK7SMlUaHatKbCrb1nUWzRgWJ5E+ztsXi3uCC7cE1a3kA/rQ==", - "license": "MIT", - "dependencies": { - "@opentelemetry/api": "^1.9.0", - "@sentry/core": "8.42.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/webpack-plugin": { - "version": "2.22.6", - "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-2.22.6.tgz", - "integrity": "sha512-BiLhAzQYAz/9kCXKj2LeUKWf/9GBVn2dD0DeYK89s+sjDEaxjbcLBBiLlLrzT7eC9QVj2tUZRKOi6puCfc8ysw==", - "license": "MIT", - "dependencies": { - "@sentry/bundler-plugin-core": "2.22.6", - "unplugin": "1.0.1", - "uuid": "^9.0.0" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "webpack": ">=4.40.0" - } - }, - "node_modules/@sentry/webpack-plugin/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@swc/helpers": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/connect": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", - "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", - "license": "MIT", - "dependencies": { - "@types/node": "*" + "node_modules/@swc/helpers": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", + "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", + "dependencies": { + "tslib": "^2.4.0" } }, "node_modules/@types/cookie": { @@ -3336,33 +1791,10 @@ "node": ">=0.8.0" } }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "license": "MIT" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "node_modules/@types/hast": { "version": "2.3.8", @@ -3387,13 +1819,6 @@ "integrity": "sha512-TT1d8ayz07svlBcoqh26sNpQaU6bBpdFcCC+IMZHp46NNX2mYAHAVefM3wCmQSd4UWhhObeMjFByw2IaPKOXlw==", "dev": true }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "license": "MIT", - "peer": true - }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -3418,15 +1843,6 @@ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, - "node_modules/@types/mysql": { - "version": "2.15.26", - "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz", - "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/node": { "version": "18.15.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.2.tgz", @@ -3437,26 +1853,6 @@ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" }, - "node_modules/@types/pg": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", - "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "pg-protocol": "*", - "pg-types": "^2.2.0" - } - }, - "node_modules/@types/pg-pool": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.6.tgz", - "integrity": "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==", - "license": "MIT", - "dependencies": { - "@types/pg": "*" - } - }, "node_modules/@types/prop-types": { "version": "15.7.11", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", @@ -3512,21 +1908,6 @@ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" }, - "node_modules/@types/shimmer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", - "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==", - "license": "MIT" - }, - "node_modules/@types/tedious": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz", - "integrity": "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/unist": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", @@ -3679,186 +2060,10 @@ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "license": "MIT", - "peer": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "license": "BSD-3-Clause", - "peer": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "license": "Apache-2.0", - "peer": true - }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "license": "MIT", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "bin": { "acorn": "bin/acorn" }, @@ -3866,15 +2071,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -3895,7 +2091,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "license": "MIT", "dependencies": { "debug": "4" }, @@ -3918,16 +2113,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, "node_modules/ansi-escapes": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", @@ -4211,25 +2396,6 @@ "integrity": "sha512-5f9xGrLRBPc6OYM+qqAbsdxjGDCdRqYnThwCmSpBGVa9JDbKochGJXyMc9ufZ+RGYJcZuh/Pt/qeroJy7jyORg==", "license": "MIT" }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -4259,9 +2425,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "funding": [ { "type": "opencollective", @@ -4276,12 +2442,12 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", + "peer": true, "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -4290,36 +2456,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT", - "peer": true - }, "node_modules/call-bind": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", @@ -4350,9 +2486,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001684", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz", - "integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==", + "version": "1.0.30001564", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz", + "integrity": "sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==", "funding": [ { "type": "opencollective", @@ -4366,8 +2502,7 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/ccount": { "version": "2.0.1", @@ -4474,22 +2609,6 @@ "node": ">= 6" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", - "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", - "license": "MIT" - }, "node_modules/classnames": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", @@ -4579,8 +2698,7 @@ "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "license": "MIT" + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" }, "node_modules/concat-map": { "version": "0.0.1", @@ -4590,7 +2708,8 @@ "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "peer": true }, "node_modules/cookie": { "version": "0.5.0", @@ -4814,18 +2933,6 @@ "csstype": "^3.0.2" } }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, "node_modules/draft-js": { "version": "0.11.7", "resolved": "https://registry.npmjs.org/draft-js/-/draft-js-0.11.7.tgz", @@ -4869,10 +2976,10 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.5.67", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.67.tgz", - "integrity": "sha512-nz88NNBsD7kQSAGGJyp8hS6xSPtWwqNogA0mjtc2nUYeEf3nURK9qpV18TuBdDmEDgVWotS8Wkzf+V52dSQ/LQ==", - "license": "ISC" + "version": "1.4.594", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.594.tgz", + "integrity": "sha512-xT1HVAu5xFn7bDfkjGQi9dNpMqGchUkebwf1GL7cZN32NSwwlHRPMSDJ1KN6HkS0bWUtndbSQZqvpQftKG2uFQ==", + "peer": true }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -4891,10 +2998,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "license": "MIT", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -4984,13 +3090,6 @@ "safe-array-concat": "^1.0.1" } }, - "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "license": "MIT", - "peer": true - }, "node_modules/es-set-tostringtag": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", @@ -5029,10 +3128,10 @@ } }, "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "license": "MIT", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "peer": true, "engines": { "node": ">=6" } @@ -5581,8 +3680,7 @@ "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT" + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "node_modules/esutils": { "version": "2.0.3", @@ -5598,16 +3696,6 @@ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "dev": true }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/execa": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", @@ -5872,6 +3960,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "peer": true, "engines": { "node": ">=6.9.0" } @@ -5929,18 +4018,18 @@ } }, "node_modules/glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", - "license": "ISC", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dependencies": { "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -5957,35 +4046,23 @@ "node": ">=10.13.0" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "license": "BSD-2-Clause", - "peer": true - }, "node_modules/glob/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/glob/node_modules/minimatch": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", - "license": "ISC", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, "node_modules/globals": { @@ -6244,7 +4321,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -6317,25 +4393,6 @@ "node": ">=0.10.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/ignore": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", @@ -6344,6 +4401,11 @@ "node": ">= 4" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, "node_modules/immer": { "version": "9.0.21", "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", @@ -6373,18 +4435,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-in-the-middle": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz", - "integrity": "sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==", - "license": "Apache-2.0", - "dependencies": { - "acorn": "^8.8.2", - "acorn-import-attributes": "^1.9.5", - "cjs-module-lexer": "^1.2.2", - "module-details-from-path": "^1.0.3" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -6716,7 +4766,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "license": "MIT", "dependencies": { "@types/estree": "*" } @@ -6855,52 +4904,11 @@ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" } }, "node_modules/jose": { @@ -6962,6 +4970,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "peer": true, "bin": { "json5": "lib/cli.js" }, @@ -7019,6 +5028,14 @@ "node": ">= 0.8.0" } }, + "node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/lilconfig": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", @@ -7114,14 +5131,12 @@ } } }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.11.5" + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dependencies": { + "lie": "3.1.1" } }, "node_modules/locate-path": { @@ -7236,17 +5251,20 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "peer": true, "dependencies": { "yallist": "^3.0.2" } }, "node_modules/magic-string": { - "version": "0.30.14", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz", - "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==", - "license": "MIT", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" } }, "node_modules/markdown-table": { @@ -7475,7 +5493,8 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "node_modules/merge2": { "version": "1.4.1", @@ -8032,29 +6051,6 @@ "node": ">=8.6" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "peer": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/mimic-fn": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", @@ -8086,21 +6082,17 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "license": "ISC", - "engines": { - "node": ">=8" + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/module-details-from-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", - "license": "MIT" - }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -8144,13 +6136,6 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "license": "MIT", - "peer": true - }, "node_modules/next": { "version": "13.2.4", "resolved": "https://registry.npmjs.org/next/-/next-13.2.4.tgz", @@ -8288,10 +6273,10 @@ } }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "license": "MIT" + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "peer": true }, "node_modules/normalize-path": { "version": "3.0.0", @@ -8637,37 +6622,6 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -8676,42 +6630,10 @@ "node": ">=8" } }, - "node_modules/pg-int8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", - "license": "ISC", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pg-protocol": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", - "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==", - "license": "MIT" - }, - "node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "license": "MIT", - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -8764,45 +6686,6 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, - "node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "license": "MIT", - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/preact": { "version": "10.19.2", "resolved": "https://registry.npmjs.org/preact/-/preact-10.19.2.tgz", @@ -8873,7 +6756,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -8913,8 +6795,7 @@ "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "node_modules/punycode": { "version": "2.3.1", @@ -8943,16 +6824,6 @@ } ] }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -9288,43 +7159,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/require-in-the-middle": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz", - "integrity": "sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.5", - "module-details-from-path": "^1.0.3", - "resolve": "^1.22.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/require-in-the-middle/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/require-in-the-middle/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, "node_modules/reselect": { "version": "4.1.8", "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", @@ -9451,16 +7285,14 @@ } }, "node_modules/rollup": { - "version": "3.29.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz", - "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==", - "license": "MIT", + "version": "2.78.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.0.tgz", + "integrity": "sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==", "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" + "node": ">=10.0.0" }, "optionalDependencies": { "fsevents": "~2.3.2" @@ -9516,27 +7348,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true - }, "node_modules/safe-regex-test": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", @@ -9582,25 +7393,6 @@ "loose-envify": "^1.1.0" } }, - "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -9609,16 +7401,6 @@ "semver": "bin/semver.js" } }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, "node_modules/set-function-length": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", @@ -9675,12 +7457,6 @@ "node": ">=8" } }, - "node_modules/shimmer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", - "license": "BSD-2-Clause" - }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -9765,27 +7541,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "license": "MIT", - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/space-separated-tokens": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", @@ -9799,7 +7554,6 @@ "version": "0.1.10", "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", - "license": "MIT", "dependencies": { "type-fest": "^0.7.1" }, @@ -9811,7 +7565,6 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } @@ -10071,67 +7824,6 @@ "node": ">=6" } }, - "node_modules/terser": { - "version": "5.36.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", - "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "license": "MIT", - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT", - "peer": true - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -10493,22 +8185,10 @@ "node": ">= 0.6" } }, - "node_modules/unplugin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.0.1.tgz", - "integrity": "sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==", - "license": "MIT", - "dependencies": { - "acorn": "^8.8.1", - "chokidar": "^3.5.3", - "webpack-sources": "^3.2.3", - "webpack-virtual-modules": "^0.5.0" - } - }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "funding": [ { "type": "opencollective", @@ -10523,10 +8203,10 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", + "peer": true, "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "escalade": "^3.1.1", + "picocolors": "^1.0.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -10620,72 +8300,11 @@ "node": ">=0.10.0" } }, - "node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "license": "MIT", - "peer": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, - "node_modules/webpack": { - "version": "5.96.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", - "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.14.0", - "browserslist": "^4.24.0", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, "node_modules/webpack-bundle-analyzer": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.7.0.tgz", @@ -10784,17 +8403,10 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "license": "MIT", "engines": { "node": ">=10.13.0" } }, - "node_modules/webpack-virtual-modules": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz", - "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==", - "license": "MIT" - }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -10982,7 +8594,8 @@ "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "peer": true }, "node_modules/yaml": { "version": "1.10.2", @@ -37,7 +37,7 @@ "@mui/x-date-pickers": "^6.6.0", "@next/bundle-analyzer": "^13.4.3", "@reduxjs/toolkit": "^1.9.5", - "@sentry/nextjs": "^8.42.0", + "@sentry/nextjs": "^7.59.2", "@types/cookie": "^0.5.1", "@types/intro.js": "^5.1.1", "@types/lodash": "^4.14.195", @@ -47,7 +47,6 @@ "@types/react-syntax-highlighter": "^15.5.7", "axios": "^0.24.0", "base64-encode-file": "^1.0.7", - "buffer": "^6.0.3", "chart.js": "^4.4.0", "cookie": "^0.5.0", "cross-env": "^7.0.3", @@ -1,10 +0,0 @@ -import * as Sentry from '@sentry/nextjs' -const SENTRY_DSN = process.env.NEXT_PUBLIC_SENTRY_DSN -if (SENTRY_DSN) Sentry.init({ - dsn: SENTRY_DSN, - integrations: [ - Sentry.browserTracingIntegration(), - Sentry.browserProfilingIntegration(), - Sentry.replayIntegration() - ] -}) @@ -0,0 +1,11 @@ +import * as Sentry from '@sentry/nextjs' + +Sentry.init({ + dsn: 'https://977e4e013d7844c49c1c642cca0dff8f@o4505483299979264.ingest.sentry.io/4505550927691776', + integrations: [new Sentry.BrowserTracing(), new Sentry.Replay()], + // Performance Monitoring + tracesSampleRate: 1.0, // Capture 100% of the transactions, reduce in production! + // Session Replay + replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production. + replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur. +}) @@ -1,10 +0,0 @@ -import * as Sentry from '@sentry/nextjs' -const SENTRY_DSN = process.env.SENTRY_DSN -if (SENTRY_DSN) Sentry.init({ - dsn: SENTRY_DSN, - integrations: [ - Sentry.onUncaughtExceptionIntegration(), - Sentry.onUnhandledRejectionIntegration() - ], - includeLocalVariables: true -})