diff --git a/app/(core)/components/ContributorsSection.jsx b/app/(core)/components/ContributorsSection.jsx
index 09b5d8d7..f1fa4c0c 100644
--- a/app/(core)/components/ContributorsSection.jsx
+++ b/app/(core)/components/ContributorsSection.jsx
@@ -50,7 +50,9 @@ export default function ContributorsSection() {
/>
-
{c.login}
+
+ {c.login}
+
{c.contributions} {c.contributions === 1 ? "commit" : "commits"}
diff --git a/app/(core)/components/GoogleTranslator.jsx b/app/(core)/components/GoogleTranslator.jsx
index 2e1c0539..13ac3680 100644
--- a/app/(core)/components/GoogleTranslator.jsx
+++ b/app/(core)/components/GoogleTranslator.jsx
@@ -13,10 +13,11 @@ import {
const LANGUAGES = {
en: "English",
- it: "Italian",
- fr: "French",
- de: "German",
- es: "Spanish",
+ it: "Italiano",
+ fr: "Français",
+ de: "Deutsch",
+ es: "Español",
+ ar: "العربية",
};
const ICON_FRAMES = [
@@ -33,9 +34,29 @@ const LANGUAGE_ICONS = {
fr: faGlobeEurope,
de: faGlobeEurope,
es: faGlobeAmericas,
+ ar: faGlobeAsia,
default: faGlobeEurope,
};
+// Helper to extract language from googtrans cookie
+const getGoogleTransLang = () => {
+ const getCookie = (name) => {
+ if (typeof document === "undefined") return null;
+ const value = `; ${document.cookie}`;
+ const parts = value.split(`; ${name}=`);
+ if (parts.length === 2) return parts.pop()?.split(";").shift();
+ return null;
+ };
+ const cookie = getCookie("googtrans");
+ if (cookie) {
+ const parts = cookie.split("/");
+ if (parts.length >= 3) {
+ return parts[2]; // e.g., /en/it -> it
+ }
+ }
+ return "en";
+};
+
export default function GoogleTranslator() {
const pathname = usePathname();
const [currentLanguage, setCurrentLanguage] = useState("en");
@@ -43,37 +64,66 @@ export default function GoogleTranslator() {
const translateElementRef = useRef(null);
const scriptLoaded = useRef(false);
- useEffect(() => {
- if (
- !scriptLoaded.current &&
- window.location.hostname !== "localhost" &&
- window.location.hostname !== "127.0.0.1"
- ) {
- const script = document.createElement("script");
- script.src =
- "https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit";
- script.async = true;
- document.body.appendChild(script);
- scriptLoaded.current = true;
+ // State and ref for widget readiness and initial sync
+ const [widgetReady, setWidgetReady] = useState(false);
+ const initializedRef = useRef(false);
+ // Load Google Translate script once
+ useEffect(() => {
+ if (!scriptLoaded.current) {
window.googleTranslateElementInit = () => {
new window.google.translate.TranslateElement(
{
pageLanguage: "en",
- includedLanguages: "en,it,fr,de,es",
+ includedLanguages: "en,it,fr,de,es,ar",
autoDisplay: false,
},
"google_translate_element"
);
};
+
+ const script = document.createElement("script");
+ script.src =
+ "https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit";
+ script.async = true;
+ document.body.appendChild(script);
+ scriptLoaded.current = true;
}
}, []);
+ // Detect when the Google Translate widget is ready (select element exists)
+ useEffect(() => {
+ let intervalId;
+ const checkWidget = () => {
+ const select = document.querySelector(".goog-te-combo");
+ if (select) {
+ setWidgetReady(true);
+ clearInterval(intervalId);
+ }
+ };
+ intervalId = setInterval(checkWidget, 200);
+ return () => clearInterval(intervalId);
+ }, []);
+
+ // Listen for retranslate requests from useTranslation
+ useEffect(() => {
+ const handler = (e) => {
+ const select = document.querySelector(".goog-te-combo");
+ if (!select) return;
+ select.value = e.detail.lang;
+ select.dispatchEvent(new Event("change"));
+ };
+
+ window.addEventListener("gtrans:retranslate", handler);
+ return () => window.removeEventListener("gtrans:retranslate", handler);
+ }, []);
+
const changeLanguage = useCallback(
(languageCode) => {
if (languageCode === currentLanguage) return;
setCurrentLanguage(languageCode);
+ // Animate icon
let frame = 0;
const interval = setInterval(() => {
setIcon(ICON_FRAMES[frame % ICON_FRAMES.length]);
@@ -84,17 +134,45 @@ export default function GoogleTranslator() {
}
}, 100);
+ // Trigger Google Translate
const selectElement = document.querySelector(".goog-te-combo");
if (selectElement) {
selectElement.value = languageCode;
selectElement.dispatchEvent(new Event("change"));
}
- document.cookie = `googtrans=/en/${languageCode}; path=/; domain=${window.location.hostname}`;
+
+ // Update cookie
+ const hostname = window.location.hostname;
+ const isLocal = hostname === "localhost" || hostname === "127.0.0.1";
+ const domainAttr = isLocal ? "" : `; domain=${hostname}`;
+ document.cookie = `googtrans=/en/${languageCode}; path=/ ${domainAttr}`;
+
+ // Notify useTranslation
+ window.dispatchEvent(
+ new CustomEvent("gtrans:languagechange", {
+ detail: { lang: languageCode },
+ })
+ );
},
[currentLanguage]
);
- // Reset translation when route changes
+ // Sync the selector with the stored language on first widget ready
+ useEffect(() => {
+ if (widgetReady && !initializedRef.current) {
+ initializedRef.current = true;
+ const initialLang = getGoogleTransLang();
+ if (initialLang !== "en") {
+ changeLanguage(initialLang);
+ } else {
+ // For English we just set the state directly (no need to trigger widget)
+ setCurrentLanguage(initialLang);
+ setIcon(LANGUAGE_ICONS[initialLang] || LANGUAGE_ICONS.default);
+ }
+ }
+ }, [widgetReady, changeLanguage]);
+
+ // Reset translation on route change (keep the same language)
useEffect(() => {
if (currentLanguage !== "en") {
const timeout = setTimeout(() => {
@@ -114,7 +192,12 @@ export default function GoogleTranslator() {
onChange={(e) => changeLanguage(e.target.value)}
>
{Object.entries(LANGUAGES).map(([code, name]) => (
-
))}
diff --git a/app/(core)/components/Hero.jsx b/app/(core)/components/Hero.jsx
index 129f5fb0..2283539a 100644
--- a/app/(core)/components/Hero.jsx
+++ b/app/(core)/components/Hero.jsx
@@ -5,6 +5,7 @@ import { faArrowRight } from "@fortawesome/free-solid-svg-icons";
import { faGithub } from "@fortawesome/free-brands-svg-icons";
import chaptersData from "../data/chapters.js";
import { motion, useReducedMotion } from "framer-motion";
+import useTranslation from "../hooks/useTranslation.ts";
// Container variant for staggered child animations
const containerVariants = (rm) => ({
@@ -86,6 +87,9 @@ const glowVariant = {
export function Hero() {
const reduceMotion = useReducedMotion();
+ const { t, meta } = useTranslation();
+
+ const isCompleted = meta?.completed || false;
// Compute chapters count
const chaptersCount = Array.isArray(chaptersData)
@@ -95,13 +99,13 @@ export function Hero() {
: 0;
// Split heading into words
- const titleWords = "PhysicsHub – Best website to learn physics easily.".split(
- " "
- );
+ const titleWords = t(
+ "PhysicsHub – Best website to learn physics easily."
+ ).split(" ");
return (
- Experience physics in real time, uncover the concepts behind the
- formulas, and instantly see how they apply to the real world.
+ {t(
+ "Experience physics in real time, uncover the concepts behind the formulas, and instantly see how they apply to the real world."
+ )}
{/* CTA buttons */}
- Go to Simulations
+ {t("Go to Simulations")}
- Contribute
+ {t("Contribute")}
@@ -150,7 +155,7 @@ export function Hero() {
{/* Info text */}
- Currently {chaptersCount} chapters available.
+ {t("Currently")} {chaptersCount} {t("chapters available.")}
);
diff --git a/app/(core)/hooks/useTranslation.ts b/app/(core)/hooks/useTranslation.ts
new file mode 100644
index 00000000..4c8a8cb3
--- /dev/null
+++ b/app/(core)/hooks/useTranslation.ts
@@ -0,0 +1,143 @@
+"use client";
+import { useState, useEffect, useCallback } from "react";
+
+// Default language if no preference is set
+const DEFAULT_LANG = "en";
+
+// Define the shape
+type Translations = Record;
+
+interface LanguageMeta {
+ name: string;
+ completed: boolean;
+}
+
+type MetaConfig = Record;
+
+interface UseTranslationResult {
+ t: (key: string) => string;
+ ready: boolean;
+ language: string;
+ meta: LanguageMeta | null;
+}
+
+const getCookie = (name: string) => {
+ if (typeof document === "undefined") return null;
+ const value = `; ${document.cookie}`;
+ const parts = value.split(`; ${name}=`);
+ if (parts.length === 2) return parts.pop()?.split(";").shift();
+ return null;
+};
+
+const getGoogleTransLang = () => {
+ const cookie = getCookie("googtrans");
+ if (cookie) {
+ const parts = cookie.split("/");
+ if (parts.length >= 3) {
+ return parts[2]; // e.g., /en/it -> it
+ }
+ }
+ return DEFAULT_LANG;
+};
+
+export const useTranslation = (lang?: string): UseTranslationResult => {
+ const [translations, setTranslations] = useState({});
+ const [metaConfig, setMetaConfig] = useState(null);
+ const [language, setLanguage] = useState(lang || DEFAULT_LANG);
+ const [ready, setReady] = useState(false);
+
+ // Sync language via custom event instead of polling, so the switch is
+ // always synchronous with what GoogleTranslator dispatches.
+ useEffect(() => {
+ if (lang) {
+ setLanguage(lang);
+ return;
+ }
+
+ // Initial sync on mount
+ setLanguage(getGoogleTransLang());
+
+ const handler = (e: Event) => {
+ setLanguage((e as CustomEvent<{ lang: string }>).detail.lang);
+ };
+
+ window.addEventListener("gtrans:languagechange", handler);
+ return () => window.removeEventListener("gtrans:languagechange", handler);
+ }, [lang]);
+
+ useEffect(() => {
+ const loadData = async () => {
+ setReady(false);
+ try {
+ // Load meta.json
+ const metaModule = await import("../locales/meta.json");
+ const meta = metaModule.default as MetaConfig;
+ setMetaConfig(meta);
+
+ const currentMeta = meta[language];
+ // so that Google Translate can translate it normally.
+ const langToLoad = currentMeta?.completed ? language : DEFAULT_LANG;
+
+ const transModule = await import(`../locales/${langToLoad}.json`);
+ // Spread into a new object so React always sees a new reference,
+ // even when two different languages resolve to the same cached module
+ // (e.g. en → es both load en.json).
+ setTranslations({ ...transModule.default });
+ setReady(true);
+ } catch (error) {
+ console.error(`Error loading translations for ${language}`, error);
+
+ // Fallback to English
+ try {
+ const fallbackModule = await import(
+ `../locales/${DEFAULT_LANG}.json`
+ );
+ setTranslations({ ...fallbackModule.default });
+ setReady(true);
+ } catch (e) {
+ console.error(
+ "Critical error: Could not even load fallback translations",
+ e
+ );
+ }
+ }
+ };
+
+ loadData();
+ }, [language]);
+
+ // After React commits fresh English strings to the DOM for fallback languages,
+ // re-trigger Google Translate so t()-wrapped text gets translated too.
+ useEffect(() => {
+ if (!ready || !metaConfig) return;
+
+ const currentMeta = metaConfig[language];
+ if (currentMeta?.completed) return; // hand-translated, Google Translate not needed
+
+ // Wait one frame to ensure React has committed the new DOM nodes
+ // before asking Google Translate to do its pass.
+ const id = setTimeout(() => {
+ window.dispatchEvent(
+ new CustomEvent("gtrans:retranslate", { detail: { lang: language } })
+ );
+ }, 50);
+
+ return () => clearTimeout(id);
+ }, [ready, language, metaConfig]);
+
+ const t = useCallback(
+ (key: string): string => {
+ return translations[key] || key;
+ },
+ [translations]
+ );
+
+ return {
+ t,
+ ready,
+ language,
+ meta: metaConfig ? metaConfig[language] : null,
+ };
+};
+
+export default useTranslation;
diff --git a/app/(core)/locales/ar.json b/app/(core)/locales/ar.json
new file mode 100644
index 00000000..ec6f78d9
--- /dev/null
+++ b/app/(core)/locales/ar.json
@@ -0,0 +1,9 @@
+{
+ "edit": "تعديل",
+ "PhysicsHub – Best website to learn physics easily.": "PhysicsHub – أفضل موقع لتعلم الفيزياء بسهولة.",
+ "Experience physics in real time, uncover the concepts behind the formulas, and instantly see how they apply to the real world.": "اختبر الفيزياء في الوقت الفعلي، واكتشف المفاهيم الكامنة وراء المعادلات، وشاهد فورًا كيف يتم تطبيقها في العالم الواقعي.",
+ "Go to Simulations": "انتقل إلى المحاكيات",
+ "Contribute": "ساهم",
+ "Currently": "حاليًا",
+ "chapters available.": "فصل متاح."
+}
diff --git a/app/(core)/locales/de.json b/app/(core)/locales/de.json
new file mode 100644
index 00000000..42d4072d
--- /dev/null
+++ b/app/(core)/locales/de.json
@@ -0,0 +1,9 @@
+{
+ "edit": "bearbeiten",
+ "PhysicsHub – Best website to learn physics easily.": "PhysicsHub – Die beste Website, um Physik einfach zu lernen.",
+ "Experience physics in real time, uncover the concepts behind the formulas, and instantly see how they apply to the real world.": "Erleben Sie Physik in Echtzeit, entdecken Sie die Konzepte hinter den Formeln und sehen Sie sofort, wie sie in der realen Welt angewendet werden.",
+ "Go to Simulations": "Zu den Simulationen",
+ "Contribute": "Mitwirken",
+ "Currently": "Derzeit",
+ "chapters available.": "Kapitel verfügbar."
+}
diff --git a/app/(core)/locales/en.json b/app/(core)/locales/en.json
new file mode 100644
index 00000000..95c168e6
--- /dev/null
+++ b/app/(core)/locales/en.json
@@ -0,0 +1,9 @@
+{
+ "edit": "edit",
+ "PhysicsHub – Best website to learn physics easily.": "PhysicsHub – Best website to learn physics easily.",
+ "Experience physics in real time, uncover the concepts behind the formulas, and instantly see how they apply to the real world.": "Experience physics in real time, uncover the concepts behind the formulas, and instantly see how they apply to the real world.",
+ "Go to Simulations": "Go to Simulations",
+ "Contribute": "Contribute",
+ "Currently": "Currently",
+ "chapters available.": "chapters available."
+}
diff --git a/app/(core)/locales/es.json b/app/(core)/locales/es.json
new file mode 100644
index 00000000..21d1eed8
--- /dev/null
+++ b/app/(core)/locales/es.json
@@ -0,0 +1,9 @@
+{
+ "edit": "editar",
+ "PhysicsHub – Best website to learn physics easily.": "PhysicsHub – El mejor sitio web para aprender física fácilmente.",
+ "Experience physics in real time, uncover the concepts behind the formulas, and instantly see how they apply to the real world.": "Experimenta la física en tiempo real, descubre los conceptos detrás de las fórmulas y observa instantáneamente cómo se aplican al mundo real.",
+ "Go to Simulations": "Ir a las simulaciones",
+ "Contribute": "Contribuir",
+ "Currently": "Actualmente",
+ "chapters available.": "capítulos disponibles."
+}
diff --git a/app/(core)/locales/fr.json b/app/(core)/locales/fr.json
new file mode 100644
index 00000000..613d938b
--- /dev/null
+++ b/app/(core)/locales/fr.json
@@ -0,0 +1,9 @@
+{
+ "edit": "Modifier",
+ "PhysicsHub – Best website to learn physics easily.": "PhysicsHub – Le meilleur site pour apprendre la physique facilement.",
+ "Experience physics in real time, uncover the concepts behind the formulas, and instantly see how they apply to the real world.": "Vivez la physique en temps réel, découvrez les concepts derrière les formules et voyez instantanément comment ils s'appliquent au monde réel.",
+ "Go to Simulations": "Aller aux simulations",
+ "Contribute": "Contribuer",
+ "Currently": "Actuellement",
+ "chapters available.": "chapitres disponibles."
+}
diff --git a/app/(core)/locales/it.json b/app/(core)/locales/it.json
new file mode 100644
index 00000000..ffc13224
--- /dev/null
+++ b/app/(core)/locales/it.json
@@ -0,0 +1,9 @@
+{
+ "edit": "Modifica",
+ "PhysicsHub – Best website to learn physics easily.": "PhysicsHub – Il miglior sito per imparare la fisica facilmente.",
+ "Experience physics in real time, uncover the concepts behind the formulas, and instantly see how they apply to the real world.": "Sperimenta la fisica in tempo reale, scopri i concetti dietro le formule e vedi istantaneamente come si applicano al mondo reale.",
+ "Go to Simulations": "Vai alle simulazioni",
+ "Contribute": "Contribuisci",
+ "Currently": "Attualmente",
+ "chapters available.": "capitoli disponibili."
+}
diff --git a/app/(core)/locales/meta.json b/app/(core)/locales/meta.json
new file mode 100644
index 00000000..210b4104
--- /dev/null
+++ b/app/(core)/locales/meta.json
@@ -0,0 +1,26 @@
+{
+ "en": {
+ "name": "English",
+ "completed": true
+ },
+ "it": {
+ "name": "Italian",
+ "completed": false
+ },
+ "es": {
+ "name": "Spanish",
+ "completed": false
+ },
+ "fr": {
+ "name": "French",
+ "completed": false
+ },
+ "de": {
+ "name": "German",
+ "completed": false
+ },
+ "ar": {
+ "name": "Arabic",
+ "completed": false
+ }
+}
diff --git a/images/contributors.png b/images/contributors.png
index c82b2115..2a751854 100644
Binary files a/images/contributors.png and b/images/contributors.png differ
diff --git a/package-lock.json b/package-lock.json
index 19b3f650..89b5d5f9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -21,7 +21,7 @@
"katex": "^0.16.25",
"koalaz": "^1.1.3",
"motion": "^12.23.24",
- "next": "16.1.7",
+ "next": "16.1.6",
"p5": "^2.1.2",
"planck": "^1.4.2",
"react": "^19.2.0",
@@ -46,11 +46,11 @@
"@typescript-eslint/parser": "^8.53.0",
"axios": "^1.13.2",
"dotenv": "^17.2.3",
- "eslint": "^10.0.2",
+ "eslint": "^9.39.1",
"eslint-config-next": "16.1.6",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.4.24",
- "fast-xml-parser": "^5.5.7",
+ "fast-xml-parser": "^5.3.8",
"gh-pages": "^6.3.0",
"globals": "^17.0.0",
"husky": "^9.1.7",
@@ -201,9 +201,9 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.29.1",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
- "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.0.tgz",
+ "integrity": "sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -561,44 +561,139 @@
}
},
"node_modules/@eslint/config-array": {
- "version": "0.23.2",
- "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.2.tgz",
- "integrity": "sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==",
+ "version": "0.21.1",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz",
+ "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@eslint/object-schema": "^3.0.2",
+ "@eslint/object-schema": "^2.1.7",
"debug": "^4.3.1",
- "minimatch": "^10.2.1"
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/config-array/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@eslint/config-array/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
},
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": "*"
}
},
"node_modules/@eslint/config-helpers": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.2.tgz",
- "integrity": "sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==",
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz",
+ "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@eslint/core": "^1.1.0"
+ "@eslint/core": "^0.17.0"
},
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/@eslint/core": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.0.tgz",
- "integrity": "sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==",
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz",
+ "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@types/json-schema": "^7.0.15"
},
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz",
+ "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.1",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
"node_modules/@eslint/js": {
@@ -615,27 +710,27 @@
}
},
"node_modules/@eslint/object-schema": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.2.tgz",
- "integrity": "sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==",
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz",
+ "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==",
"dev": true,
"license": "Apache-2.0",
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/@eslint/plugin-kit": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.0.tgz",
- "integrity": "sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz",
+ "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@eslint/core": "^1.1.0",
+ "@eslint/core": "^0.17.0",
"levn": "^0.4.1"
},
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/@fortawesome/fontawesome-common-types": {
@@ -1284,9 +1379,9 @@
}
},
"node_modules/@next/env": {
- "version": "16.1.7",
- "resolved": "https://registry.npmjs.org/@next/env/-/env-16.1.7.tgz",
- "integrity": "sha512-rJJbIdJB/RQr2F1nylZr/PJzamvNNhfr3brdKP6s/GW850jbtR70QlSfFselvIBbcPUOlQwBakexjFzqLzF6pg==",
+ "version": "16.1.6",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-16.1.6.tgz",
+ "integrity": "sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==",
"license": "MIT"
},
"node_modules/@next/eslint-plugin-next": {
@@ -1300,9 +1395,9 @@
}
},
"node_modules/@next/swc-darwin-arm64": {
- "version": "16.1.7",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.1.7.tgz",
- "integrity": "sha512-b2wWIE8sABdyafc4IM8r5Y/dS6kD80JRtOGrUiKTsACFQfWWgUQ2NwoUX1yjFMXVsAwcQeNpnucF2ZrujsBBPg==",
+ "version": "16.1.6",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.1.6.tgz",
+ "integrity": "sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw==",
"cpu": [
"arm64"
],
@@ -1316,9 +1411,9 @@
}
},
"node_modules/@next/swc-darwin-x64": {
- "version": "16.1.7",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.1.7.tgz",
- "integrity": "sha512-zcnVaaZulS1WL0Ss38R5Q6D2gz7MtBu8GZLPfK+73D/hp4GFMrC2sudLky1QibfV7h6RJBJs/gOFvYP0X7UVlQ==",
+ "version": "16.1.6",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.1.6.tgz",
+ "integrity": "sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ==",
"cpu": [
"x64"
],
@@ -1332,9 +1427,9 @@
}
},
"node_modules/@next/swc-linux-arm64-gnu": {
- "version": "16.1.7",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.1.7.tgz",
- "integrity": "sha512-2ant89Lux/Q3VyC8vNVg7uBaFVP9SwoK2jJOOR0L8TQnX8CAYnh4uctAScy2Hwj2dgjVHqHLORQZJ2wH6VxhSQ==",
+ "version": "16.1.6",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.1.6.tgz",
+ "integrity": "sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw==",
"cpu": [
"arm64"
],
@@ -1348,9 +1443,9 @@
}
},
"node_modules/@next/swc-linux-arm64-musl": {
- "version": "16.1.7",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.1.7.tgz",
- "integrity": "sha512-uufcze7LYv0FQg9GnNeZ3/whYfo+1Q3HnQpm16o6Uyi0OVzLlk2ZWoY7j07KADZFY8qwDbsmFnMQP3p3+Ftprw==",
+ "version": "16.1.6",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.1.6.tgz",
+ "integrity": "sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ==",
"cpu": [
"arm64"
],
@@ -1364,9 +1459,9 @@
}
},
"node_modules/@next/swc-linux-x64-gnu": {
- "version": "16.1.7",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.1.7.tgz",
- "integrity": "sha512-KWVf2gxYvHtvuT+c4MBOGxuse5TD7DsMFYSxVxRBnOzok/xryNeQSjXgxSv9QpIVlaGzEn/pIuI6Koosx8CGWA==",
+ "version": "16.1.6",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.1.6.tgz",
+ "integrity": "sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ==",
"cpu": [
"x64"
],
@@ -1380,9 +1475,9 @@
}
},
"node_modules/@next/swc-linux-x64-musl": {
- "version": "16.1.7",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.1.7.tgz",
- "integrity": "sha512-HguhaGwsGr1YAGs68uRKc4aGWxLET+NevJskOcCAwXbwj0fYX0RgZW2gsOCzr9S11CSQPIkxmoSbuVaBp4Z3dA==",
+ "version": "16.1.6",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.1.6.tgz",
+ "integrity": "sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg==",
"cpu": [
"x64"
],
@@ -1396,9 +1491,9 @@
}
},
"node_modules/@next/swc-win32-arm64-msvc": {
- "version": "16.1.7",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.1.7.tgz",
- "integrity": "sha512-S0n3KrDJokKTeFyM/vGGGR8+pCmXYrjNTk2ZozOL1C/JFdfUIL9O1ATaJOl5r2POe56iRChbsszrjMAdWSv7kQ==",
+ "version": "16.1.6",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.1.6.tgz",
+ "integrity": "sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw==",
"cpu": [
"arm64"
],
@@ -1412,9 +1507,9 @@
}
},
"node_modules/@next/swc-win32-x64-msvc": {
- "version": "16.1.7",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.1.7.tgz",
- "integrity": "sha512-mwgtg8CNZGYm06LeEd+bNnOUfwOyNem/rOiP14Lsz+AnUY92Zq/LXwtebtUiaeVkhbroRCQ0c8GlR4UT1U+0yg==",
+ "version": "16.1.6",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.1.6.tgz",
+ "integrity": "sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A==",
"cpu": [
"x64"
],
@@ -2545,13 +2640,6 @@
"tslib": "^2.4.0"
}
},
- "node_modules/@types/esrecurse": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz",
- "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/@types/estree": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
@@ -2688,17 +2776,17 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.56.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz",
- "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==",
+ "version": "8.54.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz",
+ "integrity": "sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.12.2",
- "@typescript-eslint/scope-manager": "8.56.1",
- "@typescript-eslint/type-utils": "8.56.1",
- "@typescript-eslint/utils": "8.56.1",
- "@typescript-eslint/visitor-keys": "8.56.1",
+ "@typescript-eslint/scope-manager": "8.54.0",
+ "@typescript-eslint/type-utils": "8.54.0",
+ "@typescript-eslint/utils": "8.54.0",
+ "@typescript-eslint/visitor-keys": "8.54.0",
"ignore": "^7.0.5",
"natural-compare": "^1.4.0",
"ts-api-utils": "^2.4.0"
@@ -2711,22 +2799,22 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^8.56.1",
- "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
+ "@typescript-eslint/parser": "^8.54.0",
+ "eslint": "^8.57.0 || ^9.0.0",
"typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.56.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz",
- "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==",
+ "version": "8.54.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.54.0.tgz",
+ "integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.56.1",
- "@typescript-eslint/types": "8.56.1",
- "@typescript-eslint/typescript-estree": "8.56.1",
- "@typescript-eslint/visitor-keys": "8.56.1",
+ "@typescript-eslint/scope-manager": "8.54.0",
+ "@typescript-eslint/types": "8.54.0",
+ "@typescript-eslint/typescript-estree": "8.54.0",
+ "@typescript-eslint/visitor-keys": "8.54.0",
"debug": "^4.4.3"
},
"engines": {
@@ -2737,19 +2825,19 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
+ "eslint": "^8.57.0 || ^9.0.0",
"typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/project-service": {
- "version": "8.56.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz",
- "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==",
+ "version": "8.54.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.54.0.tgz",
+ "integrity": "sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/tsconfig-utils": "^8.56.1",
- "@typescript-eslint/types": "^8.56.1",
+ "@typescript-eslint/tsconfig-utils": "^8.54.0",
+ "@typescript-eslint/types": "^8.54.0",
"debug": "^4.4.3"
},
"engines": {
@@ -2764,14 +2852,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.56.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz",
- "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==",
+ "version": "8.54.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz",
+ "integrity": "sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.56.1",
- "@typescript-eslint/visitor-keys": "8.56.1"
+ "@typescript-eslint/types": "8.54.0",
+ "@typescript-eslint/visitor-keys": "8.54.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2782,9 +2870,9 @@
}
},
"node_modules/@typescript-eslint/tsconfig-utils": {
- "version": "8.56.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz",
- "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==",
+ "version": "8.54.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz",
+ "integrity": "sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2799,15 +2887,15 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.56.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz",
- "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==",
+ "version": "8.54.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz",
+ "integrity": "sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.56.1",
- "@typescript-eslint/typescript-estree": "8.56.1",
- "@typescript-eslint/utils": "8.56.1",
+ "@typescript-eslint/types": "8.54.0",
+ "@typescript-eslint/typescript-estree": "8.54.0",
+ "@typescript-eslint/utils": "8.54.0",
"debug": "^4.4.3",
"ts-api-utils": "^2.4.0"
},
@@ -2819,14 +2907,14 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
+ "eslint": "^8.57.0 || ^9.0.0",
"typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.56.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz",
- "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==",
+ "version": "8.54.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz",
+ "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2838,18 +2926,18 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.56.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz",
- "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==",
+ "version": "8.54.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz",
+ "integrity": "sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/project-service": "8.56.1",
- "@typescript-eslint/tsconfig-utils": "8.56.1",
- "@typescript-eslint/types": "8.56.1",
- "@typescript-eslint/visitor-keys": "8.56.1",
+ "@typescript-eslint/project-service": "8.54.0",
+ "@typescript-eslint/tsconfig-utils": "8.54.0",
+ "@typescript-eslint/types": "8.54.0",
+ "@typescript-eslint/visitor-keys": "8.54.0",
"debug": "^4.4.3",
- "minimatch": "^10.2.2",
+ "minimatch": "^9.0.5",
"semver": "^7.7.3",
"tinyglobby": "^0.2.15",
"ts-api-utils": "^2.4.0"
@@ -2866,16 +2954,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "8.56.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz",
- "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==",
+ "version": "8.54.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.54.0.tgz",
+ "integrity": "sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.9.1",
- "@typescript-eslint/scope-manager": "8.56.1",
- "@typescript-eslint/types": "8.56.1",
- "@typescript-eslint/typescript-estree": "8.56.1"
+ "@typescript-eslint/scope-manager": "8.54.0",
+ "@typescript-eslint/types": "8.54.0",
+ "@typescript-eslint/typescript-estree": "8.54.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2885,19 +2973,19 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
+ "eslint": "^8.57.0 || ^9.0.0",
"typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.56.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz",
- "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==",
+ "version": "8.54.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz",
+ "integrity": "sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.56.1",
- "eslint-visitor-keys": "^5.0.0"
+ "@typescript-eslint/types": "8.54.0",
+ "eslint-visitor-keys": "^4.2.1"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2908,13 +2996,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
- "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
"dev": true,
"license": "Apache-2.0",
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
@@ -3196,9 +3284,9 @@
"license": "BSD-3-Clause"
},
"node_modules/acorn": {
- "version": "8.16.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
- "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT",
"bin": {
"acorn": "bin/acorn"
@@ -3254,9 +3342,9 @@
}
},
"node_modules/ajv": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
- "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3805,26 +3893,13 @@
"peer": true
},
"node_modules/brace-expansion": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
- "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "balanced-match": "^4.0.2"
- },
- "engines": {
- "node": "18 || 20 || >=22"
- }
- },
- "node_modules/brace-expansion/node_modules/balanced-match": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
- "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "18 || 20 || >=22"
+ "balanced-match": "^1.0.0"
}
},
"node_modules/braces": {
@@ -3970,7 +4045,6 @@
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -5063,9 +5137,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.5.307",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.307.tgz",
- "integrity": "sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==",
+ "version": "1.5.283",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.283.tgz",
+ "integrity": "sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w==",
"dev": true,
"license": "ISC"
},
@@ -5511,30 +5585,33 @@
}
},
"node_modules/eslint": {
- "version": "10.0.2",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.2.tgz",
- "integrity": "sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==",
+ "version": "9.39.2",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz",
+ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
- "@eslint-community/regexpp": "^4.12.2",
- "@eslint/config-array": "^0.23.2",
- "@eslint/config-helpers": "^0.5.2",
- "@eslint/core": "^1.1.0",
- "@eslint/plugin-kit": "^0.6.0",
+ "@eslint-community/regexpp": "^4.12.1",
+ "@eslint/config-array": "^0.21.1",
+ "@eslint/config-helpers": "^0.4.2",
+ "@eslint/core": "^0.17.0",
+ "@eslint/eslintrc": "^3.3.1",
+ "@eslint/js": "9.39.2",
+ "@eslint/plugin-kit": "^0.4.1",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.4.2",
"@types/estree": "^1.0.6",
- "ajv": "^6.14.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
"cross-spawn": "^7.0.6",
"debug": "^4.3.2",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^9.1.1",
- "eslint-visitor-keys": "^5.0.1",
- "espree": "^11.1.1",
- "esquery": "^1.7.0",
+ "eslint-scope": "^8.4.0",
+ "eslint-visitor-keys": "^4.2.1",
+ "espree": "^10.4.0",
+ "esquery": "^1.5.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
"file-entry-cache": "^8.0.0",
@@ -5544,7 +5621,8 @@
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
- "minimatch": "^10.2.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
"natural-compare": "^1.4.0",
"optionator": "^0.9.3"
},
@@ -5552,7 +5630,7 @@
"eslint": "bin/eslint.js"
},
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://eslint.org/donate"
@@ -5593,18 +5671,42 @@
}
}
},
- "node_modules/eslint-config-next/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "node_modules/eslint-config-next/node_modules/globals": {
+ "version": "16.4.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz",
+ "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
+ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "debug": "^3.2.7",
+ "is-core-module": "^2.13.0",
+ "resolve": "^1.22.4"
+ }
+ },
+ "node_modules/eslint-import-resolver-node/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
}
},
- "node_modules/eslint-config-next/node_modules/eslint-import-resolver-typescript": {
+ "node_modules/eslint-import-resolver-typescript": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz",
"integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==",
@@ -5639,7 +5741,35 @@
}
}
},
- "node_modules/eslint-config-next/node_modules/eslint-plugin-import": {
+ "node_modules/eslint-module-utils": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz",
+ "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^3.2.7"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import": {
"version": "2.32.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz",
"integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==",
@@ -5673,7 +5803,18 @@
"eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9"
}
},
- "node_modules/eslint-config-next/node_modules/eslint-plugin-import/node_modules/debug": {
+ "node_modules/eslint-plugin-import/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/debug": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
@@ -5683,7 +5824,30 @@
"ms": "^2.1.1"
}
},
- "node_modules/eslint-config-next/node_modules/eslint-plugin-jsx-a11y": {
+ "node_modules/eslint-plugin-import/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y": {
"version": "6.10.2",
"resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz",
"integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==",
@@ -5713,7 +5877,31 @@
"eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9"
}
},
- "node_modules/eslint-config-next/node_modules/eslint-plugin-react": {
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/eslint-plugin-react": {
"version": "7.37.5",
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz",
"integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==",
@@ -5746,20 +5934,48 @@
"eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"
}
},
- "node_modules/eslint-config-next/node_modules/globals": {
- "version": "16.4.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz",
- "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==",
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz",
+ "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.24.4",
+ "@babel/parser": "^7.24.4",
+ "hermes-parser": "^0.25.1",
+ "zod": "^3.25.0 || ^4.0.0",
+ "zod-validation-error": "^3.5.0 || ^4.0.0"
+ },
"engines": {
"node": ">=18"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-react-refresh": {
+ "version": "0.4.26",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.26.tgz",
+ "integrity": "sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "eslint": ">=8.40"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/eslint-config-next/node_modules/minimatch": {
+ "node_modules/eslint-plugin-react/node_modules/minimatch": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
"integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
@@ -5772,31 +5988,25 @@
"node": "*"
}
},
- "node_modules/eslint-config-next/node_modules/resolve": {
- "version": "2.0.0-next.6",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz",
- "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==",
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.5",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "es-errors": "^1.3.0",
- "is-core-module": "^2.16.1",
- "node-exports-info": "^1.6.0",
- "object-keys": "^1.1.1",
+ "is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
"bin": {
"resolve": "bin/resolve"
},
- "engines": {
- "node": ">= 0.4"
- },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/eslint-config-next/node_modules/semver": {
+ "node_modules/eslint-plugin-react/node_modules/semver": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
@@ -5806,100 +6016,18 @@
"semver": "bin/semver.js"
}
},
- "node_modules/eslint-import-resolver-node": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
- "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "^3.2.7",
- "is-core-module": "^2.13.0",
- "resolve": "^1.22.4"
- }
- },
- "node_modules/eslint-import-resolver-node/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-module-utils": {
- "version": "2.12.1",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz",
- "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "^3.2.7"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependenciesMeta": {
- "eslint": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-module-utils/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-plugin-react-hooks": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz",
- "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.24.4",
- "@babel/parser": "^7.24.4",
- "hermes-parser": "^0.25.1",
- "zod": "^3.25.0 || ^4.0.0",
- "zod-validation-error": "^3.5.0 || ^4.0.0"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
- }
- },
- "node_modules/eslint-plugin-react-refresh": {
- "version": "0.4.26",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.26.tgz",
- "integrity": "sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "eslint": ">=8.40"
- }
- },
"node_modules/eslint-scope": {
- "version": "9.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.1.tgz",
- "integrity": "sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
+ "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "@types/esrecurse": "^4.3.1",
- "@types/estree": "^1.0.8",
"esrecurse": "^4.3.0",
"estraverse": "^5.2.0"
},
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
@@ -5918,14 +6046,38 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/eslint/node_modules/@eslint/js": {
+ "version": "9.39.2",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz",
+ "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ }
+ },
+ "node_modules/eslint/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
"node_modules/eslint/node_modules/eslint-visitor-keys": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
- "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
"dev": true,
"license": "Apache-2.0",
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
@@ -5941,32 +6093,45 @@
"node": ">= 4"
}
},
+ "node_modules/eslint/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/espree": {
- "version": "11.1.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-11.1.1.tgz",
- "integrity": "sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==",
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
+ "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "acorn": "^8.16.0",
+ "acorn": "^8.15.0",
"acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^5.0.1"
+ "eslint-visitor-keys": "^4.2.1"
},
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
"node_modules/espree/node_modules/eslint-visitor-keys": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
- "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
"dev": true,
"license": "Apache-2.0",
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
@@ -6184,26 +6349,10 @@
"dev": true,
"license": "MIT"
},
- "node_modules/fast-xml-builder": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz",
- "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/NaturalIntelligence"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "path-expression-matcher": "^1.1.3"
- }
- },
"node_modules/fast-xml-parser": {
- "version": "5.5.7",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.7.tgz",
- "integrity": "sha512-LteOsISQ2GEiDHZch6L9hB0+MLoYVLToR7xotrzU0opCICBkxOPgHAy1HxAvtxfJNXDJpgAsQN30mkrfpO2Prg==",
+ "version": "5.3.8",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.8.tgz",
+ "integrity": "sha512-53jIF4N6u/pxvaL1eb/hEZts/cFLWZ92eCfLrNyCI0k38lettCG/Bs40W9pPwoPXyHQlKu2OUbQtiEIZK/J6Vw==",
"dev": true,
"funding": [
{
@@ -6213,9 +6362,7 @@
],
"license": "MIT",
"dependencies": {
- "fast-xml-builder": "^1.1.4",
- "path-expression-matcher": "^1.1.3",
- "strnum": "^2.2.0"
+ "strnum": "^2.1.2"
},
"bin": {
"fxparser": "src/cli/cli.js"
@@ -6412,9 +6559,9 @@
}
},
"node_modules/flatted": {
- "version": "3.4.2",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
- "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
+ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
"dev": true,
"license": "ISC"
},
@@ -6722,9 +6869,9 @@
}
},
"node_modules/get-tsconfig": {
- "version": "4.13.6",
- "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz",
- "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==",
+ "version": "4.13.1",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.1.tgz",
+ "integrity": "sha512-EoY1N2xCn44xU6750Sx7OjOIT59FkmstNc3X6y5xpz7D5cBtZRe/3pSlTkDJgqsOk3WwZPkWfonhhUJfttQo3w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6930,7 +7077,6 @@
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=8"
}
@@ -8548,6 +8694,13 @@
"license": "MIT",
"peer": true
},
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/lodash.uniqby": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz",
@@ -8849,16 +9002,16 @@
}
},
"node_modules/minimatch": {
- "version": "10.2.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
- "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
"dev": true,
- "license": "BlueOak-1.0.0",
+ "license": "ISC",
"dependencies": {
- "brace-expansion": "^5.0.2"
+ "brace-expansion": "^2.0.2"
},
"engines": {
- "node": "18 || 20 || >=22"
+ "node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -9023,14 +9176,14 @@
}
},
"node_modules/next": {
- "version": "16.1.7",
- "resolved": "https://registry.npmjs.org/next/-/next-16.1.7.tgz",
- "integrity": "sha512-WM0L7WrSvKwoLegLYr6V+mz+RIofqQgVAfHhMp9a88ms0cFX8iX9ew+snpWlSBwpkURJOUdvCEt3uLl3NNzvWg==",
+ "version": "16.1.6",
+ "resolved": "https://registry.npmjs.org/next/-/next-16.1.6.tgz",
+ "integrity": "sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw==",
"license": "MIT",
"dependencies": {
- "@next/env": "16.1.7",
+ "@next/env": "16.1.6",
"@swc/helpers": "0.5.15",
- "baseline-browser-mapping": "^2.9.19",
+ "baseline-browser-mapping": "^2.8.3",
"caniuse-lite": "^1.0.30001579",
"postcss": "8.4.31",
"styled-jsx": "5.1.6"
@@ -9042,14 +9195,14 @@
"node": ">=20.9.0"
},
"optionalDependencies": {
- "@next/swc-darwin-arm64": "16.1.7",
- "@next/swc-darwin-x64": "16.1.7",
- "@next/swc-linux-arm64-gnu": "16.1.7",
- "@next/swc-linux-arm64-musl": "16.1.7",
- "@next/swc-linux-x64-gnu": "16.1.7",
- "@next/swc-linux-x64-musl": "16.1.7",
- "@next/swc-win32-arm64-msvc": "16.1.7",
- "@next/swc-win32-x64-msvc": "16.1.7",
+ "@next/swc-darwin-arm64": "16.1.6",
+ "@next/swc-darwin-x64": "16.1.6",
+ "@next/swc-linux-arm64-gnu": "16.1.6",
+ "@next/swc-linux-arm64-musl": "16.1.6",
+ "@next/swc-linux-x64-gnu": "16.1.6",
+ "@next/swc-linux-x64-musl": "16.1.6",
+ "@next/swc-win32-arm64-msvc": "16.1.6",
+ "@next/swc-win32-x64-msvc": "16.1.6",
"sharp": "^0.34.4"
},
"peerDependencies": {
@@ -9120,35 +9273,6 @@
"node": ">=18"
}
},
- "node_modules/node-exports-info": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz",
- "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array.prototype.flatmap": "^1.3.3",
- "es-errors": "^1.3.0",
- "object.entries": "^1.1.9",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/node-exports-info/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
"node_modules/node-releases": {
"version": "2.0.27",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
@@ -11955,22 +12079,6 @@
"node": ">=8"
}
},
- "node_modules/path-expression-matcher": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.1.3.tgz",
- "integrity": "sha512-qdVgY8KXmVdJZRSS1JdEPOKPdTiEK/pi0RkcT2sw1RhXxohdujUlJFPuS1TSkevZ9vzd3ZlL7ULl1MHGTApKzQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/NaturalIntelligence"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -14085,6 +14193,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/strip-outer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
@@ -14109,9 +14230,9 @@
}
},
"node_modules/strnum": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.1.tgz",
- "integrity": "sha512-BwRvNd5/QoAtyW1na1y1LsJGQNvRlkde6Q/ipqqEaivoMdV+B1OMOTVdwR+N/cwVUcIt9PYyHmV8HyexCZSupg==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz",
+ "integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==",
"dev": true,
"funding": [
{
@@ -14169,7 +14290,6 @@
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -14734,16 +14854,16 @@
}
},
"node_modules/typescript-eslint": {
- "version": "8.56.1",
- "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz",
- "integrity": "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==",
+ "version": "8.54.0",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.54.0.tgz",
+ "integrity": "sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/eslint-plugin": "8.56.1",
- "@typescript-eslint/parser": "8.56.1",
- "@typescript-eslint/typescript-estree": "8.56.1",
- "@typescript-eslint/utils": "8.56.1"
+ "@typescript-eslint/eslint-plugin": "8.54.0",
+ "@typescript-eslint/parser": "8.54.0",
+ "@typescript-eslint/typescript-estree": "8.54.0",
+ "@typescript-eslint/utils": "8.54.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -14753,7 +14873,7 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
+ "eslint": "^8.57.0 || ^9.0.0",
"typescript": ">=4.8.4 <6.0.0"
}
},
diff --git a/scripts/contributors/contributors.html b/scripts/contributors/contributors.html
index b2b56229..44055019 100644
--- a/scripts/contributors/contributors.html
+++ b/scripts/contributors/contributors.html
@@ -8,894 +8,894 @@ mattqdev
- + 105946
+ + 0
- 53.13%
+ 0%
- 258 commits
+ 0 commits
- 44.71%
+ 44.57%
- - 50987
+ - 0
- 38.86%
+ 0%
-
-
- dependabot[bot]
+
+
+ github-actions[bot]
- + 47188
+ + 0
- 23.67%
+ 0%
- 65 commits
+ 0 commits
- 7.32%
+ 16.46%
- - 6133
+ - 0
- 4.67%
+ 0%
-
-
- github-actions[bot]
+
+
+ physicshub
- + 15899
+ + 0
- 7.97%
+ 0%
- 145 commits
+ 0 commits
- 16.33%
+ 11.31%
- - 57087
+ - 0
- 43.51%
+ 0%
-
-
- YuSuBH
+
+
+ allcontributors[bot]
- + 8496
+ + 0
- 4.26%
+ 0%
- 1 commits
+ 0 commits
- 0.11%
+ 8.29%
- - 3482
+ - 0
- 2.65%
+ 0%
-
-
- maaviah17
+
+
+ dependabot[bot]
- + 5768
+ + 0
- 2.89%
+ 0%
- 2 commits
+ 0 commits
- 0.23%
+ 7.28%
- - 5749
+ - 0
- 4.38%
+ 0%
-
-
- prashantchauhan-12
+
+
+ txgh25
- + 5467
+ + 0
- 2.74%
+ 0%
- 2 commits
+ 0 commits
- 0.23%
+ 1.46%
- - 376
+ - 0
- 0.29%
+ 0%
-
-
- akshatj0630
+
+
+ petercr
- + 5018
+ + 0
- 2.52%
+ 0%
- 5 commits
+ 0 commits
- 0.79%
+ 1.23%
- - 4995
+ - 0
- 3.81%
+ 0%
-
-
- meet-shah820
+
+
+ GigaWHATT
- + 958
+ + 0
- 0.48%
+ 0%
- 5 commits
+ 0 commits
- 0.79%
+ 0.78%
- - 524
+ - 0
- 0.40%
+ 0%
-
-
- Axestein
+
+
+ meet-shah820
- + 767
+ + 0
- 0.38%
+ 0%
- 2 commits
+ 0 commits
- 0.23%
+ 0.78%
- - 341
+ - 0
- 0.26%
+ 0%
-
-
- petercr
+
+
+ akshatj0630
- + 732
+ + 0
- 0.37%
+ 0%
- 7 commits
+ 0 commits
- 1.24%
+ 0.78%
- - 187
+ - 0
- 0.14%
+ 0%
-
-
- txgh25
+
+
+ Yukesh-30
- + 532
+ + 0
- 0.27%
+ 0%
- 9 commits
+ 0 commits
- 1.46%
+ 0.67%
- - 132
+ - 0
- 0.10%
+ 0%
-
-
- allcontributors[bot]
+
+
+ pabrams
- + 497
+ + 0
- 0.25%
+ 0%
- 74 commits
+ 0 commits
- 8.11%
+ 0.56%
- - 76
+ - 0
- 0.06%
+ 0%
-
-
- arjav007
+
+
+ supertutto
- + 282
+ + 0
- 0.14%
+ 0%
- 3 commits
+ 0 commits
- 0.34%
+ 0.45%
- - 235
+ - 0
- 0.18%
+ 0%
-
-
- Yukesh-30
+
+
+ RiriLab17
- + 267
+ + 0
- 0.13%
+ 0%
- 5 commits
+ 0 commits
- 0.68%
+ 0.45%
- - 17
+ - 0
- 0.01%
+ 0%
-
-
- Abmarne
+
+
+ Atharv1507
- + 214
+ + 0
- 0.11%
+ 0%
- 1 commits
+ 0 commits
- 0.11%
+ 0.34%
- - 242
+ - 0
- 0.18%
+ 0%
-
-
- shivanshpathak01
+
+
+ devrajbando
- + 194
+ + 0
- 0.10%
+ 0%
- 2 commits
+ 0 commits
- 0.23%
+ 0.34%
- - 137
+ - 0
- 0.10%
+ 0%
-
-
- physicshub
+
+
+ Stratos-Kass
- + 177
+ + 0
- 0.09%
+ 0%
- 10 commits
+ 0 commits
- 11.37%
+ 0.34%
- - 20
+ - 0
- 0.02%
+ 0%
-
-
- Sindhuu-B
+
+
+ arjav007
- + 170
+ + 0
- 0.09%
+ 0%
- 2 commits
+ 0 commits
- 0.23%
+ 0.34%
- - 49
+ - 0
- 0.04%
+ 0%
-
-
- praria
+
+
+ kakarot2905
- + 157
+ + 0
- 0.08%
+ 0%
- 1 commits
+ 0 commits
- 0.11%
+ 0.22%
- - 20
+ - 0
- 0.02%
+ 0%
-
-
- Talos0248
+
+
+ maaviah17
- + 82
+ + 0
- 0.04%
+ 0%
- 1 commits
+ 0 commits
- 0.11%
+ 0.22%
- - 43
+ - 0
- 0.03%
+ 0%
-
-
- RiriLab17
+
+
+ Abdulgafar4
- + 73
+ + 0
- 0.04%
+ 0%
- 3 commits
+ 0 commits
- 0.45%
+ 0.22%
- - 109
+ - 0
- 0.08%
+ 0%
-
-
- Atharv1507
+
+
+ Sindhuu-B
- + 71
+ + 0
- 0.04%
+ 0%
- 3 commits
+ 0 commits
- 0.34%
+ 0.22%
- - 33
+ - 0
- 0.03%
+ 0%
-
-
- pabrams
+
+
+ shivanshpathak01
- + 57
+ + 0
- 0.03%
+ 0%
- 5 commits
+ 0 commits
- 0.56%
+ 0.22%
- - 25
+ - 0
- 0.02%
+ 0%
-
-
- GigaWHATT
+
+
+ prashantchauhan-12
- + 47
+ + 0
- 0.02%
+ 0%
- 5 commits
+ 0 commits
- 0.79%
+ 0.22%
-
-
- supertutto
+
+
+ NACHO9999
- + 43
+ + 0
- 0.02%
+ 0%
- 3 commits
+ 0 commits
- 0.45%
+ 0.22%
- - 66
+ - 0
- 0.05%
+ 0%
-
-
- shauryakushwaha08
+
+
+ I-had-a-bad-idea
- + 38
+ + 0
- 0.02%
+ 0%
- 1 commits
+ 0 commits
- 0.11%
+ 0.22%
-
-
- Stratos-Kass
+
+
+ Axestein
- + 37
+ + 0
- 0.02%
+ 0%
- 3 commits
+ 0 commits
- 0.34%
+ 0.22%
- - 33
+ - 0
- 0.03%
+ 0%
-
-
- ElshadHu
+
+
+ Adibayuluthfiansyah
- + 35
+ + 0
- 0.02%
+ 0%
- 1 commits
+ 0 commits
- 0.11%
+ 0.22%
-
-
- devrajbando
+
+
+ sanketshinde3001
- + 33
+ + 0
- 0.02%
+ 0%
- 3 commits
+ 0 commits
- 0.34%
+ 0.11%
- - 13
+ - 0
- 0.01%
+ 0%
@@ -907,15 +907,15 @@ koderka2020
- + 22
+ + 0
- 0.01%
+ 0%
- 1 commits
+ 0 commits
0.11%
@@ -923,30 +923,30 @@
koderka2020
- - 19
+ - 0
- 0.01%
+ 0%
-
-
- OleksandraKordonets
+
+
+ YuSuBH
- + 21
+ + 0
- 0.01%
+ 0%
- 1 commits
+ 0 commits
0.11%
@@ -954,61 +954,61 @@
OleksandraKordonets
- - 10
+ - 0
- 0.01%
+ 0%
-
-
- Adibayuluthfiansyah
+
+
+ Vaishnavi-Raykar
- + 19
+ + 0
- 0.01%
+ 0%
- 2 commits
+ 0 commits
- 0.23%
+ 0.11%
-
-
- Nitin23123
+
+
+ Talos0248
- + 19
+ + 0
- 0.01%
+ 0%
- 1 commits
+ 0 commits
0.11%
@@ -1016,92 +1016,92 @@
Nitin23123
-
-
- kakarot2905
+
+
+ shauryakushwaha08
- + 18
+ + 0
- 0.01%
+ 0%
- 1 commits
+ 0 commits
- 0.23%
+ 0.11%
- - 14
+ - 0
- 0.01%
+ 0%
-
-
- NACHO9999
+
+
+ praria
- + 13
+ + 0
- 0.01%
+ 0%
- 2 commits
+ 0 commits
- 0.23%
+ 0.11%
- - 10
+ - 0
- 0.01%
+ 0%
-
-
- codeurluce
+
+
+ OleksandraKordonets
- + 13
+ + 0
- 0.01%
+ 0%
- 1 commits
+ 0 commits
0.11%
@@ -1112,27 +1112,27 @@
codeurluce
- 0
- 0.00%
+ 0%
-
-
- Vaishnavi-Raykar
+
+
+ Nitin23123
- + 11
+ + 0
- 0.01%
+ 0%
- 1 commits
+ 0 commits
0.11%
@@ -1140,61 +1140,61 @@
Vaishnavi-Raykar
-
-
- I-had-a-bad-idea
+
+
+ codeurluce
- 1 commits
+ 0 commits
- 0.23%
+ 0.11%
-
-
- sanketshinde3001
+
+
+ ElshadHu
- 1 commits
+ 0 commits
0.11%
@@ -1202,33 +1202,33 @@
sanketshinde3001
-
-
- Abdulgafar4
+
+
+ Abmarne
- 1 commits
+ 0 commits
- 0.23%
+ 0.11%
@@ -1236,7 +1236,7 @@
Abdulgafar4
- 0
- 0.00%
+ 0%