diff --git a/package-lock.json b/package-lock.json index f294ea3..2647f91 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,6 +39,7 @@ "d3-geo-projection": "^4.0.0", "date-fns": "^2.29.3", "file-saver": "^2.0.5", + "formidable": "^3.5.2", "formik": "^2.2.9", "framer-motion": "^7.5.3", "gray-matter": "^4.0.3", @@ -84,6 +85,7 @@ "devDependencies": { "@babel/core": "^7.25.9", "@types/chance": "^1.1.3", + "@types/formidable": "^3.4.5", "@types/lodash": "^4.14.186", "@types/node": "^18.7.23", "@types/react": "^18.2.56", @@ -2473,6 +2475,15 @@ "integrity": "sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A==", "license": "MIT" }, + "node_modules/@types/formidable": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-3.4.5.tgz", + "integrity": "sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/geojson": { "version": "7946.0.14", "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", @@ -3195,6 +3206,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, "node_modules/ast-types-flow": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", @@ -4221,6 +4237,15 @@ "node": ">=0.10" } }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -5169,6 +5194,19 @@ "node": ">= 6" } }, + "node_modules/formidable": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.2.tgz", + "integrity": "sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg==", + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^2.0.0", + "once": "^1.4.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, "node_modules/formik": { "version": "2.4.6", "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.6.tgz", @@ -5591,6 +5629,14 @@ "node": ">= 0.4" } }, + "node_modules/hexoid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-2.0.0.tgz", + "integrity": "sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw==", + "engines": { + "node": ">=8" + } + }, "node_modules/hey-listen": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", @@ -6960,7 +7006,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -9064,7 +9109,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, "license": "ISC" }, "node_modules/yallist": { diff --git a/package.json b/package.json index 7e2dcab..2f6f4eb 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "d3-geo-projection": "^4.0.0", "date-fns": "^2.29.3", "file-saver": "^2.0.5", + "formidable": "^3.5.2", "formik": "^2.2.9", "framer-motion": "^7.5.3", "gray-matter": "^4.0.3", @@ -84,6 +85,7 @@ "devDependencies": { "@babel/core": "^7.25.9", "@types/chance": "^1.1.3", + "@types/formidable": "^3.4.5", "@types/lodash": "^4.14.186", "@types/node": "^18.7.23", "@types/react": "^18.2.56", diff --git a/src/contexts/AppContext.tsx b/src/contexts/AppContext.tsx index 4a0c6ef..d11db26 100644 --- a/src/contexts/AppContext.tsx +++ b/src/contexts/AppContext.tsx @@ -5,7 +5,7 @@ import { NextApiResponse } from 'next'; import qs from 'qs'; // types -import { DashboardContextProps, DashboardState, DashboardStatePatch, WorksetList } from 'types/torchlite'; +import { DashboardContextProps, DashboardState, DashboardStatePatch, DataCleaningSettings, WorksetList } from 'types/torchlite'; import { useSession } from 'next-auth/react'; import { getAvailableDashboards, getAvailableWorksets, getDashboardState, updateDashboardState } from 'services'; import CustomBackdrop from 'components/Backdrop'; @@ -54,8 +54,10 @@ function AppProvider({ children }: AppProviderProps) { // Get workset and filter from router query const { worksetId } = router.query; const filters: any = qs.parse(router.query.filters as string, { comma: true }); + const dataClean = qs.parse(router.query.datacleaning as string, { comma: true }); let selectedWorksetId: string, - appliedFilters: any = {}; + appliedFilters: any = {}, + dataCleaning: DataCleaningSettings; // Get worksets let worksets: WorksetList = await getAvailableWorksets(); @@ -134,26 +136,33 @@ function AppProvider({ children }: AppProviderProps) { } } } + + dataCleaning = dataClean + try { await updateDashboardState(dashboardState.id, { importedId: selectedWorksetId, - filters: appliedFilters + filters: appliedFilters, + datacleaning: dataCleaning }); } catch (err) { console.error(`Error loading workset from URL: ${err}`); setErrorAlert(true); setErrorText('This dashboard’s workset is private. Contact the workset’s owner to make the workset is public to see their dashboard.'); } + dashboardState = await getDashboardState(dashboardState.id); } else { selectedWorksetId = dashboardState.importedId; appliedFilters = dashboardState.filters; + dataCleaning = dashboardState.datacleaning; router.push({ pathname: router.pathname, query: { ...router.query, worksetId: selectedWorksetId, - filters: qs.stringify(appliedFilters, { arrayFormat: 'comma', encode: false }) + filters: qs.stringify(appliedFilters, { arrayFormat: 'comma', encode: false }), + datacleaning: qs.stringify(dataCleaning, { arrayFormat: 'comma', encode: false }) } }); } @@ -182,12 +191,14 @@ function AppProvider({ children }: AppProviderProps) { if (dashboardState) { const selectedWorksetId = dashboardState.worksetId; const appliedFilters = dashboardState.filters; + const dataCleaning = dashboardState.datacleaning; router.push({ pathname: router.pathname, query: { ...router.query, worksetId: selectedWorksetId, - filters: qs.stringify(appliedFilters, { arrayFormat: 'comma', encode: false }) + filters: qs.stringify(appliedFilters, { arrayFormat: 'comma', encode: false }), + datacleaning: qs.stringify(dataCleaning, { arrayFormat: 'comma', encode: false }) } }); } diff --git a/src/layout/MainLayout/SideBar/CleanDataWidget.tsx b/src/layout/MainLayout/SideBar/CleanDataWidget.tsx index 25ec988..654d4d9 100644 --- a/src/layout/MainLayout/SideBar/CleanDataWidget.tsx +++ b/src/layout/MainLayout/SideBar/CleanDataWidget.tsx @@ -7,6 +7,11 @@ import CustomButton from 'components/Button'; import { colourStyles } from 'styles/react-select'; import { BootstrapTooltip } from 'components/BootstrapTooltip'; import CustomStopwordsModal from 'sections/sidebar/CustomStopwordsModal'; +import useDashboardState from 'hooks/useDashboardState'; +import { getStopwordsData } from '../../../../src/services/index'; +import { uploadStopwordsData } from '../../../../src/services/index'; +import { useRouter } from 'next/router'; +import qs from 'qs'; interface IMockState { label: string; @@ -17,10 +22,38 @@ interface IMockState { //stopwords dropdown const defaultStopwordsOptions = [ - { value: 'English', label: 'English' }, - { value: 'French', label: 'French' }, - { value: 'German', label: 'German' }, - { value: 'Spanish', label: 'Spanish' }, + { value: 'English', label: 'English' }, + { value: 'French', label: 'French' }, + { value: 'German', label: 'German' }, + { value: 'Spanish', label: 'Spanish' }, + { value: 'Albanian', label: 'Albanian' }, + { value: 'Arabic', label: 'Arabic' }, + { value: 'Azerbaijani', label: 'Azerbaijani' }, + { value: 'Basque', label: 'Basque' }, + { value: 'Belarusian', label: 'Belarusian' }, + { value: 'Bengali', label: 'Bengali' }, + { value: 'Catalan', label: 'Catalan' }, + { value: 'Chinese', label: 'Chinese' }, + { value: 'Danish', label: 'Danish' }, + { value: 'Dutch', label: 'Dutch' }, + { value: 'Finnish', label: 'Finnish' }, + { value: 'Greek', label: 'Greek' }, + { value: 'Hebrew', label: 'Hebrew' }, + { value: 'Hinglish', label: 'Hinglish' }, + { value: 'Hungarian', label: 'Hungarian' }, + { value: 'Indonesian', label: 'Indonesian' }, + { value: 'Italian', label: 'Italian' }, + { value: 'Kazakh', label: 'Kazakh' }, + { value: 'Nepali', label: 'Nepali' }, + { value: 'Norwegian', label: 'Norwegian' }, + { value: 'Portuguese', label: 'Portuguese' }, + { value: 'Romanian', label: 'Romanian' }, + { value: 'Russian', label: 'Russian' }, + { value: 'Slovene', label: 'Slovene' }, + { value: 'Swedish', label: 'Swedish' }, + { value: 'Tajik', label: 'Tajik' }, + { value: 'Tamil', label: 'Tamil' }, + { value: 'Turkish', label: 'Turkish' }, // Add other options as needed ]; @@ -61,9 +94,11 @@ const animatedComponents = makeAnimated(); const CleanDataWidget = () => { const theme = useTheme(); + const router = useRouter(); const [typeGroup, setTypeGroup] = useState(dataTypes); const fileInputRef = useRef(null); const [fileName, setFileName] = useState(null); + const { dashboardState, onChangeDashboardState } = useDashboardState(); //const [selectedValue, setSelectedValue] = useState('default'); const [stopwordsOptions, setStopwordsOptions] = useState(defaultStopwordsOptions) const [selectedOption, setSelectedOption] = useState(''); @@ -71,6 +106,9 @@ const CleanDataWidget = () => { const [stopwordsName, setStopwordsName] = useState(''); const [applyStopwordsChecked, setApplyStopwordsChecked] = useState(false); const [selectedFilters, setSelectedFilters] = useState([]); + + // Temp variable to store fetched data + let downloadData: any = null; //old handler for the upload stopwords button @@ -90,6 +128,30 @@ const CleanDataWidget = () => { setModalOpen(false); }; + const handleApplyButton = (dataCleaning: any) => { + console.log("onApplyDataCleaning", dataCleaning) + onChangeDashboardState({ + datacleaning: {language: dataCleaning as string} + }); + console.log(onChangeDashboardState) + // Reset checkboxes and radios to their original state + /* setTypeGroup((prevTypeGroup) => + prevTypeGroup.map((item) => ({ + ...item, + checked: false, + value: item.label === 'Apply Stopwords' ? null : (item.label === 'Page Features' ? [ + { subLabel: 'Remove headers', checked: false }, + { subLabel: 'Remove footers', checked: false }, + { subLabel: 'Remove body', checked: false } + ] : item.label === 'Filter by parts-of-speech' ? [] + : item.value )// Reset specific values if needed + })) + ); + // Reset other state variables if needed + setSelectedOption(''); + setSelectedFilters([]); */ + } + const handleClearButton = () => { // Reset checkboxes and radios to their original state setTypeGroup((prevTypeGroup) => @@ -107,11 +169,21 @@ const CleanDataWidget = () => { // Reset other state variables if needed setSelectedOption(''); setSelectedFilters([]); + onChangeDashboardState({ + datacleaning: {language: selectedOption} + }); } - + //stopwords selection change const handleSelectChange = (event: React.ChangeEvent<{ value: unknown }>) => { setSelectedOption(event.target.value as string); + const queryString = {language: event.target.value as string}; + + console.log("languageoption", queryString) + router.push({ + pathname: router.pathname, + query: { ...router.query, datacleaning: queryString} + }); }; //stopwords -- saving user selection @@ -133,22 +205,33 @@ const handleSaveName = (name: string) => { console.log("Selected Option State:", selectedOption); }, [selectedOption]); - const handleDownload = () => { - const fname = 'example.txt'; - const fileContent = 'This is an example file content.'; - - const element = document.createElement('a'); - const file = new Blob([fileContent], { type: 'text/plain' }); - element.href = URL.createObjectURL(file); - element.download = fname; - document.body.appendChild(element); - element.click(); - document.body.removeChild(element); + const handleDownload = async () => { + const fname = 'stopwords.json'; + try { + const language = selectedOption; + const dashboardId = dashboardState?.id; + console.log("Test Download", dashboardId, language); + downloadData = await getStopwordsData(dashboardId, language); + + if (downloadData) { + const blob = new Blob([JSON.stringify(downloadData, null, 2)], { type: 'application/json' }); + saveAs(blob, fname); + downloadData = null; // Clear data after download + } + } + catch (error) { + console.log('Error downloading:', error); + } }; + //@router.get("/{dashboard_id}/stopwords", description=““) const handleFileChange = (event: any) => { const selectedFile = event.target.files[0]; setFileName(selectedFile.name); + + if (!selectedFile) { + return; + } }; const handleRadioChange = (event: any) => { @@ -408,6 +491,7 @@ const isButtonEnabled = ( textAlign: 'center', textTransform: 'none' }} + onClick={() => handleApplyButton(selectedOption)} disabled={!isButtonEnabled} > Apply cleaning diff --git a/src/layout/MainLayout/SideBar/index.tsx b/src/layout/MainLayout/SideBar/index.tsx index 50fe871..45814d8 100644 --- a/src/layout/MainLayout/SideBar/index.tsx +++ b/src/layout/MainLayout/SideBar/index.tsx @@ -12,7 +12,6 @@ const SideBar = () => { const { dashboardState } = useDashboardState(); const [isWorksetExpanded, setWorksetExpanded] = useState(!!dashboardState?.worksetId); const [isFilterExpanded, setFilterExpanded] = useState(hasFilters(dashboardState?.filters)); - useEffect(() => { setFilterExpanded(hasFilters(dashboardState?.filters)); // eslint-disable-next-line react-hooks/exhaustive-deps diff --git a/src/pages/api/dashboards/[id]/stopwords/[language].tsx b/src/pages/api/dashboards/[id]/stopwords/[language].tsx new file mode 100644 index 0000000..34b8507 --- /dev/null +++ b/src/pages/api/dashboards/[id]/stopwords/[language].tsx @@ -0,0 +1,37 @@ +import { NextApiRequest, NextApiResponse } from 'next'; +import { getServerSession } from 'next-auth/next'; +import { authOptions } from '@/auth/[...nextauth]'; +import axios from 'utils/axios'; +import { AuthInfo } from 'types/auth'; +import { getSessionAuthInfo } from 'utils/database'; + +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + if (req.method !== 'GET') { + res.setHeader('Allow', ['GET']); + return res.status(405).end(`Method ${req.method} Not Allowed`); + } + + try { + let headers: any = {}; + + const session = await getServerSession(req, res, authOptions); + if (session) { + const authInfo: AuthInfo = await getSessionAuthInfo(session.sessionId); + headers = { + Authorization: `Bearer ${authInfo.accessToken}` + }; + } + + const dashboardId = req.query.id as string; + const language = req.query.language as string; + const response = await axios.get(`/dashboards/${dashboardId}/stopwords/${language}`, + { headers: headers } + ); + console.log(response) + return res.status(200).json({stopwords: response}); + + } catch (error) { + console.error('Error fetching data from backend:', error); + return res.status(500).json({ message: 'Internal server error' }); + } +} \ No newline at end of file diff --git a/src/pages/api/dashboards/[id]/stopwords/index.ts b/src/pages/api/dashboards/[id]/stopwords/index.ts new file mode 100644 index 0000000..8bca95d --- /dev/null +++ b/src/pages/api/dashboards/[id]/stopwords/index.ts @@ -0,0 +1,96 @@ +import { NextApiRequest, NextApiResponse } from 'next'; +import { getServerSession } from 'next-auth/next'; +import { authOptions } from '@/auth/[...nextauth]'; +import axios from 'utils/axios'; +import { AuthInfo } from 'types/auth'; +import { getSessionAuthInfo } from 'utils/database'; +import { Formidable } from 'formidable'; +import { promises as fs } from 'fs'; + + +export const config = { + api: { + bodyParser: false, // Disable body parser to handle FormData + }, +}; + +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + console.log("i am coming"); + if (req.method !== 'POST') { + res.setHeader('Allow', ['POST']); + return res.status(405).end(`Method ${req.method} Not Allowed`); + } + + try { + let headers: any = {}; + + const session = await getServerSession(req, res, authOptions); + if (session) { + const authInfo: AuthInfo = await getSessionAuthInfo(session.sessionId); + headers = { + Authorization: `Bearer ${authInfo.accessToken}` + }; + } + + const parseForm = async (req: NextApiRequest): Promise<{ fields: any; files: any }> => { + const form = new Formidable({ + multiples: false, + keepExtensions: true, + }); + + return new Promise((resolve, reject) => { + form.parse(req, (err, fields, files) => { + if (err) reject(err); + else resolve({ fields, files }); + }); + }); + }; + + const { fields, files } = await parseForm(req); + + console.log("Parsed Fields:", fields); + console.log("Parsed Files:", files); + + const file = files.selectedFile as File | File[] | undefined; + if (!file) { + return res.status(400).json({ error: "No file uploaded" }); + } + + // Handle single file + const uploadedFile = Array.isArray(file) ? file[0] : file; + + const originalFilename = (uploadedFile as any).originalFilename; + console.log("Uploaded File Details:", originalFilename); + + const filePath = (uploadedFile as any).filepath || (uploadedFile as any).path; + const fileContent = await fs.readFile(filePath, "utf-8"); + + console.log("File Content:", fileContent); + + const dashboardId = req.query.id as string; + + const formData = new FormData(); + formData.append("file", new Blob([fileContent]), originalFilename); + + console.log("formData", formData); + for (let [key, value] of formData.entries()) { + console.log(key, value); + } + //Fill in the code + const response = await axios.post(`/dashboards/${dashboardId}/stopwords`, + formData, + { headers: + { + "Content-Type": "multipart/form-data", + }, + } + ); + console.log(response) + return res.status(200); + + } catch (error) { + console.error('Error fetching data from backend:', error); + return res.status(500); + } +} + diff --git a/src/pages/api/dashboards/index.ts b/src/pages/api/dashboards/index.ts index 6ad5939..d6ac965 100644 --- a/src/pages/api/dashboards/index.ts +++ b/src/pages/api/dashboards/index.ts @@ -11,15 +11,19 @@ import { pickRandom } from 'utils/helpers'; const torchliteUid: string = '95164779-1fc9-4592-9c74-7a014407f46d'; async function cloneDashboard(dashboardId: string, headers: any, headersGet: any = headers): Promise { - const { worksetId, filters, widgets, importedId } = await axios.get(`/dashboards/${dashboardId}`, { + console.log("dashboardId",dashboardId); + console.log("headers",headers); + const { worksetId, filters, datacleaning, widgets, importedId } = await axios.get(`/dashboards/${dashboardId}`, { headers: headersGet }); + console.log("data cleaning",datacleaning); return await axios.post( `/dashboards/`, { worksetId: worksetId, filters: filters, + datacleaning: datacleaning, widgets: widgets, importedId: importedId }, diff --git a/src/sections/sidebar/CustomStopwordsModal.tsx b/src/sections/sidebar/CustomStopwordsModal.tsx index accf466..14ac742 100644 --- a/src/sections/sidebar/CustomStopwordsModal.tsx +++ b/src/sections/sidebar/CustomStopwordsModal.tsx @@ -1,6 +1,8 @@ import React, { useState, useEffect, ChangeEvent } from 'react'; import { Modal, Box, Typography, Grid, Button, useTheme, TextField, Divider } from '@mui/material'; +import useDashboardState from 'hooks/useDashboardState'; +import { uploadStopwordsData } from '../../../src/services/index'; const style = { position: 'absolute' as 'absolute', top: '50%', @@ -22,6 +24,7 @@ function CustomStopwordsModal ({open, onClose, onSaveName}: { open: boolean, onC const [filePath, setFilePath] = useState(""); const [url, setUrl] = useState(''); const [urlError, setUrlError] = useState(''); + const { dashboardState, onChangeDashboardState } = useDashboardState(); const handleNameChange = (event: React.ChangeEvent) => { setStopwordsName(event.target.value); @@ -45,7 +48,19 @@ function CustomStopwordsModal ({open, onClose, onSaveName}: { open: boolean, onC const handleFileChange = (event: ChangeEvent) => { const file = event.target.files && event.target.files[0]; if (file) { - setFilePath(file.name); + setFilePath(file.name); + + const formData = new FormData(); + formData.append("selectedFile", file); + try { + const dashboardId = dashboardState?.id; + for (let [key, value] of formData.entries()) { + console.log(key, value); + } + const response = uploadStopwordsData(dashboardId, formData); + } catch (error) { + console.log("Error uploading file: "); + } // Do something with the file, like saving it or processing it } diff --git a/src/services/index.ts b/src/services/index.ts index 576b101..f22ccd7 100644 --- a/src/services/index.ts +++ b/src/services/index.ts @@ -38,6 +38,14 @@ export async function getWorksetData(dashboardId: any, dataType: string, filtere }); } +export async function getStopwordsData(dashboardId: string, language: string) { + return defaultAxios.get(`/api/dashboards/${dashboardId}/stopwords/${language}`).then((response) => response.data); +} + +export async function uploadStopwordsData(dashboardId: string, formdata: FormData) { + return defaultAxios.post(`/api/dashboards/${dashboardId}/stopwords`, formdata).then((response) => response.data); +} + export async function getIdplist() { return defaultAxios .get('https://analytics.hathitrust.org/idplist') diff --git a/src/types/dashboard.ts b/src/types/dashboard.ts index 266ce78..e74f306 100644 --- a/src/types/dashboard.ts +++ b/src/types/dashboard.ts @@ -18,6 +18,7 @@ export type IDashboardProps = { error: object | string | null; loading: boolean; loadingMap: boolean; + dataCleaning: string | null; }; export interface IWorkset { diff --git a/src/types/torchlite.ts b/src/types/torchlite.ts index b302af2..723e2a5 100644 --- a/src/types/torchlite.ts +++ b/src/types/torchlite.ts @@ -1,5 +1,6 @@ import { z } from 'zod'; import { toZod } from 'tozod'; +import languageData from 'data/languageData'; type VolumeMetadata = { htid: string; // the HathiTrust volume identifier @@ -53,6 +54,10 @@ export type Widget = { type: string; // the widget type (PubDateTimeline, ContributorMap, ...) }; +export type DataCleaningSettings = { + language?: string; +}; + export type DashboardSummary = { id: string; // the unique dashboard identifier owner?: string; // the dashboard owner (or undefined if anonymous) @@ -60,6 +65,7 @@ export type DashboardSummary = { // description?: string; // (optional) the dashboard description worksetId: string; // the selected workset id in ef api filters: FilterSettings; // the filter selections for the dashboard + datacleaning: DataCleaningSettings; widgets: Widget[]; // the widgets selected for the dashboard isShared: boolean; // whether the dashboard has been shared or not importedId: string; // the selected workset id in registry api @@ -73,6 +79,7 @@ export type DashboardStatePatch = { // worksetId?: string; importedId?: string filters?: FilterSettings; + datacleaning?: DataCleaningSettings; widgets?: Widget[]; isShared?: boolean; }; @@ -101,6 +108,11 @@ export const DashboardStatePatchSchema: toZod = z.object({ }) .array() .optional(), + datacleaning: z + .object({ + language: z.string().optional() + }) + .optional(), isShared: z.boolean().optional() }); diff --git a/yarn.lock b/yarn.lock index e948301..3b19c72 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40,17 +40,9 @@ classnames "^2.2.6" rc-util "^5.31.1" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.25.9": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.9.tgz" - integrity sha512-z88xeGxnzehn2sqZ8UdGQEvYErF1odv2CftxInpSYJt6uHuPe9YjahKZITGs3l5LeI9d2ROG+obuDAoSlqbNfQ== - dependencies: - "@babel/highlight" "^7.25.9" - picocolors "^1.0.0" - -"@babel/code-frame@^7.27.1": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.27.1": version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz" integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== dependencies: "@babel/helper-validator-identifier" "^7.27.1" @@ -62,7 +54,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.9.tgz" integrity sha512-yD+hEuJ/+wAJ4Ox2/rpNv5HIuPG82x3ZlQvYVn8iYCprdxzE7P1udpGF1jyjQVBU4dgznN+k2h103vxZ7NdPyw== -"@babel/core@^7.25.9": +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/core/-/core-7.25.9.tgz" integrity sha512-WYvQviPw+Qyib0v92AwNIrdLISTp7RfDkM7bPqBvpbnhY4wq8HvHBZREVdYDXk98C8BkOIVnHAY3yvj7AVISxQ== @@ -142,24 +134,14 @@ "@babel/traverse" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/helper-string-parser@^7.25.9": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz" - integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== - "@babel/helper-string-parser@^7.27.1": version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz" integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.25.9": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz" - integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== - -"@babel/helper-validator-identifier@^7.27.1": +"@babel/helper-validator-identifier@^7.25.9", "@babel/helper-validator-identifier@^7.27.1": version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz" integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== "@babel/helper-validator-option@^7.25.9": @@ -169,32 +151,15 @@ "@babel/helpers@^7.25.9": version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.1.tgz#ffc27013038607cdba3288e692c3611c06a18aa4" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz" integrity sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ== dependencies: "@babel/template" "^7.27.1" "@babel/types" "^7.27.1" -"@babel/highlight@^7.25.9": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz" - integrity sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw== - dependencies: - "@babel/helper-validator-identifier" "^7.25.9" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/parser@^7.25.9": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.25.9.tgz" - integrity sha512-aI3jjAAO1fh7vY/pBGsn1i9LDbRP43+asrRlkPuTXW5yHXtd1NgTEMudbBoDDxrf1daEEfPJqR+JBMakzrR4Dg== - dependencies: - "@babel/types" "^7.25.9" - -"@babel/parser@^7.27.2": +"@babel/parser@^7.25.9", "@babel/parser@^7.27.2": version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.2.tgz#577518bedb17a2ce4212afd052e01f7df0941127" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.27.2.tgz" integrity sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw== dependencies: "@babel/types" "^7.27.1" @@ -256,18 +221,9 @@ resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.1.tgz" integrity sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog== -"@babel/template@^7.25.9": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz" - integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== - dependencies: - "@babel/code-frame" "^7.25.9" - "@babel/parser" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/template@^7.27.1": +"@babel/template@^7.25.9", "@babel/template@^7.27.1": version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz" integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== dependencies: "@babel/code-frame" "^7.27.1" @@ -287,17 +243,9 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.25.9": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.25.9.tgz" - integrity sha512-OwS2CM5KocvQ/k7dFJa8i5bNGJP0hXWfVCfDkqRFP1IreH1JDC7wG6eCYCi0+McbfT8OR/kNqsI0UU0xP9H6PQ== - dependencies: - "@babel/helper-string-parser" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - -"@babel/types@^7.27.1": +"@babel/types@^7.25.9", "@babel/types@^7.27.1": version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.1.tgz#9defc53c16fc899e46941fc6901a9eea1c9d8560" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz" integrity sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q== dependencies: "@babel/helper-string-parser" "^7.27.1" @@ -395,17 +343,17 @@ dependencies: "@emotion/memoize" "^0.9.0" -"@emotion/memoize@0.7.4": - version "0.7.4" - resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" - integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== - "@emotion/memoize@^0.9.0": version "0.9.0" resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz" integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ== -"@emotion/react@^11.13.3", "@emotion/react@^11.8.1": +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + +"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.13.3", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@^11.8.1", "@emotion/react@^11.9.0": version "11.13.3" resolved "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz" integrity sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg== @@ -435,7 +383,7 @@ resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz" integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== -"@emotion/styled@^11.10.5": +"@emotion/styled@^11.10.5", "@emotion/styled@^11.3.0", "@emotion/styled@^11.8.1": version "11.13.0" resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz" integrity sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA== @@ -657,14 +605,6 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz" integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" @@ -673,6 +613,14 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@juggle/resize-observer@^3.3.1": version "3.4.0" resolved "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz" @@ -731,19 +679,6 @@ hey-listen "^1.0.8" tslib "^2.3.1" -"@mui/base@5.0.0-beta.40": - version "5.0.0-beta.40" - resolved "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz" - integrity sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ== - dependencies: - "@babel/runtime" "^7.23.9" - "@floating-ui/react-dom" "^2.0.8" - "@mui/types" "^7.2.14" - "@mui/utils" "^5.15.14" - "@popperjs/core" "^2.11.8" - clsx "^2.1.0" - prop-types "^15.8.1" - "@mui/base@^5.0.0-alpha.101": version "5.0.0-beta.60" resolved "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.60.tgz" @@ -757,6 +692,19 @@ clsx "^2.1.1" prop-types "^15.8.1" +"@mui/base@5.0.0-beta.40": + version "5.0.0-beta.40" + resolved "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz" + integrity sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ== + dependencies: + "@babel/runtime" "^7.23.9" + "@floating-ui/react-dom" "^2.0.8" + "@mui/types" "^7.2.14" + "@mui/utils" "^5.15.14" + "@popperjs/core" "^2.11.8" + clsx "^2.1.0" + prop-types "^15.8.1" + "@mui/core-downloads-tracker@^5.16.7": version "5.16.7" resolved "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.7.tgz" @@ -782,7 +730,7 @@ clsx "^2.1.0" prop-types "^15.8.1" -"@mui/material@^5.10.9": +"@mui/material@^5.0.0", "@mui/material@^5.10.9", "@mui/material@^5.4.1", "@mui/material@>=5.15.0": version "5.16.7" resolved "https://registry.npmjs.org/@mui/material/-/material-5.16.7.tgz" integrity sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg== @@ -819,7 +767,7 @@ csstype "^3.1.3" prop-types "^15.8.1" -"@mui/system@^5.10.9", "@mui/system@^5.16.5", "@mui/system@^5.16.7": +"@mui/system@^5.10.9", "@mui/system@^5.16.5", "@mui/system@^5.16.7", "@mui/system@^5.4.1": version "5.16.7" resolved "https://registry.npmjs.org/@mui/system/-/system-5.16.7.tgz" integrity sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA== @@ -833,7 +781,12 @@ csstype "^3.1.3" prop-types "^15.8.1" -"@mui/types@^7.2.14", "@mui/types@^7.2.15", "@mui/types@^7.2.18": +"@mui/types@^7.2.14", "@mui/types@^7.2.15": + version "7.2.18" + resolved "https://registry.npmjs.org/@mui/types/-/types-7.2.18.tgz" + integrity sha512-uvK9dWeyCJl/3ocVnTOS6nlji/Knj8/tVqVX03UVTpdmTJYu/s4jtDd9Kvv0nRGE0CUSNW1UYAci7PYypjealg== + +"@mui/types@^7.2.18": version "7.2.18" resolved "https://registry.npmjs.org/@mui/types/-/types-7.2.18.tgz" integrity sha512-uvK9dWeyCJl/3ocVnTOS6nlji/Knj8/tVqVX03UVTpdmTJYu/s4jtDd9Kvv0nRGE0CUSNW1UYAci7PYypjealg== @@ -880,7 +833,7 @@ react-transition-group "^4.4.5" rifm "^0.12.1" -"@mui/x-date-pickers@5.0.20", "@mui/x-date-pickers@^5.0.19": +"@mui/x-date-pickers@^5.0.19", "@mui/x-date-pickers@5.0.20": version "5.0.20" resolved "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-5.0.20.tgz" integrity sha512-ERukSeHIoNLbI1C2XRhF9wRhqfsr+Q4B1SAw2ZlU7CWgcG8UBOxgqRKDEOVAIoSWL+DWT6GRuQjOKvj6UXZceA== @@ -920,7 +873,7 @@ "@next/swc-darwin-arm64@14.2.29": version "14.2.29" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.29.tgz#615cf42d1533272fcea468489387a089f1ab01c4" + resolved "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.29.tgz" integrity sha512-wWtrAaxCVMejxPHFb1SK/PVV1WDIrXGs9ki0C/kUM8ubKHQm+3hU9MouUywCw8Wbhj3pewfHT2wjunLEr/TaLA== "@next/swc-darwin-x64@14.2.29": @@ -930,37 +883,37 @@ "@next/swc-linux-arm64-gnu@14.2.29": version "14.2.29" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.29.tgz#408f86e4ae787342f93513a562a226545e971953" + resolved "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.29.tgz" integrity sha512-o6hrz5xRBwi+G7JFTHc+RUsXo2lVXEfwh4/qsuWBMQq6aut+0w98WEnoNwAwt7hkEqegzvazf81dNiwo7KjITw== "@next/swc-linux-arm64-musl@14.2.29": version "14.2.29" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.29.tgz#94071e41c222b68cbbf82fa3a3a33f5b5ca19a94" + resolved "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.29.tgz" integrity sha512-9i+JEHBOVgqxQ92HHRFlSW1EQXqa/89IVjtHgOqsShCcB/ZBjTtkWGi+SGCJaYyWkr/lzu51NTMCfKuBf7ULNw== "@next/swc-linux-x64-gnu@14.2.29": version "14.2.29" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.29.tgz#757a87136f9dd40d7dd0b8624b20b275701c3dcc" + resolved "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.29.tgz" integrity sha512-B7JtMbkUwHijrGBOhgSQu2ncbCYq9E7PZ7MX58kxheiEOwdkM+jGx0cBb+rN5AeqF96JypEppK6i/bEL9T13lA== "@next/swc-linux-x64-musl@14.2.29": version "14.2.29" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.29.tgz#84a6429f212a08c629a3bfca19842a1053653217" + resolved "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.29.tgz" integrity sha512-yCcZo1OrO3aQ38B5zctqKU1Z3klOohIxug6qdiKO3Q3qNye/1n6XIs01YJ+Uf+TdpZQ0fNrOQI2HrTLF3Zprnw== "@next/swc-win32-arm64-msvc@14.2.29": version "14.2.29" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.29.tgz#e79ac6ef251d8e380f5bb406f39dcd144fc0408b" + resolved "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.29.tgz" integrity sha512-WnrfeOEtTVidI9Z6jDLy+gxrpDcEJtZva54LYC0bSKQqmyuHzl0ego+v0F/v2aXq0am67BRqo/ybmmt45Tzo4A== "@next/swc-win32-ia32-msvc@14.2.29": version "14.2.29" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.29.tgz#e8bfabeb2bf004f228063358c862a1159ff94b29" + resolved "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.29.tgz" integrity sha512-vkcriFROT4wsTdSeIzbxaZjTNTFKjSYmLd8q/GVH3Dn8JmYjUKOuKXHK8n+lovW/kdcpIvydO5GtN+It2CvKWA== "@next/swc-win32-x64-msvc@14.2.29": version "14.2.29" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.29.tgz#9097b85893a51ca9ba3b9d1733a4aab954edeab5" + resolved "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.29.tgz" integrity sha512-iPPwUEKnVs7pwR0EBLJlwxLD7TTHWS/AoVZx1l9ZQzfQciqaFEr5AlYzA2uB6Fyby1IF18t4PL0nTpB+k4Tzlw== "@next/third-parties@^15.1.6": @@ -978,7 +931,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -1348,12 +1301,19 @@ resolved "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.7.tgz" integrity sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A== +"@types/formidable@^3.4.5": + version "3.4.5" + resolved "https://registry.npmjs.org/@types/formidable/-/formidable-3.4.5.tgz" + integrity sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ== + dependencies: + "@types/node" "*" + "@types/geojson@*": version "7946.0.14" resolved "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz" integrity sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg== -"@types/hoist-non-react-statics@3", "@types/hoist-non-react-statics@^3.3.1": +"@types/hoist-non-react-statics@^3.3.1", "@types/hoist-non-react-statics@3": version "3.3.5" resolved "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz" integrity sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg== @@ -1420,11 +1380,6 @@ dependencies: "@types/react" "*" -"@types/react-dom@<18.0.0": - version "17.0.26" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.26.tgz#fa7891ba70fd39ddbaa7e85b6ff9175bb546bc1b" - integrity sha512-Z+2VcYXJwOqQ79HreLU/1fyQ88eXSSFh6I3JdrEHQIfYSI0kCQpTGvOrbE6jFGGYXKsHuwY9tBa/w5Uo6KzrEg== - "@types/react-dom@^18.2.19": version "18.3.1" resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz" @@ -1453,16 +1408,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@<18.0.0", "@types/react@^18.3.11": - version "17.0.85" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.85.tgz#1f1abf89083e731d82469a3a59ec57ea93cc476b" - integrity sha512-5oBDUsRDsrYq4DdyHaL99gE1AJCfuDhyxqF6/55fvvOIRkp1PpKuwJ+aMiGJR+GJt7YqMNclPROTHF20vY2cXA== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "^0.16" - csstype "^3.0.2" - -"@types/react@^18.2.56": +"@types/react@*", "@types/react@^17.0.0 || ^18.0.0", "@types/react@^17.0.0 || ^18.0.0 || ^19.0.0", "@types/react@^18.2.25", "@types/react@^18.2.56", "@types/react@^18.3.11": version "18.3.21" resolved "https://registry.npmjs.org/@types/react/-/react-18.3.21.tgz" integrity sha512-gXLBtmlcRJeT09/sI4PxVwyrku6SaNUj/6cMubjE6T6XdY1fDmBL7r0nX0jbSZPU/Xr0KuwLLZh6aOYY5d91Xw== @@ -1470,11 +1416,6 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/scheduler@^0.16": - version "0.16.8" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" - integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== - "@types/send@*": version "0.17.4" resolved "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz" @@ -1537,7 +1478,7 @@ natural-compare "^1.4.0" ts-api-utils "^1.3.0" -"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser@^8.11.0": +"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser@^8.0.0 || ^8.0.0-alpha.0", "@typescript-eslint/parser@^8.11.0": version "8.11.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.11.0.tgz" integrity sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg== @@ -1620,7 +1561,7 @@ acorn-walk@^8.1.1: dependencies: acorn "^8.11.0" -acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: version "8.13.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz" integrity sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w== @@ -1645,13 +1586,6 @@ ansi-regex@^6.0.1: resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz" integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" @@ -1775,6 +1709,11 @@ arraybuffer.prototype.slice@^1.0.3: is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" +asap@^2.0.0: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + ast-types-flow@^0.0.8: version "0.0.8" resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz" @@ -1799,7 +1738,7 @@ axe-core@^4.10.0: axios@^1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.8.2.tgz#fabe06e241dfe83071d4edfbcaa7b1c3a40f7979" + resolved "https://registry.npmjs.org/axios/-/axios-1.8.2.tgz" integrity sha512-ls4GYBm5aig9vWx8AWDSGLpnpDQRtWAfrjU+EuytuODrFBkqesN2RkOQCBzrA1RQNHw1SmRMSDDDSwzNAYQ6Rg== dependencies: follow-redirects "^1.15.6" @@ -1847,7 +1786,7 @@ braces@^3.0.3: dependencies: fill-range "^7.1.1" -browserslist@^4.24.0: +browserslist@^4.24.0, "browserslist@>= 4.21.0": version "4.24.2" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz" integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== @@ -1890,15 +1829,6 @@ caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001669: resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz" integrity sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w== -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - chalk@^4.0.0: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" @@ -1922,12 +1852,17 @@ classnames@^2.2.6: resolved "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz" integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== -client-only@0.0.1, client-only@^0.0.1: +client-only@^0.0.1, client-only@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz" integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== -clsx@^1.1.0, clsx@^1.2.1: +clsx@^1.1.0: + version "1.2.1" + resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + +clsx@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== @@ -1942,13 +1877,6 @@ cluster-key-slot@^1.1.0: resolved "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz" integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - color-convert@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" @@ -1956,11 +1884,6 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" @@ -2059,7 +1982,7 @@ csstype@^3.0.2, csstype@^3.1.3: resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -"d3-array@1 - 3", "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: +d3-array@^3.2.0, "d3-array@1 - 3", "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: version "3.2.4" resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz" integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== @@ -2115,16 +2038,16 @@ d3-delaunay@6: dependencies: delaunator "5" -"d3-dispatch@1 - 3", d3-dispatch@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz" - integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== - d3-dispatch@^1.0.3: version "1.0.6" resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz" integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== +"d3-dispatch@1 - 3", d3-dispatch@3: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz" + integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== + "d3-drag@2 - 3", d3-drag@3: version "3.0.0" resolved "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz" @@ -2177,7 +2100,7 @@ d3-geo-projection@^4.0.0: d3-array "1 - 3" d3-geo "1.12.0 - 3" -"d3-geo@1.12.0 - 3", d3-geo@3, d3-geo@^3.1.0: +d3-geo@^3.1.0, "d3-geo@1.12.0 - 3", d3-geo@3: version "3.1.1" resolved "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz" integrity sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q== @@ -2196,7 +2119,7 @@ d3-hierarchy@3: dependencies: d3-color "1 - 3" -"d3-path@1 - 3", d3-path@3, d3-path@^3.1.0: +d3-path@^3.1.0, "d3-path@1 - 3", d3-path@3: version "3.1.0" resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz" integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== @@ -2216,7 +2139,7 @@ d3-random@3: resolved "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz" integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== -d3-scale-chromatic@3, d3-scale-chromatic@^2.0.0, d3-scale-chromatic@^3.0.0: +d3-scale-chromatic@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz" integrity sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ== @@ -2224,7 +2147,7 @@ d3-scale-chromatic@3, d3-scale-chromatic@^2.0.0, d3-scale-chromatic@^3.0.0: d3-color "1 - 3" d3-interpolate "1 - 3" -d3-scale@4, d3-scale@^3.3.0, d3-scale@^4.0.2: +d3-scale@^4.0.2: version "4.0.2" resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz" integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== @@ -2235,16 +2158,16 @@ d3-scale@4, d3-scale@^3.3.0, d3-scale@^4.0.2: d3-time "2.1.1 - 3" d3-time-format "2 - 4" -"d3-selection@2 - 3", d3-selection@3: - version "3.0.0" - resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz" - integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== - d3-selection@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz" integrity sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA== +"d3-selection@2 - 3", d3-selection@3: + version "3.0.0" + resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz" + integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== + d3-shape@3: version "3.2.0" resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz" @@ -2361,7 +2284,7 @@ data-view-byte-offset@^1.0.0: es-errors "^1.3.0" is-data-view "^1.0.1" -date-fns@^2.29.3: +date-fns@^2.0.0, date-fns@^2.25.0, date-fns@^2.29.3: version "2.30.0" resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz" integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== @@ -2427,6 +2350,14 @@ denque@^2.1.0: resolved "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== +dezalgo@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz" + integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== + dependencies: + asap "^2.0.0" + wrappy "1" + diff@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" @@ -2610,11 +2541,6 @@ escalade@^3.1.1, escalade@^3.2.0: resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" @@ -2671,7 +2597,7 @@ eslint-module-utils@^2.12.0, eslint-module-utils@^2.8.1: dependencies: debug "^3.2.7" -eslint-plugin-import@^2.28.1: +eslint-plugin-import@*, eslint-plugin-import@^2.28.1: version "2.31.0" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz" integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== @@ -2767,7 +2693,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@8.57.1: +eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.23.0 || ^8.0.0", "eslint@^8.57.0 || ^9.0.0", eslint@>=7.0.0, eslint@>=7.28.0, eslint@8.57.1: version "8.57.1" resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz" integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== @@ -2969,6 +2895,15 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +formidable@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/formidable/-/formidable-3.5.2.tgz" + integrity sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg== + dependencies: + dezalgo "^1.0.4" + hexoid "^2.0.0" + once "^1.4.0" + formik@^2.2.9: version "2.4.6" resolved "https://registry.npmjs.org/formik/-/formik-2.4.6.tgz" @@ -3072,17 +3007,6 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob@10.3.10: - version "10.3.10" - resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - glob@^7.1.3: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" @@ -3095,6 +3019,17 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@10.3.10: + version "10.3.10" + resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + globals@^11.1.0: version "11.12.0" resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" @@ -3147,11 +3082,6 @@ has-bigints@^1.0.1, has-bigints@^1.0.2: resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - has-flag@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" @@ -3188,12 +3118,17 @@ hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: dependencies: function-bind "^1.1.2" +hexoid@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/hexoid/-/hexoid-2.0.0.tgz" + integrity sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw== + hey-listen@^1.0.8: version "1.0.8" resolved "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz" integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== -hoist-non-react-statics@3, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1: +hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@3: version "3.3.2" resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -3727,16 +3662,16 @@ match-sorter@^6.3.1: "@babel/runtime" "^7.23.8" remove-accents "0.5.0" -"memoize-one@>=3.1.1 <6": - version "5.2.1" - resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" - integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== - memoize-one@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz" integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== +"memoize-one@>=3.1.1 <6": + version "5.2.1" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" + integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== + merge2@^1.3.0: version "1.4.1" resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" @@ -3769,7 +3704,14 @@ minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^9.0.1, minimatch@^9.0.4: +minimatch@^9.0.1: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.4: version "9.0.5" resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== @@ -3788,16 +3730,16 @@ minipass@^3.0.0: dependencies: yallist "^4.0.0" -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - "minipass@^5.0.0 || ^6.0.2 || ^7.0.0": version "7.1.2" resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + minizlib@^2.1.1: version "2.1.2" resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" @@ -3854,7 +3796,7 @@ next-transpile-modules@^9.0.0: enhanced-resolve "^5.10.0" escalade "^3.1.1" -next@^14.2.29: +"next@^12.2.5 || ^13 || ^14 || ^15", "next@^13.0.0 || ^14.0.0 || ^15.0.0", next@^14.2.29: version "14.2.29" resolved "https://registry.npmjs.org/next/-/next-14.2.29.tgz" integrity sha512-s98mCOMOWLGGpGOfgKSnleXLuegvvH415qtRZXpSp00HeEgdmrxmwL9cgKU+h4XrhB16zEI5d/7BnkS3ATInsA== @@ -3967,7 +3909,7 @@ oidc-token-hash@^5.0.3: resolved "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz" integrity sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw== -once@^1.3.0: +once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== @@ -4091,7 +4033,7 @@ preact-render-to-string@^5.1.19: dependencies: pretty-format "^3.8.0" -preact@^10.6.3: +preact@^10.6.3, preact@>=10: version "10.24.3" resolved "https://registry.npmjs.org/preact/-/preact-10.24.3.tgz" integrity sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA== @@ -4108,7 +4050,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.7.1: +prettier@^2.7.1, prettier@>=2.0.0: version "2.8.8" resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== @@ -4192,7 +4134,7 @@ react-device-detect@^2.2.2: dependencies: ua-parser-js "^1.0.33" -react-dom@^18.3.1: +"react-dom@^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0 || ^17.0 || ^18.0.0", "react-dom@^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.0 || ^17.0.0-0 || ^18.0.0-0", "react-dom@^17.0.0 || ^18.0.0", "react-dom@^17.0.2 || ^18", "react-dom@^17.0.2 || ^18.0.0", react-dom@^18.0.0, react-dom@^18.2.0, react-dom@^18.3.1, "react-dom@>= 0.14.0", react-dom@>=16.0.0, react-dom@>=16.6.0, react-dom@>=16.8.0, react-dom@>=16.9.0, "react-dom@16.2.0 - 18": version "18.3.1" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -4236,7 +4178,12 @@ react-intl@^6.2.0: intl-messageformat "10.7.1" tslib "^2.7.0" -react-is@^16.13.1, react-is@^16.7.0: +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^16.7.0: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -4246,7 +4193,7 @@ react-is@^18.2.0, react-is@^18.3.1: resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -react-redux@^9.1.2: +"react-redux@^7.2.1 || ^8.1.3 || ^9.0.0", react-redux@^9.1.2: version "9.1.2" resolved "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz" integrity sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w== @@ -4297,18 +4244,18 @@ react-window@^1.8.10: "@babel/runtime" "^7.0.0" memoize-one ">=3.1.1 <6" -react18-input-otp@^1.1.0: - version "1.1.4" - resolved "https://registry.npmjs.org/react18-input-otp/-/react18-input-otp-1.1.4.tgz" - integrity sha512-35xvmTeuPWIxd0Z0Opx4z3OoMaTmKN4ubirQCx1YMZiNoe+2h1hsOSUco4aKPlGXWZCtXrfOFieAh46vqiK9mA== - -react@^18.3.1: +react@*, "react@^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0 || ^17.0 || ^18.0.0", "react@^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.6.0 || 17 || 18", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0-0 || ^18.0.0-0", "react@^16.8.3 || ^17.0.0-0 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18 || ^19", "react@^17.0.0 || ^18.0.0", "react@^17.0.0 || ^18.0.0 || ^19.0.0", "react@^17.0.2 || ^18", "react@^17.0.2 || ^18.0.0", react@^18.0, react@^18.0.0, react@^18.2.0, "react@^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", react@^18.3.1, "react@>= 0.14.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", react@>=16.0.0, react@>=16.6.0, react@>=16.8, react@>=16.8.0, react@>=16.9.0, "react@16.2.0 - 18": version "18.3.1" resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== dependencies: loose-envify "^1.1.0" +react18-input-otp@^1.1.0: + version "1.1.4" + resolved "https://registry.npmjs.org/react18-input-otp/-/react18-input-otp-1.1.4.tgz" + integrity sha512-35xvmTeuPWIxd0Z0Opx4z3OoMaTmKN4ubirQCx1YMZiNoe+2h1hsOSUco4aKPlGXWZCtXrfOFieAh46vqiK9mA== + redis-errors@^1.0.0, redis-errors@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz" @@ -4331,7 +4278,7 @@ redux-thunk@^3.1.0: resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz" integrity sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw== -redux@^5.0.1: +redux@^5.0.0, redux@^5.0.1, redux@>4.0.0: version "5.0.1" resolved "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz" integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w== @@ -4480,7 +4427,12 @@ semver@^6.3.1: resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.6.0, semver@^7.6.3: +semver@^7.6.0: + version "7.6.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +semver@^7.6.3: version "7.6.3" resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -4742,22 +4694,15 @@ stylis-plugin-rtl@^2.1.1: dependencies: cssjanus "^2.0.1" -stylis@4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz" - integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== - -stylis@^4.3.4: +stylis@^4.3.4, stylis@4.x: version "4.3.4" resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz" integrity sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now== -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" +stylis@4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz" + integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== supports-color@^7.1.0: version "7.2.0" @@ -4869,16 +4814,16 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - tslib@^2.0.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.7.0: version "2.8.0" resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz" integrity sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA== +tslib@2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" @@ -4935,7 +4880,7 @@ typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" -typescript@^4.8.3: +"typescript@^4.7 || 5", typescript@^4.8.3, typescript@>=2.7, typescript@>=3.3.1, typescript@>=4.2.0: version "4.9.5" resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== @@ -4960,6 +4905,11 @@ undici-types@~5.26.4: resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + update-browserslist-db@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz" @@ -5123,7 +5073,7 @@ yup@^0.32.11: property-expr "^2.0.4" toposort "^2.0.2" -zod@^3.22.3: +zod@^3.0.0-alpha.2, zod@^3.22.3: version "3.23.8" resolved "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz" integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==