diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 534e5df..be4d405 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -9,8 +9,8 @@ jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- - name: Appel du hook Netlify
- env:
- URL: ${{ secrets.NETLIFY_PRODUCTION_BUILD_HOOK }}
- run: |
- curl --silent --show-error --fail -X POST "$URL"
+ - name: Appel du hook Netlify
+ env:
+ URL: ${{ secrets.NETLIFY_PRODUCTION_BUILD_HOOK }}
+ run: |
+ curl --silent --show-error --fail -X POST "$URL"
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 2dd8d8c..2821941 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -10,7 +10,7 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v4
with:
- node-version: '20.x'
+ node-version: "20.x"
- name: Install dependencies
run: yarn --frozen-lockfile
- run: yarn test
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..abb60ee
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,9 @@
+repos:
+ - repo: https://github.com/pre-commit/mirrors-prettier
+ rev: v4.0.0-alpha.8
+ hooks:
+ - id: prettier
+ - repo: https://github.com/pre-commit/mirrors-eslint
+ rev: v9.10.0
+ hooks:
+ - id: eslint
diff --git a/README.md b/README.md
index 82db065..867b4cc 100644
--- a/README.md
+++ b/README.md
@@ -12,6 +12,13 @@ https://quefairedemesdechets.ademe.fr
`yarn start` pour lancer l'application sur [http://localhost:3000](http://localhost:3000)
+### `pre-commit`
+
+Ce projet utilise l'outil [pre-commit](https://pre-commit.com/hooks.html), populaire dans l'écosystème python.
+Il aurait pu utiliser [Husky](https://typicode.github.io/husky/) ou autre outil populaire dans l'écosystème node.js mais `pre-commit` étant déjà utilisé sur [Longue vie aux objets](http://github.com/incubateur-ademe/quefairedemesobjets/), il semblait logique d'uniformiser les outils.
+
+`pip install pre-commit` pour installer la dépendance
+`pre-commit install` pour installer les pre-commit hooks
## Déploiement
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 0000000..3fe7273
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,12 @@
+import globals from "globals";
+import pluginJs from "@eslint/js";
+import tseslint from "typescript-eslint";
+import pluginReact from "eslint-plugin-react";
+
+export default [
+ { files: ["**/*.{js,mjs,cjs,ts,jsx,tsx}"] },
+ { languageOptions: { globals: globals.browser } },
+ pluginJs.configs.recommended,
+ ...tseslint.configs.recommended,
+ pluginReact.configs.flat.recommended,
+];
diff --git a/gatsby-config.ts b/gatsby-config.ts
index 073de17..0b1d2c8 100644
--- a/gatsby-config.ts
+++ b/gatsby-config.ts
@@ -58,7 +58,7 @@ const config: GatsbyConfig = {
siteId: "82",
matomoUrl: "https://stats.beta.gouv.fr",
siteUrl: "https://quefairedemesdechets.ademe.fr",
- disableCookies: true
+ disableCookies: true,
},
},
{
diff --git a/gatsby-node.ts b/gatsby-node.ts
index e25fef8..ecc9bb3 100644
--- a/gatsby-node.ts
+++ b/gatsby-node.ts
@@ -1,17 +1,17 @@
-import path from "path"
-import slug from "slug"
+import path from "path";
+import slug from "slug";
exports.createPages = ({ graphql, actions: { createPage } }) => {
return fetch(
- `https://data.ademe.fr/data-fair/api/v1/datasets/que-faire-de-mes-dechets-produits/lines?format=json&q_mode=simple&size=1000&sampling=neighbors`
+ `https://data.ademe.fr/data-fair/api/v1/datasets/que-faire-de-mes-dechets-produits/lines?format=json&q_mode=simple&size=1000&sampling=neighbors`,
)
.then((res) => res.json())
.then((res) =>
- res.results.filter((waste) => typeof waste["ID"] !== "undefined")
+ res.results.filter((waste) => typeof waste["ID"] !== "undefined"),
) // handle Koumoul missing ID
.then((wasteRes) =>
fetch(
- "https://data.ademe.fr/data-fair/api/v1/datasets/que-faire-de-mes-dechets-liens/lines?format=json&q_mode=simple&size=1000&sampling=neighbors"
+ "https://data.ademe.fr/data-fair/api/v1/datasets/que-faire-de-mes-dechets-liens/lines?format=json&q_mode=simple&size=1000&sampling=neighbors",
)
.then((res) => res.json())
.then((res) => res.results)
@@ -35,7 +35,7 @@ exports.createPages = ({ graphql, actions: { createPage } }) => {
}
return tempWaste.map((waste) => ({
...waste,
- slug: slug(waste[`Nom`], { locale: "fr"}),
+ slug: slug(waste[`Nom`], { locale: "fr" }),
map:
waste["Bdd"] === "sinoe" ||
waste["Bdd"] === "google" ||
@@ -45,10 +45,10 @@ exports.createPages = ({ graphql, actions: { createPage } }) => {
links: linkRes.filter((link) =>
link["Produits_associes"]
.split("; ")
- .includes(waste["ID"].split("_")[0])
+ .includes(waste["ID"].split("_")[0]),
),
}));
- })
+ }),
)
.then((res) =>
res.forEach((product) => {
@@ -57,6 +57,6 @@ exports.createPages = ({ graphql, actions: { createPage } }) => {
component: path.resolve("./src/templates/product.js"),
context: { product },
});
- })
- )
+ }),
+ );
};
diff --git a/package.json b/package.json
index 90e184d..4413356 100644
--- a/package.json
+++ b/package.json
@@ -42,6 +42,7 @@
},
"devDependencies": {
"@babel/preset-typescript": "^7.24.7",
+ "@eslint/js": "^9.10.0",
"@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^6.5.0",
"@testing-library/react": "^16.0.0",
@@ -50,14 +51,18 @@
"@types/node": "^20.14.10",
"@types/react": "^18.3.4",
"@types/react-dom": "^18.3.0",
+ "eslint": "^9.10.0",
+ "eslint-plugin-react": "^7.35.2",
"gatsby-cli": "^5.13.3",
"gatsby-plugin-root-import": "^2.0.9",
"gatsby-plugin-webpack-bundle-analyser-v2": "^1.1.32",
+ "globals": "^15.9.0",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"prettier": "^3.3.2",
"ts-jest": "^29.2.4",
"typescript": "^5.6.2",
+ "typescript-eslint": "^8.5.0",
"webpack": "^5.94.0",
"webpack-cli": "^5.1.4"
},
diff --git a/src/components/base/Accordion.tsx b/src/components/base/Accordion.tsx
index a55bf8f..9466d0e 100644
--- a/src/components/base/Accordion.tsx
+++ b/src/components/base/Accordion.tsx
@@ -2,14 +2,14 @@ import React, { useState } from "react";
import styled from "styled-components";
type AccordionItem = {
- title: string
- content: React.ReactElement | string
-}
+ title: string;
+ content: React.ReactElement | string;
+};
const TitleWrapper = styled.h3`
margin: 0;
padding: 0;
-`
+`;
const Title = styled.button<{ $expanded?: boolean }>`
width: 100%;
display: flex;
@@ -18,7 +18,7 @@ const Title = styled.button<{ $expanded?: boolean }>`
jutify-content: space-between;
padding: 1rem;
cursor: pointer;
- transition: .25s;
+ transition: 0.25s;
user-select: none;
-webkit-user-select: none;
-webkit-appearance: button;
@@ -30,7 +30,7 @@ const Title = styled.button<{ $expanded?: boolean }>`
}
${({ $expanded }) => $expanded && `background: #E3E3FD;`}
-`
+`;
const Chevron = styled.svg<{ $expanded: boolean }>`
---rotation: rotate(180deg);
@@ -38,36 +38,34 @@ const Chevron = styled.svg<{ $expanded: boolean }>`
width: 10px;
height: 10px;
margin-left: auto;
- transition: .25s;
+ transition: 0.25s;
will-change: transform;
transform: var(---rotation);
${({ $expanded }) => $expanded && `---rotation: rotate(0deg);`}
-`
+`;
const AccordionItemWrapper = styled.div`
- border-top: 1px solid rgba(0, 0, 0, .1);
- border-bottom: 1px solid rgba(0, 0, 0, .1);
-`
-
+ border-top: 1px solid rgba(0, 0, 0, 0.1);
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+`;
-const Content = styled.div<{ $expanded?: boolean; }> `
+const Content = styled.div<{ $expanded?: boolean }>`
display: none;
padding: 1rem;
${({ $expanded }) => $expanded && `display: block;`}
-`
+`;
export default function Accordion({ items }: { items: AccordionItem[] }) {
- const [expandedItem, setExpandedItem] = useState(null)
+ const [expandedItem, setExpandedItem] = useState(null);
return (
{items.map(({ title, content }, index) => {
- const expanded = expandedItem === index
- const id = `accordion-item-${index}`
+ const expanded = expandedItem === index;
+ const id = `accordion-item-${index}`;
return (
-
+
setExpandedItem(expanded ? null : index)}
@@ -79,9 +77,20 @@ export default function Accordion({ items }: { items: AccordionItem[] }) {
>
{title}
-
-
+
+
@@ -91,9 +100,11 @@ export default function Accordion({ items }: { items: AccordionItem[] }) {
id={id}
$expanded={expanded}
data-testid={`accordion-content`}
- >{content}
+ >
+ {content}
+
- )
+ );
})}
);
diff --git a/src/components/layout/Contact.js b/src/components/layout/Contact.js
index c90eed5..c8faa56 100644
--- a/src/components/layout/Contact.js
+++ b/src/components/layout/Contact.js
@@ -63,7 +63,7 @@ export default function Contact(props) {
const mutation = useMutation({
mutationFn: (formData) => {
return fetch("/", { method: "post", body: formData });
- }
+ },
});
return (
@@ -96,7 +96,7 @@ export default function Contact(props) {
"form-name",
["integration", "autre"].includes(user.objet)
? "contact"
- : "bug"
+ : "bug",
);
Object.keys(user).map((key) => formData.append(key, user[key]));
mutation.mutate(formData);
diff --git a/src/components/layout/Footer.js b/src/components/layout/Footer.js
index 4a32698..393b76e 100644
--- a/src/components/layout/Footer.js
+++ b/src/components/layout/Footer.js
@@ -16,7 +16,8 @@ const Wrapper = styled.footer`
transition: all 600ms;
`;
const Content = styled.div`
- max-width: ${(props) => props.width || props.theme.widths.maxWidthWithGutters};
+ max-width: ${(props) =>
+ props.width || props.theme.widths.maxWidthWithGutters};
margin: 0 auto;
padding: 2rem 1rem 1rem;
`;
diff --git a/src/components/layout/web/Seo.js b/src/components/layout/web/Seo.js
index 9fef077..fcb3f9b 100644
--- a/src/components/layout/web/Seo.js
+++ b/src/components/layout/web/Seo.js
@@ -38,7 +38,10 @@ const SEO = (props) => {
-
+
{seo.url && }
diff --git a/src/components/misc/Bin.js b/src/components/misc/Bin.js
index f45d6c4..fa03341 100644
--- a/src/components/misc/Bin.js
+++ b/src/components/misc/Bin.js
@@ -125,7 +125,8 @@ const Position = styled.div`
transform: rotate(${(props) => (props.$position["y"] === "top" ? 180 : 0)}deg)
translateX(
${(props) =>
- (props.$position["y"] === "bottom" && props.$position["x"] === "right") ||
+ (props.$position["y"] === "bottom" &&
+ props.$position["x"] === "right") ||
(props.$position["y"] === "top" && props.$position["x"] === "left")
? -8.3125
: 0}rem
diff --git a/src/components/misc/MapWrapper.tsx b/src/components/misc/MapWrapper.tsx
index e875709..b28471f 100644
--- a/src/components/misc/MapWrapper.tsx
+++ b/src/components/misc/MapWrapper.tsx
@@ -1,4 +1,4 @@
-import React, { useState, useContext, useEffect } from "react"
+import React, { useState, useContext, useEffect } from "react";
import styled, { keyframes, ThemeContext } from "styled-components";
import { Map, Marker, Overlay, ZoomControl } from "pigeon-maps";
@@ -85,7 +85,7 @@ export default function MapWrapper(props) {
);
const themeContext = useContext(ThemeContext);
-
+
useEffect(() => {
if (address.latitude && address.longitude) {
window._paq?.push(["trackEvent", "Map", "Adresse"]);
@@ -105,10 +105,7 @@ export default function MapWrapper(props) {
setCenter={setCenter}
setZoom={setZoom}
/>
-
+
{list ? (
diff --git a/src/components/misc/mapWrapper/address/TextInput.tsx b/src/components/misc/mapWrapper/address/TextInput.tsx
index aa09d10..79f1336 100644
--- a/src/components/misc/mapWrapper/address/TextInput.tsx
+++ b/src/components/misc/mapWrapper/address/TextInput.tsx
@@ -37,7 +37,6 @@ export default React.forwardRef(function TextInput(
},
ref,
) {
-
return (
{
useEffect(() => {
setTheme(
- window.location.search.includes("theme=night") ? "night" : "default"
+ window.location.search.includes("theme=night") ? "night" : "default",
);
}, []);
return (
diff --git a/src/views/home/ProDisclaimer.tsx b/src/views/home/ProDisclaimer.tsx
index 399613d..611f12d 100644
--- a/src/views/home/ProDisclaimer.tsx
+++ b/src/views/home/ProDisclaimer.tsx
@@ -4,12 +4,32 @@ import styled from "styled-components";
const Wrapper = styled.div`
margin-top: 1rem;
-`
+`;
export default function ProDisclaimer() {
return (
- Actuellement, l’ensemble des recommandations ne concerne que les particuliers. Pour des informations à destination des professionnels, veuillez consulter le site https://economie-circulaire.ademe.fr/dechets-activites-economiques.
}]} />
+
+ Actuellement, l’ensemble des recommandations ne concerne que les
+ particuliers. Pour des informations à destination des
+ professionnels, veuillez consulter le site{" "}
+
+ https://economie-circulaire.ademe.fr/dechets-activites-economiques
+
+ .
+
+ ),
+ },
+ ]}
+ />
);
}
diff --git a/tests/Accordion.test.tsx b/tests/Accordion.test.tsx
index 22975fb..a694cc9 100644
--- a/tests/Accordion.test.tsx
+++ b/tests/Accordion.test.tsx
@@ -1,15 +1,23 @@
-import React from 'react'
-import { render, screen } from '@testing-library/react'
-import userEvent from '@testing-library/user-event'
-import '@testing-library/jest-dom'
-import Accordion from '../src/components/base/Accordion'
+import React from "react";
+import { render, screen } from "@testing-library/react";
+import userEvent from "@testing-library/user-event";
+import "@testing-library/jest-dom";
+import Accordion from "../src/components/base/Accordion";
-test('Accordion : un clic sur le titre affiche le contenu', async () => {
+test("Accordion : un clic sur le titre affiche le contenu", async () => {
render(
-
- )
+ ,
+ );
- expect(screen.getByTestId('accordion-content')).not.toBeVisible()
- await userEvent.click(screen.getByTestId('accordion-button'))
- expect(screen.getByTestId('accordion-content')).toBeVisible()
-})
+ expect(screen.getByTestId("accordion-content")).not.toBeVisible();
+ await userEvent.click(screen.getByTestId("accordion-button"));
+ expect(screen.getByTestId("accordion-content")).toBeVisible();
+});
diff --git a/tsconfig.json b/tsconfig.json
index bc1852c..2e802b0 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -9,12 +9,12 @@
// "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
/* Language and Environment */
- "target": "esnext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
+ "target": "esnext" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
"lib": [
"dom",
"esnext"
- ], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
- "jsx": "react", /* Specify what JSX code is generated. */
+ ] /* Specify a set of bundled library declaration files that describe the target runtime environment. */,
+ "jsx": "react" /* Specify what JSX code is generated. */,
// "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */
@@ -24,32 +24,20 @@
// "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
/* Modules */
- "module": "esnext", /* Specify what module code is generated. */
+ "module": "esnext" /* Specify what module code is generated. */,
// "rootDir": "./", /* Specify the root folder within your source files. */
- "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
+ "moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */,
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
"paths": {
- "components/*": [
- "src/components/*"
- ],
- "views/*": [
- "src/views/*"
- ],
- "utils/*": [
- "src/utils/*"
- ],
- "hooks/*": [
- "src/hooks/*"
- ]
+ "components/*": ["src/components/*"],
+ "views/*": ["src/views/*"],
+ "utils/*": ["src/utils/*"],
+ "hooks/*": ["src/hooks/*"]
},
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
// "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
- "types": [
- "node",
- "jest",
- "@testing-library/jest-dom"
- ],
+ "types": ["node", "jest", "@testing-library/jest-dom"],
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
// "resolveJsonModule": true, /* Enable importing .json files */
// "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */
@@ -84,11 +72,11 @@
/* Interop Constraints */
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
- "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */
+ "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */,
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
- "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
+ "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */,
/* Type Checking */
- "strict": true, /* Enable all strict type-checking options. */
+ "strict": true /* Enable all strict type-checking options. */,
// "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */
// "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
diff --git a/yarn.lock b/yarn.lock
index db4cbd6..c3fda7d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1330,18 +1330,27 @@
resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3"
integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==
-"@eslint-community/eslint-utils@^4.2.0":
+"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
version "4.4.0"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
dependencies:
eslint-visitor-keys "^3.3.0"
-"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1":
+"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0", "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1":
version "4.11.0"
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae"
integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==
+"@eslint/config-array@^0.18.0":
+ version "0.18.0"
+ resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.18.0.tgz#37d8fe656e0d5e3dbaea7758ea56540867fd074d"
+ integrity sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==
+ dependencies:
+ "@eslint/object-schema" "^2.1.4"
+ debug "^4.3.1"
+ minimatch "^3.1.2"
+
"@eslint/eslintrc@^0.4.3":
version "0.4.3"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
@@ -1372,11 +1381,43 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
+"@eslint/eslintrc@^3.1.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6"
+ integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==
+ 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.0"
+ minimatch "^3.1.2"
+ strip-json-comments "^3.1.1"
+
"@eslint/js@8.57.0":
version "8.57.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f"
integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
+"@eslint/js@9.10.0", "@eslint/js@^9.10.0":
+ version "9.10.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.10.0.tgz#eaa3cb0baec497970bb29e43a153d0d5650143c6"
+ integrity sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==
+
+"@eslint/object-schema@^2.1.4":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843"
+ integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==
+
+"@eslint/plugin-kit@^0.1.0":
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.1.0.tgz#809b95a0227ee79c3195adfb562eb94352e77974"
+ integrity sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==
+ dependencies:
+ levn "^0.4.1"
+
"@gatsbyjs/parcel-namer-relative-to-cwd@^2.13.1":
version "2.13.1"
resolved "https://registry.yarnpkg.com/@gatsbyjs/parcel-namer-relative-to-cwd/-/parcel-namer-relative-to-cwd-2.13.1.tgz#79d2692330a942394200c9bf3e820a4e55075ffb"
@@ -1657,6 +1698,11 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
+"@humanwhocodes/retry@^0.3.0":
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570"
+ integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==
+
"@isaacs/cliui@^8.0.2":
version "8.0.2"
resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
@@ -3731,6 +3777,21 @@
resolved "https://registry.yarnpkg.com/@types/yoga-layout/-/yoga-layout-1.9.2.tgz#efaf9e991a7390dc081a0b679185979a83a9639a"
integrity sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==
+"@typescript-eslint/eslint-plugin@8.5.0":
+ version "8.5.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.5.0.tgz#7c1863693a98371703686e1c0fac64ffc576cdb1"
+ integrity sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==
+ dependencies:
+ "@eslint-community/regexpp" "^4.10.0"
+ "@typescript-eslint/scope-manager" "8.5.0"
+ "@typescript-eslint/type-utils" "8.5.0"
+ "@typescript-eslint/utils" "8.5.0"
+ "@typescript-eslint/visitor-keys" "8.5.0"
+ graphemer "^1.4.0"
+ ignore "^5.3.1"
+ natural-compare "^1.4.0"
+ ts-api-utils "^1.3.0"
+
"@typescript-eslint/eslint-plugin@^5.5.0", "@typescript-eslint/eslint-plugin@^5.60.1":
version "5.62.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db"
@@ -3754,6 +3815,17 @@
dependencies:
"@typescript-eslint/utils" "5.62.0"
+"@typescript-eslint/parser@8.5.0":
+ version "8.5.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.5.0.tgz#d590e1ef9f31f26d423999ad3f687723247e6bcc"
+ integrity sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==
+ dependencies:
+ "@typescript-eslint/scope-manager" "8.5.0"
+ "@typescript-eslint/types" "8.5.0"
+ "@typescript-eslint/typescript-estree" "8.5.0"
+ "@typescript-eslint/visitor-keys" "8.5.0"
+ debug "^4.3.4"
+
"@typescript-eslint/parser@^5.5.0", "@typescript-eslint/parser@^5.60.1":
version "5.62.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7"
@@ -3772,6 +3844,14 @@
"@typescript-eslint/types" "5.62.0"
"@typescript-eslint/visitor-keys" "5.62.0"
+"@typescript-eslint/scope-manager@8.5.0":
+ version "8.5.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz#385341de65b976f02b295b8aca54bb4ffd6b5f07"
+ integrity sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==
+ dependencies:
+ "@typescript-eslint/types" "8.5.0"
+ "@typescript-eslint/visitor-keys" "8.5.0"
+
"@typescript-eslint/type-utils@5.62.0":
version "5.62.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a"
@@ -3782,11 +3862,26 @@
debug "^4.3.4"
tsutils "^3.21.0"
+"@typescript-eslint/type-utils@8.5.0":
+ version "8.5.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.5.0.tgz#6215b23aa39dbbd8dde0a4ef9ee0f745410c29b1"
+ integrity sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==
+ dependencies:
+ "@typescript-eslint/typescript-estree" "8.5.0"
+ "@typescript-eslint/utils" "8.5.0"
+ debug "^4.3.4"
+ ts-api-utils "^1.3.0"
+
"@typescript-eslint/types@5.62.0":
version "5.62.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f"
integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==
+"@typescript-eslint/types@8.5.0":
+ version "8.5.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.5.0.tgz#4465d99331d1276f8fb2030e4f9c73fe01a05bf9"
+ integrity sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==
+
"@typescript-eslint/typescript-estree@5.62.0":
version "5.62.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b"
@@ -3800,6 +3895,20 @@
semver "^7.3.7"
tsutils "^3.21.0"
+"@typescript-eslint/typescript-estree@8.5.0":
+ version "8.5.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.5.0.tgz#6e5758cf2f63aa86e9ddfa4e284e2e0b81b87557"
+ integrity sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==
+ dependencies:
+ "@typescript-eslint/types" "8.5.0"
+ "@typescript-eslint/visitor-keys" "8.5.0"
+ debug "^4.3.4"
+ fast-glob "^3.3.2"
+ is-glob "^4.0.3"
+ minimatch "^9.0.4"
+ semver "^7.6.0"
+ ts-api-utils "^1.3.0"
+
"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0":
version "5.62.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86"
@@ -3814,6 +3923,16 @@
eslint-scope "^5.1.1"
semver "^7.3.7"
+"@typescript-eslint/utils@8.5.0":
+ version "8.5.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.5.0.tgz#4d4ffed96d0654546a37faa5b84bdce16d951634"
+ integrity sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.4.0"
+ "@typescript-eslint/scope-manager" "8.5.0"
+ "@typescript-eslint/types" "8.5.0"
+ "@typescript-eslint/typescript-estree" "8.5.0"
+
"@typescript-eslint/visitor-keys@5.62.0":
version "5.62.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e"
@@ -3822,6 +3941,14 @@
"@typescript-eslint/types" "5.62.0"
eslint-visitor-keys "^3.3.0"
+"@typescript-eslint/visitor-keys@8.5.0":
+ version "8.5.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz#13028df3b866d2e3e2e2cc4193cf2c1e0e04c4bf"
+ integrity sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==
+ dependencies:
+ "@typescript-eslint/types" "8.5.0"
+ eslint-visitor-keys "^3.4.3"
+
"@ungap/structured-clone@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
@@ -4053,7 +4180,7 @@ acorn@^7.1.1, acorn@^7.4.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-acorn@^8.0.4, acorn@^8.1.0, acorn@^8.11.0, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0:
+acorn@^8.0.4, acorn@^8.1.0, acorn@^8.11.0, acorn@^8.12.0, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0:
version "8.12.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248"
integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
@@ -6961,7 +7088,7 @@ eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.6.0:
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596"
integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==
-eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.32.2:
+eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.32.2, eslint-plugin-react@^7.35.2:
version "7.35.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.35.2.tgz#d32500d3ec268656d5071918bfec78cfd8b070ed"
integrity sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==
@@ -7008,6 +7135,14 @@ eslint-scope@^7.2.2:
esrecurse "^4.3.0"
estraverse "^5.2.0"
+eslint-scope@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.2.tgz#5cbb33d4384c9136083a71190d548158fe128f94"
+ integrity sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^5.2.0"
+
eslint-utils@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
@@ -7030,6 +7165,11 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
+eslint-visitor-keys@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb"
+ integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==
+
eslint-webpack-plugin@^2.7.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.7.0.tgz#0525793a4f8c652c1c6d863995ce1e0f2dcbd143"
@@ -7143,6 +7283,46 @@ eslint@^8.3.0:
strip-ansi "^6.0.1"
text-table "^0.2.0"
+eslint@^9.10.0:
+ version "9.10.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.10.0.tgz#0bd74d7fe4db77565d0e7f57c7df6d2b04756806"
+ integrity sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.2.0"
+ "@eslint-community/regexpp" "^4.11.0"
+ "@eslint/config-array" "^0.18.0"
+ "@eslint/eslintrc" "^3.1.0"
+ "@eslint/js" "9.10.0"
+ "@eslint/plugin-kit" "^0.1.0"
+ "@humanwhocodes/module-importer" "^1.0.1"
+ "@humanwhocodes/retry" "^0.3.0"
+ "@nodelib/fs.walk" "^1.2.8"
+ ajv "^6.12.4"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.3.2"
+ escape-string-regexp "^4.0.0"
+ eslint-scope "^8.0.2"
+ eslint-visitor-keys "^4.0.0"
+ espree "^10.1.0"
+ esquery "^1.5.0"
+ esutils "^2.0.2"
+ fast-deep-equal "^3.1.3"
+ file-entry-cache "^8.0.0"
+ find-up "^5.0.0"
+ glob-parent "^6.0.2"
+ ignore "^5.2.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ is-path-inside "^3.0.3"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ lodash.merge "^4.6.2"
+ minimatch "^3.1.2"
+ natural-compare "^1.4.0"
+ optionator "^0.9.3"
+ strip-ansi "^6.0.1"
+ text-table "^0.2.0"
+
esniff@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308"
@@ -7153,6 +7333,15 @@ esniff@^2.0.1:
event-emitter "^0.3.5"
type "^2.7.2"
+espree@^10.0.1, espree@^10.1.0:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-10.1.0.tgz#8788dae611574c0f070691f522e4116c5a11fc56"
+ integrity sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==
+ dependencies:
+ acorn "^8.12.0"
+ acorn-jsx "^5.3.2"
+ eslint-visitor-keys "^4.0.0"
+
espree@^7.3.0, espree@^7.3.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
@@ -7181,7 +7370,7 @@ esprima@^4.0.0, esprima@^4.0.1:
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-esquery@^1.4.0, esquery@^1.4.2:
+esquery@^1.4.0, esquery@^1.4.2, esquery@^1.5.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
@@ -7376,7 +7565,7 @@ fast-fifo@^1.2.0, fast-fifo@^1.3.2:
resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c"
integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==
-fast-glob@^3.2.9, fast-glob@^3.3.0:
+fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
@@ -7460,6 +7649,13 @@ file-entry-cache@^6.0.1:
dependencies:
flat-cache "^3.0.4"
+file-entry-cache@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f"
+ integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==
+ dependencies:
+ flat-cache "^4.0.0"
+
file-loader@^6.2.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d"
@@ -7555,6 +7751,14 @@ flat-cache@^3.0.4:
keyv "^4.5.3"
rimraf "^3.0.2"
+flat-cache@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c"
+ integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==
+ dependencies:
+ flatted "^3.2.9"
+ keyv "^4.5.4"
+
flat@^5.0.2:
version "5.0.2"
resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
@@ -8377,6 +8581,16 @@ globals@^13.19.0, globals@^13.2.0, globals@^13.6.0, globals@^13.9.0:
dependencies:
type-fest "^0.20.2"
+globals@^14.0.0:
+ version "14.0.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
+ integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
+
+globals@^15.9.0:
+ version "15.9.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-15.9.0.tgz#e9de01771091ffbc37db5714dab484f9f69ff399"
+ integrity sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==
+
globalthis@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236"
@@ -8832,7 +9046,7 @@ ignore@^4.0.6:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
-ignore@^5.2.0:
+ignore@^5.2.0, ignore@^5.3.1:
version "5.3.2"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
@@ -10532,7 +10746,7 @@ jsonpointer@^5.0.0:
object.assign "^4.1.4"
object.values "^1.1.6"
-keyv@^4.0.0, keyv@^4.5.3:
+keyv@^4.0.0, keyv@^4.5.3, keyv@^4.5.4:
version "4.5.4"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
@@ -13539,7 +13753,7 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3:
+semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3:
version "7.6.3"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
@@ -14081,16 +14295,7 @@ string-similarity@^1.2.2:
lodash.map "^4.6.0"
lodash.maxby "^4.6.0"
-"string-width-cjs@npm:string-width@^4.2.0":
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
- integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
- dependencies:
- emoji-regex "^8.0.0"
- is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.1"
-
-string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3:
+"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -14193,7 +14398,7 @@ stringify-object@^3.3.0:
is-obj "^1.0.1"
is-regexp "^1.0.0"
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -14214,13 +14419,6 @@ strip-ansi@^5.2.0:
dependencies:
ansi-regex "^4.1.0"
-strip-ansi@^6.0.0, strip-ansi@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
- integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
- dependencies:
- ansi-regex "^5.0.1"
-
strip-ansi@^7.0.1:
version "7.1.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
@@ -14747,6 +14945,11 @@ tryer@^1.0.1:
resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
+ts-api-utils@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1"
+ integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==
+
ts-interface-checker@^0.1.9:
version "0.1.13"
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
@@ -14939,6 +15142,15 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
+typescript-eslint@^8.5.0:
+ version "8.5.0"
+ resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.5.0.tgz#041f6c302d0e9a8e116a33d60b0bb19f34036dd7"
+ integrity sha512-uD+XxEoSIvqtm4KE97etm32Tn5MfaZWgWfMMREStLxR6JzvHkc2Tkj7zhTEK5XmtpTmKHNnG8Sot6qDfhHtR1Q==
+ dependencies:
+ "@typescript-eslint/eslint-plugin" "8.5.0"
+ "@typescript-eslint/parser" "8.5.0"
+ "@typescript-eslint/utils" "8.5.0"
+
typescript@^5.6.2:
version "5.6.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0"
@@ -15891,7 +16103,7 @@ workbox-window@^4.3.1:
dependencies:
workbox-core "^4.3.1"
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -15909,15 +16121,6 @@ wrap-ansi@^6.2.0:
string-width "^4.1.0"
strip-ansi "^6.0.0"
-wrap-ansi@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
- integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
- dependencies:
- ansi-styles "^4.0.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
-
wrap-ansi@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"