diff --git a/markdown/chapters/meandeck/basics.md b/markdown/chapters/01-meandeck/01-basics.md
similarity index 99%
rename from markdown/chapters/meandeck/basics.md
rename to markdown/chapters/01-meandeck/01-basics.md
index e7ed7c36..4056fa8a 100644
--- a/markdown/chapters/meandeck/basics.md
+++ b/markdown/chapters/01-meandeck/01-basics.md
@@ -1,7 +1,6 @@
---
authors: Doishy
banner: DD
-order: 0
title: Core Concepts
---
diff --git a/markdown/chapters/meandeck/simple-piles.md b/markdown/chapters/01-meandeck/02-simple-piles.md
similarity index 99%
rename from markdown/chapters/meandeck/simple-piles.md
rename to markdown/chapters/01-meandeck/02-simple-piles.md
index 3bd2fd47..df28c9a1 100644
--- a/markdown/chapters/meandeck/simple-piles.md
+++ b/markdown/chapters/01-meandeck/02-simple-piles.md
@@ -1,7 +1,6 @@
---
authors: angrybacon, Labman13, 7TeenWriters, Doishy
banner: IU
-order: 1
title: Simple Piles
---
diff --git a/markdown/chapters/meandeck/brainstorm.md b/markdown/chapters/01-meandeck/03-brainstorm.md
similarity index 99%
rename from markdown/chapters/meandeck/brainstorm.md
rename to markdown/chapters/01-meandeck/03-brainstorm.md
index b90bb3f3..ded2af92 100644
--- a/markdown/chapters/meandeck/brainstorm.md
+++ b/markdown/chapters/01-meandeck/03-brainstorm.md
@@ -1,7 +1,6 @@
---
authors: angrybacon, Doishy
banner: BS | MMQ
-order: 2
title: Brainstorm Piles
---
diff --git a/markdown/chapters/meandeck/ptt.md b/markdown/chapters/01-meandeck/04-ptt.md
similarity index 99%
rename from markdown/chapters/meandeck/ptt.md
rename to markdown/chapters/01-meandeck/04-ptt.md
index f48d9262..f5ab4cd6 100644
--- a/markdown/chapters/meandeck/ptt.md
+++ b/markdown/chapters/01-meandeck/04-ptt.md
@@ -1,7 +1,6 @@
---
authors: Doishy
banner: Sundial of the Infinite
-order: 3
title: Pass-the-Turn Piles
---
diff --git a/markdown/chapters/meandeck/interaction.md b/markdown/chapters/01-meandeck/05-interaction.md
similarity index 99%
rename from markdown/chapters/meandeck/interaction.md
rename to markdown/chapters/01-meandeck/05-interaction.md
index aa6405d1..6d0a6970 100644
--- a/markdown/chapters/meandeck/interaction.md
+++ b/markdown/chapters/01-meandeck/05-interaction.md
@@ -1,7 +1,6 @@
---
authors: angrybacon, Labman13, Doishy
banner: Counterspell | TMP
-order: 4
title: Playing Around Interaction
---
diff --git a/markdown/chapters/meandeck/deck-construction.md b/markdown/chapters/01-meandeck/06-deck-construction.md
similarity index 99%
rename from markdown/chapters/meandeck/deck-construction.md
rename to markdown/chapters/01-meandeck/06-deck-construction.md
index 0f4c4e23..8a81bcb3 100644
--- a/markdown/chapters/meandeck/deck-construction.md
+++ b/markdown/chapters/01-meandeck/06-deck-construction.md
@@ -1,7 +1,6 @@
---
authors: Otterlady, Doishy
banner: Urza's Blueprints
-order: 5
title: Deck Construction
---
diff --git a/markdown/chapters/meandeck/sideboard.md b/markdown/chapters/01-meandeck/07-sideboard.md
similarity index 99%
rename from markdown/chapters/meandeck/sideboard.md
rename to markdown/chapters/01-meandeck/07-sideboard.md
index 410ac756..88a4933f 100644
--- a/markdown/chapters/meandeck/sideboard.md
+++ b/markdown/chapters/01-meandeck/07-sideboard.md
@@ -1,7 +1,6 @@
---
authors: Nevilshute, Hulahula, Emidln, Monkeyscantcry, Romariovidal, Doishy
banner: Pyroblast
-order: 6
title: Sideboarding
---
diff --git a/markdown/chapters/meandeck/practice.md b/markdown/chapters/01-meandeck/08-practice.md
similarity index 99%
rename from markdown/chapters/meandeck/practice.md
rename to markdown/chapters/01-meandeck/08-practice.md
index 21ab1c5c..a9a08427 100644
--- a/markdown/chapters/meandeck/practice.md
+++ b/markdown/chapters/01-meandeck/08-practice.md
@@ -1,7 +1,6 @@
---
authors: Doishy
banner: Unburden
-order: 7
title: Practice
---
diff --git a/markdown/chapters/ddft/basics.md b/markdown/chapters/02-ddft/01-basics.md
similarity index 99%
rename from markdown/chapters/ddft/basics.md
rename to markdown/chapters/02-ddft/01-basics.md
index 807515b3..f8347814 100644
--- a/markdown/chapters/ddft/basics.md
+++ b/markdown/chapters/02-ddft/01-basics.md
@@ -1,6 +1,5 @@
---
banner: ToA
-order: 0
title: The Basics
---
diff --git a/markdown/chapters/ddft/brainstorm.md b/markdown/chapters/02-ddft/02-brainstorm.md
similarity index 100%
rename from markdown/chapters/ddft/brainstorm.md
rename to markdown/chapters/02-ddft/02-brainstorm.md
diff --git a/markdown/chapters/ddft/dd-vs-hate.md b/markdown/chapters/02-ddft/03-dd-vs-hate.md
similarity index 100%
rename from markdown/chapters/ddft/dd-vs-hate.md
rename to markdown/chapters/02-ddft/03-dd-vs-hate.md
diff --git a/markdown/chapters/ddft/echo.md b/markdown/chapters/02-ddft/04-echo.md
similarity index 100%
rename from markdown/chapters/ddft/echo.md
rename to markdown/chapters/02-ddft/04-echo.md
diff --git a/markdown/chapters/ddft/pass-the-turn.md b/markdown/chapters/02-ddft/05-pass-the-turn.md
similarity index 100%
rename from markdown/chapters/ddft/pass-the-turn.md
rename to markdown/chapters/02-ddft/05-pass-the-turn.md
diff --git a/markdown/chapters/ddft/uncommon-piles.md b/markdown/chapters/02-ddft/06-uncommon-piles.md
similarity index 100%
rename from markdown/chapters/ddft/uncommon-piles.md
rename to markdown/chapters/02-ddft/06-uncommon-piles.md
diff --git a/markdown/chapters/ddft/winning-without-dd.md b/markdown/chapters/02-ddft/07-winning-without-dd.md
similarity index 100%
rename from markdown/chapters/ddft/winning-without-dd.md
rename to markdown/chapters/02-ddft/07-winning-without-dd.md
diff --git a/markdown/chapters/ddeft/basics.md b/markdown/chapters/03-ddeft/basics.md
similarity index 99%
rename from markdown/chapters/ddeft/basics.md
rename to markdown/chapters/03-ddeft/basics.md
index 957e1e9d..097faa66 100644
--- a/markdown/chapters/ddeft/basics.md
+++ b/markdown/chapters/03-ddeft/basics.md
@@ -1,7 +1,6 @@
---
authors: UnOrthodoxBird
banner: EF
-order: 0
title: The Basics
---
diff --git a/markdown/chapters/entombsday/basics.md b/markdown/chapters/04-entombsday/01-basics.md
similarity index 99%
rename from markdown/chapters/entombsday/basics.md
rename to markdown/chapters/04-entombsday/01-basics.md
index 9ae25b5d..2a362427 100644
--- a/markdown/chapters/entombsday/basics.md
+++ b/markdown/chapters/04-entombsday/01-basics.md
@@ -1,7 +1,6 @@
---
authors: drynne
banner: Dark Petition
-order: 0
title: The Basics
---
diff --git a/markdown/chapters/entombsday/gameplay.md b/markdown/chapters/04-entombsday/02-gameplay.md
similarity index 99%
rename from markdown/chapters/entombsday/gameplay.md
rename to markdown/chapters/04-entombsday/02-gameplay.md
index da215cf5..398f2d11 100644
--- a/markdown/chapters/entombsday/gameplay.md
+++ b/markdown/chapters/04-entombsday/02-gameplay.md
@@ -1,7 +1,6 @@
---
authors: drynne
banner: Entomb
-order: 1
title: Playing the Deck
---
diff --git a/markdown/chapters/entombsday/deck-construction.md b/markdown/chapters/04-entombsday/03-deck-construction.md
similarity index 99%
rename from markdown/chapters/entombsday/deck-construction.md
rename to markdown/chapters/04-entombsday/03-deck-construction.md
index ba1b1cbf..75863682 100644
--- a/markdown/chapters/entombsday/deck-construction.md
+++ b/markdown/chapters/04-entombsday/03-deck-construction.md
@@ -1,7 +1,6 @@
---
authors: drynne
banner: Em
-order: 2
title: Deck Construction
---
diff --git a/markdown/chapters/entombsday/interaction.md b/markdown/chapters/04-entombsday/04-interaction.md
similarity index 99%
rename from markdown/chapters/entombsday/interaction.md
rename to markdown/chapters/04-entombsday/04-interaction.md
index 773f2a64..73c57ec1 100644
--- a/markdown/chapters/entombsday/interaction.md
+++ b/markdown/chapters/04-entombsday/04-interaction.md
@@ -1,7 +1,6 @@
---
authors: drynne
banner: SE
-order: 3
title: Playing Around Interaction
---
diff --git a/markdown/partials/license.md b/markdown/partials/license.md
index 76bebd27..3694c9c5 100644
--- a/markdown/partials/license.md
+++ b/markdown/partials/license.md
@@ -5,10 +5,10 @@ title: Licenses and Resources
The Wiki is unofficial _Magic: the Gathering_ fan content permitted under the
[Fan Content Policy][wizards:fcp]. Portions of the materials used such as mana
symbols and game mechanics are property of _Wizards of the Coast_. Card arts are
-made available from unaltered [Scryfall's API][scryfall:api] and are copyright
-_Wizard of the Coast_ or their respective artist for older sets. For cropped
-arts where the artist line of a card is not visible, the artists are mentioned
-in the accessible text.
+made available from the unaltered [Scryfall's API][scryfall:api] and are
+copyright _Wizard of the Coast_ or their respective artists for older sets. For
+cropped arts where the artist line of a card is not visible, the artists are
+mentioned in the accessible text.
Mana symbols are rendered using the _Mana_ icon font made available by [Andrew
Gioia][mana]. See their section about licensing for more details.
diff --git a/next-env.d.ts b/next-env.d.ts
index 4f11a03d..a4a7b3f5 100644
--- a/next-env.d.ts
+++ b/next-env.d.ts
@@ -2,4 +2,4 @@
///
// NOTE: This file should not be edited
-// see https://nextjs.org/docs/basic-features/typescript for more information.
+// see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information.
diff --git a/package.json b/package.json
index 3b3aa528..cd2c5856 100644
--- a/package.json
+++ b/package.json
@@ -12,9 +12,9 @@
"dev": "concurrently 'pnpm:dev:*' --names --prefix-colors auto",
"dev:next": "next dev",
"dev:scryfall": "pnpm run scryfall:dev",
- "lint": "pnpm run '/^lint:\\w+$/'",
+ "lint": "pnpm run '/^lint:[^:]+$/'",
"lint:code": "eslint",
- "lint:format": "pnpm run '/^lint:format:\\w+$/'",
+ "lint:format": "pnpm run '/^lint:format:[^:]+$/'",
"lint:format:code": "prettier --check --log-level warn puzzles/ scryfall/ src/",
"lint:format:wiki": "prettier --check --log-level warn markdown/",
"lint:prune": "knip",
@@ -28,60 +28,60 @@
"test:watch": "pnpm run test --verbose --watchAll"
},
"dependencies": {
- "@emotion/react": "11.13.0",
+ "@emotion/react": "11.13.3",
"@emotion/styled": "11.13.0",
- "@fontsource/libre-baskerville": "5.0.13",
- "@korumite/kiwi": "2.13.0",
+ "@fontsource/libre-baskerville": "5.1.0",
+ "@korumite/kiwi": "3.1.0",
"@mdi/js": "7.4.47",
"@mdi/react": "1.6.1",
- "@mui/material": "5.16.6",
- "@mui/system": "5.16.6",
- "@mui/utils": "5.16.6",
+ "@mui/material": "6.1.1",
+ "@mui/system": "6.1.1",
+ "@mui/utils": "6.1.1",
"@vercel/analytics": "1.3.1",
"async-sema": "3.1.1",
"mana-font": "1.15.9",
"mdast-util-find-and-replace": "3.0.1",
- "next": "14.2.5",
+ "next": "14.2.13",
"plaiceholder": "3.0.0",
"react": "18.3.1",
"react-dom": "18.3.1",
- "react-intersection-observer": "9.13.0",
+ "react-intersection-observer": "9.13.1",
"react-markdown": "9.0.1",
"react-syntax-highlighter": "15.5.0",
"rehype-slug": "6.0.0",
"remark-directive": "3.0.0",
"remark-gfm": "4.0.0",
"remark-toc": "9.0.0",
- "simple-icons": "13.3.0",
+ "simple-icons": "13.11.0",
"unified": "11.0.4",
"unist-util-select": "5.1.0",
"unist-util-visit": "5.0.0",
"zod": "3.23.8"
},
"devDependencies": {
- "@eslint/js": "9.8.0",
+ "@eslint/js": "9.11.1",
"@ianvs/prettier-plugin-sort-imports": "4.3.1",
"@korumite/ts": "1.1.0",
- "@testing-library/jest-dom": "6.4.8",
- "@testing-library/react": "16.0.0",
- "@types/jest": "29.5.12",
+ "@testing-library/jest-dom": "6.5.0",
+ "@testing-library/react": "16.0.1",
+ "@types/jest": "29.5.13",
"@types/mdast": "4.0.4",
- "@types/node": "20.14.13",
- "@types/react": "18.3.3",
+ "@types/node": "20.16.9",
+ "@types/react": "18.3.10",
"@types/react-dom": "18.3.0",
"@types/react-syntax-highlighter": "15.5.13",
- "@types/unist": "3.0.2",
- "concurrently": "8.2.2",
- "eslint": "9.8.0",
- "eslint-plugin-import": "2.29.1",
+ "@types/unist": "3.0.3",
+ "concurrently": "9.0.1",
+ "eslint": "9.11.1",
+ "eslint-plugin-import": "2.30.0",
"jest": "29.7.0",
"jest-environment-jsdom": "29.7.0",
- "knip": "5.27.0",
- "markdownlint-cli": "0.41.0",
+ "knip": "5.30.6",
+ "markdownlint-cli": "0.42.0",
"mdast-util-directive": "3.0.0",
"prettier": "3.3.3",
"ts-node": "10.9.2",
- "typescript": "5.5.4",
- "typescript-eslint": "7.18.0"
+ "typescript": "5.6.2",
+ "typescript-eslint": "8.7.0"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5cdce4c5..746c2fcd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -9,17 +9,17 @@ importers:
.:
dependencies:
'@emotion/react':
- specifier: 11.13.0
- version: 11.13.0(@types/react@18.3.3)(react@18.3.1)
+ specifier: 11.13.3
+ version: 11.13.3(@types/react@18.3.10)(react@18.3.1)
'@emotion/styled':
specifier: 11.13.0
- version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
+ version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1)
'@fontsource/libre-baskerville':
- specifier: 5.0.13
- version: 5.0.13
+ specifier: 5.1.0
+ version: 5.1.0
'@korumite/kiwi':
- specifier: 2.13.0
- version: 2.13.0
+ specifier: 3.1.0
+ version: 3.1.0
'@mdi/js':
specifier: 7.4.47
version: 7.4.47
@@ -27,17 +27,17 @@ importers:
specifier: 1.6.1
version: 1.6.1
'@mui/material':
- specifier: 5.16.6
- version: 5.16.6(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: 6.1.1
+ version: 6.1.1(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mui/system':
- specifier: 5.16.6
- version: 5.16.6(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
+ specifier: 6.1.1
+ version: 6.1.1(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1)
'@mui/utils':
- specifier: 5.16.6
- version: 5.16.6(@types/react@18.3.3)(react@18.3.1)
+ specifier: 6.1.1
+ version: 6.1.1(@types/react@18.3.10)(react@18.3.1)
'@vercel/analytics':
specifier: 1.3.1
- version: 1.3.1(next@14.2.5(@babel/core@7.24.6)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
+ version: 1.3.1(next@14.2.13(@babel/core@7.24.6)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
async-sema:
specifier: 3.1.1
version: 3.1.1
@@ -48,11 +48,11 @@ importers:
specifier: 3.0.1
version: 3.0.1
next:
- specifier: 14.2.5
- version: 14.2.5(@babel/core@7.24.6)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: 14.2.13
+ version: 14.2.13(@babel/core@7.24.6)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
plaiceholder:
specifier: 3.0.0
- version: 3.0.0(sharp@0.33.4)
+ version: 3.0.0(sharp@0.33.5)
react:
specifier: 18.3.1
version: 18.3.1
@@ -60,11 +60,11 @@ importers:
specifier: 18.3.1
version: 18.3.1(react@18.3.1)
react-intersection-observer:
- specifier: 9.13.0
- version: 9.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: 9.13.1
+ version: 9.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-markdown:
specifier: 9.0.1
- version: 9.0.1(@types/react@18.3.3)(react@18.3.1)
+ version: 9.0.1(@types/react@18.3.10)(react@18.3.1)
react-syntax-highlighter:
specifier: 15.5.0
version: 15.5.0(react@18.3.1)
@@ -81,8 +81,8 @@ importers:
specifier: 9.0.0
version: 9.0.0
simple-icons:
- specifier: 13.3.0
- version: 13.3.0
+ specifier: 13.11.0
+ version: 13.11.0
unified:
specifier: 11.0.4
version: 11.0.4
@@ -97,8 +97,8 @@ importers:
version: 3.23.8
devDependencies:
'@eslint/js':
- specifier: 9.8.0
- version: 9.8.0
+ specifier: 9.11.1
+ version: 9.11.1
'@ianvs/prettier-plugin-sort-imports':
specifier: 4.3.1
version: 4.3.1(prettier@3.3.3)
@@ -106,23 +106,23 @@ importers:
specifier: 1.1.0
version: 1.1.0
'@testing-library/jest-dom':
- specifier: 6.4.8
- version: 6.4.8
+ specifier: 6.5.0
+ version: 6.5.0
'@testing-library/react':
- specifier: 16.0.0
- version: 16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: 16.0.1
+ version: 16.0.1(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@types/jest':
- specifier: 29.5.12
- version: 29.5.12
+ specifier: 29.5.13
+ version: 29.5.13
'@types/mdast':
specifier: 4.0.4
version: 4.0.4
'@types/node':
- specifier: 20.14.13
- version: 20.14.13
+ specifier: 20.16.9
+ version: 20.16.9
'@types/react':
- specifier: 18.3.3
- version: 18.3.3
+ specifier: 18.3.10
+ version: 18.3.10
'@types/react-dom':
specifier: 18.3.0
version: 18.3.0
@@ -130,29 +130,29 @@ importers:
specifier: 15.5.13
version: 15.5.13
'@types/unist':
- specifier: 3.0.2
- version: 3.0.2
+ specifier: 3.0.3
+ version: 3.0.3
concurrently:
- specifier: 8.2.2
- version: 8.2.2
+ specifier: 9.0.1
+ version: 9.0.1
eslint:
- specifier: 9.8.0
- version: 9.8.0
+ specifier: 9.11.1
+ version: 9.11.1(jiti@2.0.0)
eslint-plugin-import:
- specifier: 2.29.1
- version: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)
+ specifier: 2.30.0
+ version: 2.30.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2))(eslint@9.11.1(jiti@2.0.0))
jest:
specifier: 29.7.0
- version: 29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.13)(typescript@5.5.4))
+ version: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2))
jest-environment-jsdom:
specifier: 29.7.0
version: 29.7.0
knip:
- specifier: 5.27.0
- version: 5.27.0(@types/node@20.14.13)(typescript@5.5.4)
+ specifier: 5.30.6
+ version: 5.30.6(@types/node@20.16.9)(typescript@5.6.2)
markdownlint-cli:
- specifier: 0.41.0
- version: 0.41.0
+ specifier: 0.42.0
+ version: 0.42.0
mdast-util-directive:
specifier: 3.0.0
version: 3.0.0
@@ -161,13 +161,13 @@ importers:
version: 3.3.3
ts-node:
specifier: 10.9.2
- version: 10.9.2(@types/node@20.14.13)(typescript@5.5.4)
+ version: 10.9.2(@types/node@20.16.9)(typescript@5.6.2)
typescript:
- specifier: 5.5.4
- version: 5.5.4
+ specifier: 5.6.2
+ version: 5.6.2
typescript-eslint:
- specifier: 7.18.0
- version: 7.18.0(eslint@9.8.0)(typescript@5.5.4)
+ specifier: 8.7.0
+ version: 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
packages:
@@ -397,6 +397,10 @@ packages:
resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==}
engines: {node: '>=6.9.0'}
+ '@babel/runtime@7.25.6':
+ resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==}
+ engines: {node: '>=6.9.0'}
+
'@babel/template@7.24.6':
resolution: {integrity: sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==}
engines: {node: '>=6.9.0'}
@@ -446,8 +450,8 @@ packages:
'@emotion/memoize@0.9.0':
resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==}
- '@emotion/react@11.13.0':
- resolution: {integrity: sha512-WkL+bw1REC2VNV1goQyfxjx1GYJkcc23CRQkXX+vZNLINyfI7o+uUn/rTGPt/xJ3bJHd5GcljgnxHf4wRw5VWQ==}
+ '@emotion/react@11.13.3':
+ resolution: {integrity: sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==}
peerDependencies:
'@types/react': '*'
react: '>=16.8.0'
@@ -458,6 +462,9 @@ packages:
'@emotion/serialize@1.3.0':
resolution: {integrity: sha512-jACuBa9SlYajnpIVXB+XOXnfJHyckDfe6fOpORIM6yhBDlqGuExvDdZYHDQGoDf3bZXGv7tNr+LpLjJqiEQ6EA==}
+ '@emotion/serialize@1.3.2':
+ resolution: {integrity: sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==}
+
'@emotion/sheet@1.4.0':
resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==}
@@ -471,6 +478,9 @@ packages:
'@types/react':
optional: true
+ '@emotion/unitless@0.10.0':
+ resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==}
+
'@emotion/unitless@0.9.0':
resolution: {integrity: sha512-TP6GgNZtmtFaFcsOgExdnfxLLpRDla4Q66tnenA9CktvVSdNKDvMVuUah4QvWPIpNjrWsGg3qeGo9a43QooGZQ==}
@@ -482,6 +492,9 @@ packages:
'@emotion/utils@1.4.0':
resolution: {integrity: sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==}
+ '@emotion/utils@1.4.1':
+ resolution: {integrity: sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==}
+
'@emotion/weak-memoize@0.4.0':
resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==}
@@ -491,28 +504,36 @@ packages:
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
- '@eslint-community/regexpp@4.11.0':
- resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
+ '@eslint-community/regexpp@4.11.1':
+ resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- '@eslint/config-array@0.17.1':
- resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==}
+ '@eslint/config-array@0.18.0':
+ resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/core@0.6.0':
+ resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/eslintrc@3.1.0':
resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/js@9.8.0':
- resolution: {integrity: sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==}
+ '@eslint/js@9.11.1':
+ resolution: {integrity: sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/object-schema@2.1.4':
resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@fontsource/libre-baskerville@5.0.13':
- resolution: {integrity: sha512-4RmjVL+W0Y0HbPz2jVXykFXpeu+NnE2xplGNcLEGSMkjSWM5fHH6tu3Vmzskfjp9j47/EQVfuQ0uIDEFmUd6iA==}
+ '@eslint/plugin-kit@0.2.0':
+ resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@fontsource/libre-baskerville@5.1.0':
+ resolution: {integrity: sha512-+NWyl39FNbrJDQixcJJAnnGMWBJZWtnLWjH2OLp+0VnHdsuVH2jnBPIqID0xschDYC497oKtQiVy0s0UUjb5/g==}
'@humanwhocodes/module-importer@1.0.1':
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
@@ -531,116 +552,108 @@ packages:
'@vue/compiler-sfc':
optional: true
- '@img/sharp-darwin-arm64@0.33.4':
- resolution: {integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==}
- engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-darwin-arm64@0.33.5':
+ resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [darwin]
- '@img/sharp-darwin-x64@0.33.4':
- resolution: {integrity: sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==}
- engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-darwin-x64@0.33.5':
+ resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [darwin]
- '@img/sharp-libvips-darwin-arm64@1.0.2':
- resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==}
- engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-libvips-darwin-arm64@1.0.4':
+ resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
cpu: [arm64]
os: [darwin]
- '@img/sharp-libvips-darwin-x64@1.0.2':
- resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==}
- engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-libvips-darwin-x64@1.0.4':
+ resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
cpu: [x64]
os: [darwin]
- '@img/sharp-libvips-linux-arm64@1.0.2':
- resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==}
- engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-libvips-linux-arm64@1.0.4':
+ resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
cpu: [arm64]
os: [linux]
- '@img/sharp-libvips-linux-arm@1.0.2':
- resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==}
- engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-libvips-linux-arm@1.0.5':
+ resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
cpu: [arm]
os: [linux]
- '@img/sharp-libvips-linux-s390x@1.0.2':
- resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==}
- engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-libvips-linux-s390x@1.0.4':
+ resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
cpu: [s390x]
os: [linux]
- '@img/sharp-libvips-linux-x64@1.0.2':
- resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==}
- engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-libvips-linux-x64@1.0.4':
+ resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
cpu: [x64]
os: [linux]
- '@img/sharp-libvips-linuxmusl-arm64@1.0.2':
- resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==}
- engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
+ resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
cpu: [arm64]
os: [linux]
- '@img/sharp-libvips-linuxmusl-x64@1.0.2':
- resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==}
- engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-libvips-linuxmusl-x64@1.0.4':
+ resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
cpu: [x64]
os: [linux]
- '@img/sharp-linux-arm64@0.33.4':
- resolution: {integrity: sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==}
- engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-linux-arm64@0.33.5':
+ resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
- '@img/sharp-linux-arm@0.33.4':
- resolution: {integrity: sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==}
- engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-linux-arm@0.33.5':
+ resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm]
os: [linux]
- '@img/sharp-linux-s390x@0.33.4':
- resolution: {integrity: sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==}
- engines: {glibc: '>=2.31', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-linux-s390x@0.33.5':
+ resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [s390x]
os: [linux]
- '@img/sharp-linux-x64@0.33.4':
- resolution: {integrity: sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==}
- engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-linux-x64@0.33.5':
+ resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
- '@img/sharp-linuxmusl-arm64@0.33.4':
- resolution: {integrity: sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==}
- engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-linuxmusl-arm64@0.33.5':
+ resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
- '@img/sharp-linuxmusl-x64@0.33.4':
- resolution: {integrity: sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==}
- engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-linuxmusl-x64@0.33.5':
+ resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
- '@img/sharp-wasm32@0.33.4':
- resolution: {integrity: sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-wasm32@0.33.5':
+ resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [wasm32]
- '@img/sharp-win32-ia32@0.33.4':
- resolution: {integrity: sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-win32-ia32@0.33.5':
+ resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [ia32]
os: [win32]
- '@img/sharp-win32-x64@0.33.4':
- resolution: {integrity: sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-win32-x64@0.33.5':
+ resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [win32]
@@ -743,8 +756,8 @@ packages:
'@jridgewell/trace-mapping@0.3.9':
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
- '@korumite/kiwi@2.13.0':
- resolution: {integrity: sha512-uOLjZDR/N2t9RJh0HIJauJmgaJ3IfZyuSIJ9/2UQ18LKOhRhNmEllKPN/jNubXg1RJ8vrA6BF3e7HYeJc8cFuA==}
+ '@korumite/kiwi@3.1.0':
+ resolution: {integrity: sha512-jol7S2qHaa/Gn+rOvtXmlatfgiCkZkREhF/jZ0Tx4sz5pPPclSd+Eoowb46prvor9rdO/9Pm/rh99YBHg6RkWQ==}
'@korumite/ts@1.1.0':
resolution: {integrity: sha512-qLSpsUXfuo7rkmx0bYtdCkt4jG9XaCzMVjATPEE2l39mSN4p1ncWMlejWottaDS/+JQaigmHEed+MujbuxjZDw==}
@@ -755,57 +768,60 @@ packages:
'@mdi/react@1.6.1':
resolution: {integrity: sha512-4qZeDcluDFGFTWkHs86VOlHkm6gnKaMql13/gpIcUQ8kzxHgpj31NuCkD8abECVfbULJ3shc7Yt4HJ6Wu6SN4w==}
- '@mui/core-downloads-tracker@5.16.6':
- resolution: {integrity: sha512-kytg6LheUG42V8H/o/Ptz3olSO5kUXW9zF0ox18VnblX6bO2yif1FPItgc3ey1t5ansb1+gbe7SatntqusQupg==}
+ '@mui/core-downloads-tracker@6.1.1':
+ resolution: {integrity: sha512-VdQC1tPIIcZAnf62L2M1eQif0x2vlKg3YK4kGYbtijSH4niEgI21GnstykW1vQIs+Bc6L+Hua2GATYVjilJ22A==}
- '@mui/material@5.16.6':
- resolution: {integrity: sha512-0LUIKBOIjiFfzzFNxXZBRAyr9UQfmTAFzbt6ziOU2FDXhorNN2o3N9/32mNJbCA8zJo2FqFU6d3dtoqUDyIEfA==}
- engines: {node: '>=12.0.0'}
+ '@mui/material@6.1.1':
+ resolution: {integrity: sha512-b+eULldTqtqTCbN++2BtBWCir/1LwEYw+2mIlOt2GiEUh1EBBw4/wIukGKKNt3xrCZqRA80yLLkV6tF61Lq3cA==}
+ engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
'@emotion/styled': ^11.3.0
- '@types/react': ^17.0.0 || ^18.0.0
- react: ^17.0.0 || ^18.0.0
- react-dom: ^17.0.0 || ^18.0.0
+ '@mui/material-pigment-css': ^6.1.1
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@emotion/react':
optional: true
'@emotion/styled':
optional: true
+ '@mui/material-pigment-css':
+ optional: true
'@types/react':
optional: true
- '@mui/private-theming@5.16.6':
- resolution: {integrity: sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==}
- engines: {node: '>=12.0.0'}
+ '@mui/private-theming@6.1.1':
+ resolution: {integrity: sha512-JlrjIdhyZUtewtdAuUsvi3ZnO0YS49IW4Mfz19ZWTlQ0sDGga6LNPVwHClWr2/zJK2we2BQx9/i8M32rgKuzrg==}
+ engines: {node: '>=14.0.0'}
peerDependencies:
- '@types/react': ^17.0.0 || ^18.0.0
- react: ^17.0.0 || ^18.0.0
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@types/react':
optional: true
- '@mui/styled-engine@5.16.6':
- resolution: {integrity: sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==}
- engines: {node: '>=12.0.0'}
+ '@mui/styled-engine@6.1.1':
+ resolution: {integrity: sha512-HJyIoMpFb11fnHuRtUILOXgq6vj4LhIlE8maG4SwP/W+E5sa7HFexhnB3vOMT7bKys4UKNxhobC8jwWxYilGsA==}
+ engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.4.1
'@emotion/styled': ^11.3.0
- react: ^17.0.0 || ^18.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@emotion/react':
optional: true
'@emotion/styled':
optional: true
- '@mui/system@5.16.6':
- resolution: {integrity: sha512-5xgyJjBIMPw8HIaZpfbGAaFYPwImQn7Nyh+wwKWhvkoIeDosQ1ZMVrbTclefi7G8hNmqhip04duYwYpbBFnBgw==}
- engines: {node: '>=12.0.0'}
+ '@mui/system@6.1.1':
+ resolution: {integrity: sha512-PaYsCz2tUOcpu3T0okDEsSuP/yCDIj9JZ4Tox1JovRSKIjltHpXPsXZSGr3RiWdtM1MTQMFMCZzu0+CKbyy+Kw==}
+ engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
'@emotion/styled': ^11.3.0
- '@types/react': ^17.0.0 || ^18.0.0
- react: ^17.0.0 || ^18.0.0
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@emotion/react':
optional: true
@@ -814,77 +830,77 @@ packages:
'@types/react':
optional: true
- '@mui/types@7.2.15':
- resolution: {integrity: sha512-nbo7yPhtKJkdf9kcVOF8JZHPZTmqXjJ/tI0bdWgHg5tp9AnIN4Y7f7wm9T+0SyGYJk76+GYZ8Q5XaTYAsUHN0Q==}
+ '@mui/types@7.2.17':
+ resolution: {integrity: sha512-oyumoJgB6jDV8JFzRqjBo2daUuHpzDjoO/e3IrRhhHo/FxJlaVhET6mcNrKHUq2E+R+q3ql0qAtvQ4rfWHhAeQ==}
peerDependencies:
- '@types/react': ^17.0.0 || ^18.0.0
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@types/react':
optional: true
- '@mui/utils@5.16.6':
- resolution: {integrity: sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==}
- engines: {node: '>=12.0.0'}
+ '@mui/utils@6.1.1':
+ resolution: {integrity: sha512-HlRrgdJSPbYDXPpoVMWZV8AE7WcFtAk13rWNWAEVWKSanzBBkymjz3km+Th/Srowsh4pf1fTSP1B0L116wQBYw==}
+ engines: {node: '>=14.0.0'}
peerDependencies:
- '@types/react': ^17.0.0 || ^18.0.0
- react: ^17.0.0 || ^18.0.0
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@types/react':
optional: true
- '@next/env@14.2.5':
- resolution: {integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==}
+ '@next/env@14.2.13':
+ resolution: {integrity: sha512-s3lh6K8cbW1h5Nga7NNeXrbe0+2jIIYK9YaA9T7IufDWnZpozdFUp6Hf0d5rNWUKu4fEuSX2rCKlGjCrtylfDw==}
- '@next/swc-darwin-arm64@14.2.5':
- resolution: {integrity: sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==}
+ '@next/swc-darwin-arm64@14.2.13':
+ resolution: {integrity: sha512-IkAmQEa2Htq+wHACBxOsslt+jMoV3msvxCn0WFSfJSkv/scy+i/EukBKNad36grRxywaXUYJc9mxEGkeIs8Bzg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@14.2.5':
- resolution: {integrity: sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==}
+ '@next/swc-darwin-x64@14.2.13':
+ resolution: {integrity: sha512-Dv1RBGs2TTjkwEnFMVL5XIfJEavnLqqwYSD6LXgTPdEy/u6FlSrLBSSfe1pcfqhFEXRAgVL3Wpjibe5wXJzWog==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@14.2.5':
- resolution: {integrity: sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==}
+ '@next/swc-linux-arm64-gnu@14.2.13':
+ resolution: {integrity: sha512-yB1tYEFFqo4ZNWkwrJultbsw7NPAAxlPXURXioRl9SdW6aIefOLS+0TEsKrWBtbJ9moTDgU3HRILL6QBQnMevg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-arm64-musl@14.2.5':
- resolution: {integrity: sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==}
+ '@next/swc-linux-arm64-musl@14.2.13':
+ resolution: {integrity: sha512-v5jZ/FV/eHGoWhMKYrsAweQ7CWb8xsWGM/8m1mwwZQ/sutJjoFaXchwK4pX8NqwImILEvQmZWyb8pPTcP7htWg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-x64-gnu@14.2.5':
- resolution: {integrity: sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==}
+ '@next/swc-linux-x64-gnu@14.2.13':
+ resolution: {integrity: sha512-aVc7m4YL7ViiRv7SOXK3RplXzOEe/qQzRA5R2vpXboHABs3w8vtFslGTz+5tKiQzWUmTmBNVW0UQdhkKRORmGA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-linux-x64-musl@14.2.5':
- resolution: {integrity: sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==}
+ '@next/swc-linux-x64-musl@14.2.13':
+ resolution: {integrity: sha512-4wWY7/OsSaJOOKvMsu1Teylku7vKyTuocvDLTZQq0TYv9OjiYYWt63PiE1nTuZnqQ4RPvME7Xai+9enoiN0Wrg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-win32-arm64-msvc@14.2.5':
- resolution: {integrity: sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==}
+ '@next/swc-win32-arm64-msvc@14.2.13':
+ resolution: {integrity: sha512-uP1XkqCqV2NVH9+g2sC7qIw+w2tRbcMiXFEbMihkQ8B1+V6m28sshBwAB0SDmOe0u44ne1vFU66+gx/28RsBVQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-ia32-msvc@14.2.5':
- resolution: {integrity: sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==}
+ '@next/swc-win32-ia32-msvc@14.2.13':
+ resolution: {integrity: sha512-V26ezyjPqQpDBV4lcWIh8B/QICQ4v+M5Bo9ykLN+sqeKKBxJVDpEc6biDVyluTXTC40f5IqCU0ttth7Es2ZuMw==}
engines: {node: '>= 10'}
cpu: [ia32]
os: [win32]
- '@next/swc-win32-x64-msvc@14.2.5':
- resolution: {integrity: sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==}
+ '@next/swc-win32-x64-msvc@14.2.13':
+ resolution: {integrity: sha512-WwzOEAFBGhlDHE5Z73mNU8CO8mqMNLqaG+AO9ETmzdCQlJhVtWZnOl2+rqgVQS+YHunjOWptdFmNfbpwcUuEsw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -901,13 +917,12 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
- '@pkgjs/parseargs@0.11.0':
- resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
- engines: {node: '>=14'}
-
'@popperjs/core@2.11.8':
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
+ '@rtsao/scc@1.1.0':
+ resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
+
'@sinclair/typebox@0.27.8':
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
@@ -932,12 +947,12 @@ packages:
resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==}
engines: {node: '>=18'}
- '@testing-library/jest-dom@6.4.8':
- resolution: {integrity: sha512-JD0G+Zc38f5MBHA4NgxQMR5XtO5Jx9g86jqturNTt2WUfRmLDIY7iKkWHDCCTiDuFMre6nxAD5wHw9W5kI4rGw==}
+ '@testing-library/jest-dom@6.5.0':
+ resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==}
engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
- '@testing-library/react@16.0.0':
- resolution: {integrity: sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==}
+ '@testing-library/react@16.0.1':
+ resolution: {integrity: sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==}
engines: {node: '>=18'}
peerDependencies:
'@testing-library/dom': ^10.0.0
@@ -991,6 +1006,9 @@ packages:
'@types/estree@1.0.5':
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+ '@types/estree@1.0.6':
+ resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
+
'@types/graceful-fs@4.1.9':
resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
@@ -1009,12 +1027,15 @@ packages:
'@types/istanbul-reports@3.0.4':
resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
- '@types/jest@29.5.12':
- resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==}
+ '@types/jest@29.5.13':
+ resolution: {integrity: sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg==}
'@types/jsdom@20.0.1':
resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==}
+ '@types/json-schema@7.0.15':
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+
'@types/json5@0.0.29':
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
@@ -1024,14 +1045,14 @@ packages:
'@types/ms@0.7.34':
resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
- '@types/node@20.14.13':
- resolution: {integrity: sha512-+bHoGiZb8UiQ0+WEtmph2IWQCjIqg8MDZMAV+ppRRhUZnquF5mQkP/9vpSwJClEiSM/C7fZZExPzfU0vJTyp8w==}
+ '@types/node@20.16.9':
+ resolution: {integrity: sha512-rkvIVJxsOfBejxK7I0FO5sa2WxFmJCzoDwcd88+fq/CUfynNywTo/1/T6hyFz22CyztsnLS9nVlHOnTI36RH5w==}
'@types/parse-json@4.0.2':
resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
- '@types/prop-types@15.7.12':
- resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
+ '@types/prop-types@15.7.13':
+ resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==}
'@types/react-dom@18.3.0':
resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
@@ -1039,11 +1060,11 @@ packages:
'@types/react-syntax-highlighter@15.5.13':
resolution: {integrity: sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==}
- '@types/react-transition-group@4.4.10':
- resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==}
+ '@types/react-transition-group@4.4.11':
+ resolution: {integrity: sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==}
- '@types/react@18.3.3':
- resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==}
+ '@types/react@18.3.10':
+ resolution: {integrity: sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg==}
'@types/stack-utils@2.0.3':
resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
@@ -1054,11 +1075,11 @@ packages:
'@types/ungap__structured-clone@1.2.0':
resolution: {integrity: sha512-ZoaihZNLeZSxESbk9PUAPZOlSpcKx81I1+4emtULDVmBLkYutTcMlCj2K9VNlf9EWODxdO6gkAqEaLorXwZQVA==}
- '@types/unist@2.0.10':
- resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==}
+ '@types/unist@2.0.11':
+ resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
- '@types/unist@3.0.2':
- resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==}
+ '@types/unist@3.0.3':
+ resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
'@types/yargs-parser@21.0.3':
resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
@@ -1066,63 +1087,62 @@ packages:
'@types/yargs@17.0.32':
resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==}
- '@typescript-eslint/eslint-plugin@7.18.0':
- resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==}
- engines: {node: ^18.18.0 || >=20.0.0}
+ '@typescript-eslint/eslint-plugin@8.7.0':
+ resolution: {integrity: sha512-RIHOoznhA3CCfSTFiB6kBGLQtB/sox+pJ6jeFu6FxJvqL8qRxq/FfGO/UhsGgQM9oGdXkV4xUgli+dt26biB6A==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^7.0.0
- eslint: ^8.56.0
+ '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
+ eslint: ^8.57.0 || ^9.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/parser@7.18.0':
- resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==}
- engines: {node: ^18.18.0 || >=20.0.0}
+ '@typescript-eslint/parser@8.7.0':
+ resolution: {integrity: sha512-lN0btVpj2unxHlNYLI//BQ7nzbMJYBVQX5+pbNXvGYazdlgYonMn4AhhHifQ+J4fGRYA/m1DjaQjx+fDetqBOQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: ^8.56.0
+ eslint: ^8.57.0 || ^9.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/scope-manager@7.18.0':
- resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==}
- engines: {node: ^18.18.0 || >=20.0.0}
+ '@typescript-eslint/scope-manager@8.7.0':
+ resolution: {integrity: sha512-87rC0k3ZlDOuz82zzXRtQ7Akv3GKhHs0ti4YcbAJtaomllXoSO8hi7Ix3ccEvCd824dy9aIX+j3d2UMAfCtVpg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/type-utils@7.18.0':
- resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==}
- engines: {node: ^18.18.0 || >=20.0.0}
+ '@typescript-eslint/type-utils@8.7.0':
+ resolution: {integrity: sha512-tl0N0Mj3hMSkEYhLkjREp54OSb/FI6qyCzfiiclvJvOqre6hsZTGSnHtmFLDU8TIM62G7ygEa1bI08lcuRwEnQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: ^8.56.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/types@7.18.0':
- resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==}
- engines: {node: ^18.18.0 || >=20.0.0}
+ '@typescript-eslint/types@8.7.0':
+ resolution: {integrity: sha512-LLt4BLHFwSfASHSF2K29SZ+ZCsbQOM+LuarPjRUuHm+Qd09hSe3GCeaQbcCr+Mik+0QFRmep/FyZBO6fJ64U3w==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@7.18.0':
- resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==}
- engines: {node: ^18.18.0 || >=20.0.0}
+ '@typescript-eslint/typescript-estree@8.7.0':
+ resolution: {integrity: sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/utils@7.18.0':
- resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==}
- engines: {node: ^18.18.0 || >=20.0.0}
+ '@typescript-eslint/utils@8.7.0':
+ resolution: {integrity: sha512-ZbdUdwsl2X/s3CiyAu3gOlfQzpbuG3nTWKPoIvAu1pu5r8viiJvv2NPN2AqArL35NCYtw/lrPPfM4gxrMLNLPw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: ^8.56.0
+ eslint: ^8.57.0 || ^9.0.0
- '@typescript-eslint/visitor-keys@7.18.0':
- resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==}
- engines: {node: ^18.18.0 || >=20.0.0}
+ '@typescript-eslint/visitor-keys@8.7.0':
+ resolution: {integrity: sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@ungap/structured-clone@1.2.0':
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
@@ -1183,8 +1203,8 @@ packages:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
- ansi-regex@6.0.1:
- resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
+ ansi-regex@6.1.0:
+ resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
engines: {node: '>=12'}
ansi-styles@3.2.1:
@@ -1219,6 +1239,10 @@ packages:
aria-query@5.3.0:
resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
+ aria-query@5.3.2:
+ resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
+ engines: {node: '>= 0.4'}
+
array-buffer-byte-length@1.0.1:
resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
engines: {node: '>= 0.4'}
@@ -1227,10 +1251,6 @@ packages:
resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
engines: {node: '>= 0.4'}
- array-union@2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
- engines: {node: '>=8'}
-
array.prototype.findlastindex@1.2.5:
resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==}
engines: {node: '>= 0.4'}
@@ -1347,6 +1367,9 @@ packages:
caniuse-lite@1.0.30001643:
resolution: {integrity: sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==}
+ caniuse-lite@1.0.30001664:
+ resolution: {integrity: sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==}
+
ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
@@ -1461,9 +1484,9 @@ packages:
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
- concurrently@8.2.2:
- resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==}
- engines: {node: ^14.13.0 || >=16.0.0}
+ concurrently@9.0.1:
+ resolution: {integrity: sha512-wYKvCd/f54sTXJMSfV6Ln/B8UrfLBKOYa+lzc6CHay3Qek+LorVSBdMVfyewFhRbH0Rbabsk4D+3PL/VjQ5gzg==}
+ engines: {node: '>=18'}
hasBin: true
convert-source-map@1.9.0:
@@ -1523,10 +1546,6 @@ packages:
resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==}
engines: {node: '>= 0.4'}
- date-fns@2.30.0:
- resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
- engines: {node: '>=0.11'}
-
debug@3.2.7:
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
peerDependencies:
@@ -1553,6 +1572,15 @@ packages:
supports-color:
optional: true
+ debug@4.3.7:
+ resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
decimal.js@10.4.3:
resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
@@ -1616,10 +1644,6 @@ packages:
resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
engines: {node: '>=0.3.1'}
- dir-glob@3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
-
doctrine@2.1.0:
resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
engines: {node: '>=0.10.0'}
@@ -1660,6 +1684,10 @@ packages:
emoji-regex@9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+ enhanced-resolve@5.17.1:
+ resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==}
+ engines: {node: '>=10.13.0'}
+
entities@4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
@@ -1722,8 +1750,8 @@ packages:
eslint-import-resolver-node@0.3.9:
resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
- eslint-module-utils@2.8.1:
- resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==}
+ eslint-module-utils@2.11.1:
+ resolution: {integrity: sha512-EwcbfLOhwVMAfatfqLecR2yv3dE5+kQ8kx+Rrt0DvDXEVwW86KQ/xbMDQhtp5l42VXukD5SOF8mQQHbaNtO0CQ==}
engines: {node: '>=4'}
peerDependencies:
'@typescript-eslint/parser': '*'
@@ -1743,8 +1771,8 @@ packages:
eslint-import-resolver-webpack:
optional: true
- eslint-plugin-import@2.29.1:
- resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
+ eslint-plugin-import@2.30.0:
+ resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==}
engines: {node: '>=4'}
peerDependencies:
'@typescript-eslint/parser': '*'
@@ -1765,10 +1793,15 @@ packages:
resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- eslint@9.8.0:
- resolution: {integrity: sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==}
+ eslint@9.11.1:
+ resolution: {integrity: sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
+ peerDependencies:
+ jiti: '*'
+ peerDependenciesMeta:
+ jiti:
+ optional: true
espree@10.1.0:
resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==}
@@ -1867,8 +1900,8 @@ packages:
for-each@0.3.3:
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
- foreground-child@3.2.1:
- resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==}
+ foreground-child@3.3.0:
+ resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
engines: {node: '>=14'}
form-data@4.0.0:
@@ -1936,8 +1969,9 @@ packages:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
engines: {node: '>=10.13.0'}
- glob@10.4.5:
- resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
+ glob@11.0.0:
+ resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==}
+ engines: {node: 20 || >=22}
hasBin: true
glob@7.2.3:
@@ -1956,10 +1990,6 @@ packages:
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'}
- globby@11.1.0:
- resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
- engines: {node: '>=10'}
-
gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
@@ -2049,8 +2079,12 @@ packages:
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
engines: {node: '>=0.10.0'}
- ignore@5.3.1:
- resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
+ ignore@5.3.2:
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
+
+ ignore@6.0.2:
+ resolution: {integrity: sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==}
engines: {node: '>= 4'}
import-fresh@3.3.0:
@@ -2124,6 +2158,10 @@ packages:
is-core-module@2.13.1:
resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
+ is-core-module@2.15.1:
+ resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==}
+ engines: {node: '>= 0.4'}
+
is-data-view@1.0.1:
resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
engines: {node: '>= 0.4'}
@@ -2240,8 +2278,9 @@ packages:
resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==}
engines: {node: '>=8'}
- jackspeak@3.4.3:
- resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
+ jackspeak@4.0.2:
+ resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==}
+ engines: {node: 20 || >=22}
jest-changed-files@29.7.0:
resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==}
@@ -2385,6 +2424,10 @@ packages:
resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
hasBin: true
+ jiti@2.0.0:
+ resolution: {integrity: sha512-CJ7e7Abb779OTRv3lomfp7Mns/Sy1+U4pcAx5VbjxCZD5ZM/VJaXPpPjNKjtSvWQy/H86E49REXR34dl1JEz9w==}
+ hasBin: true
+
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -2431,8 +2474,8 @@ packages:
engines: {node: '>=6'}
hasBin: true
- jsonc-parser@3.2.1:
- resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==}
+ jsonc-parser@3.3.1:
+ resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==}
jsonpointer@5.0.1:
resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==}
@@ -2445,8 +2488,8 @@ packages:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
engines: {node: '>=6'}
- knip@5.27.0:
- resolution: {integrity: sha512-W8+jhO7i5pXRUqOzhJGm2DT5/d9aQjyrYTCSojqJxFOvi7ku/nHKzpBO3WNf4eflJo0t3zitmUkM69g53qoZQw==}
+ knip@5.30.6:
+ resolution: {integrity: sha512-YkcnRVl0N99xZ7eaXE7KlH/4cPTCn6BGuk9KxINEdCMFN3yita2vGBizApy97ZOHgghy8tb589gQ3xvLMFIO4w==}
engines: {node: '>=18.6.0'}
hasBin: true
peerDependencies:
@@ -2491,8 +2534,9 @@ packages:
lowlight@1.20.0:
resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==}
- lru-cache@10.4.3:
- resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+ lru-cache@11.0.1:
+ resolution: {integrity: sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==}
+ engines: {node: 20 || >=22}
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
@@ -2521,17 +2565,17 @@ packages:
markdown-table@3.0.3:
resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
- markdownlint-cli@0.41.0:
- resolution: {integrity: sha512-kp29tKrMKdn+xonfefjp3a/MsNzAd9c5ke0ydMEI9PR98bOjzglYN4nfMSaIs69msUf1DNkgevAIAPtK2SeX0Q==}
+ markdownlint-cli@0.42.0:
+ resolution: {integrity: sha512-AjkzhhZa3TmEGi/CE2Wpmny69x1IrzqK2gPB0k8SmNMRgnSAJfyEO5FgZdWTHtJ6Nrdv5FWt5c4C5pkG6Dk30A==}
engines: {node: '>=18'}
hasBin: true
- markdownlint-micromark@0.1.9:
- resolution: {integrity: sha512-5hVs/DzAFa8XqYosbEAEg6ok6MF2smDj89ztn9pKkCtdKHVdPQuGMH7frFfYL9mLkvfFe4pTyAMffLbjf3/EyA==}
+ markdownlint-micromark@0.1.10:
+ resolution: {integrity: sha512-no5ZfdqAdWGxftCLlySHSgddEjyW4kui4z7amQcGsSKfYC5v/ou+8mIQVyg9KQMeEZLNtz9OPDTj7nnTnoR4FQ==}
engines: {node: '>=18'}
- markdownlint@0.34.0:
- resolution: {integrity: sha512-qwGyuyKwjkEMOJ10XN6OTKNOVYvOIi35RNvDLNxTof5s8UmyGHlCdpngRHoRGNvQVGuxO3BJ7uNSgdeX166WXw==}
+ markdownlint@0.35.0:
+ resolution: {integrity: sha512-wgp8yesWjFBL7bycA3hxwHRdsZGJhjhyP1dSxKVKrza0EPFYtn+mHtkVy6dvP1kGSjovyG5B8yNP6Frj0UFUJg==}
engines: {node: '>=18'}
mdast-util-directive@3.0.0:
@@ -2714,6 +2758,10 @@ packages:
resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
engines: {node: '>=4'}
+ minimatch@10.0.1:
+ resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==}
+ engines: {node: 20 || >=22}
+
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
@@ -2742,8 +2790,8 @@ packages:
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
- next@14.2.5:
- resolution: {integrity: sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==}
+ next@14.2.13:
+ resolution: {integrity: sha512-BseY9YNw8QJSwLYD7hlZzl6QVDoSFHL/URN5K64kVEVpCsSOWeyjbIGK+dZUaRViHTaMQX8aqmnn0PHBbGZezg==}
engines: {node: '>=18.17.0'}
hasBin: true
peerDependencies:
@@ -2787,8 +2835,9 @@ packages:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
- object-inspect@1.13.1:
- resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
+ object-inspect@1.13.2:
+ resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
+ engines: {node: '>= 0.4'}
object-keys@1.1.1:
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
@@ -2884,9 +2933,9 @@ packages:
path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
- path-scurry@1.11.1:
- resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
- engines: {node: '>=16 || 14 >=14.18'}
+ path-scurry@2.0.0:
+ resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==}
+ engines: {node: 20 || >=22}
path-type@4.0.0:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
@@ -2895,6 +2944,9 @@ packages:
picocolors@1.0.1:
resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
+ picocolors@1.1.0:
+ resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
+
picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
@@ -2991,8 +3043,8 @@ packages:
peerDependencies:
react: ^18.3.1
- react-intersection-observer@9.13.0:
- resolution: {integrity: sha512-y0UvBfjDiXqC8h0EWccyaj4dVBWMxgEx0t5RGNzQsvkfvZwugnKwxpu70StY4ivzYuMajavwUDjH4LJyIki9Lw==}
+ react-intersection-observer@9.13.1:
+ resolution: {integrity: sha512-tSzDaTy0qwNPLJHg8XZhlyHTgGW6drFKTtvjdL+p6um12rcnp8Z5XstE+QNBJ7c64n5o0Lj4ilUleA41bmDoMw==}
peerDependencies:
react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -3158,9 +3210,9 @@ packages:
resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
engines: {node: '>= 0.4'}
- sharp@0.33.4:
- resolution: {integrity: sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==}
- engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ sharp@0.33.5:
+ resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
@@ -3184,8 +3236,8 @@ packages:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
- simple-icons@13.3.0:
- resolution: {integrity: sha512-Ls7JP+S0Gg4ZDEb07R9URp7Sk3d5UWY/dZm06jrbIezqIl0H4M780Cy49T3QTxZlFEXv/T8MNDRW5b45EJw9Bg==}
+ simple-icons@13.11.0:
+ resolution: {integrity: sha512-7MevuibJInmGRsq3PdLN/vpa+ifv/4/SoZQHpJ08aaB8/Ab17ZfZbm+j/K5PMwxkemSVZWpm4cqRlMXHDCEMww==}
engines: {node: '>=0.12.18'}
simple-swizzle@0.2.2:
@@ -3198,16 +3250,12 @@ packages:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
- smol-toml@1.2.2:
- resolution: {integrity: sha512-fVEjX2ybKdJKzFL46VshQbj9PuA4IUKivalgp48/3zwS9vXzyykzQ6AX92UxHSvWJagziMRLeHMgEzoGO7A8hQ==}
- engines: {node: '>= 18'}
-
smol-toml@1.3.0:
resolution: {integrity: sha512-tWpi2TsODPScmi48b/OQZGi2lgUmBCHy6SZrhi/FdnnHiU1GwebbCfuQuxsC3nHaLwtYeJGPrDZDIeodDOc4pA==}
engines: {node: '>= 18'}
- source-map-js@1.2.0:
- resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
source-map-support@0.5.13:
@@ -3227,9 +3275,6 @@ packages:
space-separated-tokens@2.0.2:
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
- spawn-command@0.0.2:
- resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==}
-
sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
@@ -3340,6 +3385,10 @@ packages:
symbol-tree@3.2.4:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
+ tapable@2.2.1:
+ resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
+ engines: {node: '>=6'}
+
test-exclude@6.0.0:
resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
engines: {node: '>=8'}
@@ -3399,11 +3448,8 @@ packages:
tsconfig-paths@3.15.0:
resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
- tslib@2.6.2:
- resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
-
- tslib@2.6.3:
- resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
+ tslib@2.7.0:
+ resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==}
type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
@@ -3433,18 +3479,17 @@ packages:
resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
engines: {node: '>= 0.4'}
- typescript-eslint@7.18.0:
- resolution: {integrity: sha512-PonBkP603E3tt05lDkbOMyaxJjvKqQrXsnow72sVeOFINDE/qNmnnd+f9b4N+U7W6MXnnYyrhtmF2t08QWwUbA==}
- engines: {node: ^18.18.0 || >=20.0.0}
+ typescript-eslint@8.7.0:
+ resolution: {integrity: sha512-nEHbEYJyHwsuf7c3V3RS7Saq+1+la3i0ieR3qP0yjqWSzVmh8Drp47uOl9LjbPANac4S7EFSqvcYIKXUUwIfIQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: ^8.56.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- typescript@5.5.4:
- resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
+ typescript@5.6.2:
+ resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==}
engines: {node: '>=14.17'}
hasBin: true
@@ -3454,8 +3499,8 @@ packages:
unbox-primitive@1.0.2:
resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
- undici-types@5.26.5:
- resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+ undici-types@6.19.8:
+ resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
unified@11.0.4:
resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==}
@@ -3525,6 +3570,9 @@ packages:
vfile@6.0.2:
resolution: {integrity: sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==}
+ vfile@6.0.3:
+ resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
+
w3c-xmlserializer@4.0.0:
resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==}
engines: {node: '>=14'}
@@ -3616,8 +3664,8 @@ packages:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'}
- yaml@2.5.0:
- resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==}
+ yaml@2.5.1:
+ resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==}
engines: {node: '>= 14'}
hasBin: true
@@ -3637,8 +3685,8 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
- zod-validation-error@3.3.0:
- resolution: {integrity: sha512-Syib9oumw1NTqEv4LT0e6U83Td9aVRk9iTXPUQr1otyV1PuXQKOvOwhMNqZIq5hluzHP2pMgnOmHEo7kPdI2mw==}
+ zod-validation-error@3.4.0:
+ resolution: {integrity: sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==}
engines: {node: '>=18.0.0'}
peerDependencies:
zod: ^3.18.0
@@ -3922,6 +3970,10 @@ snapshots:
dependencies:
regenerator-runtime: 0.14.1
+ '@babel/runtime@7.25.6':
+ dependencies:
+ regenerator-runtime: 0.14.1
+
'@babel/template@7.24.6':
dependencies:
'@babel/code-frame': 7.24.6
@@ -3981,7 +4033,7 @@ snapshots:
'@emnapi/runtime@1.2.0':
dependencies:
- tslib: 2.6.3
+ tslib: 2.7.0
optional: true
'@emotion/babel-plugin@11.12.0':
@@ -4016,19 +4068,19 @@ snapshots:
'@emotion/memoize@0.9.0': {}
- '@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1)':
+ '@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.25.0
+ '@babel/runtime': 7.25.6
'@emotion/babel-plugin': 11.12.0
'@emotion/cache': 11.13.1
- '@emotion/serialize': 1.3.0
+ '@emotion/serialize': 1.3.2
'@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.3.1)
- '@emotion/utils': 1.4.0
+ '@emotion/utils': 1.4.1
'@emotion/weak-memoize': 0.4.0
hoist-non-react-statics: 3.3.2
react: 18.3.1
optionalDependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.10
transitivePeerDependencies:
- supports-color
@@ -4040,23 +4092,33 @@ snapshots:
'@emotion/utils': 1.4.0
csstype: 3.1.3
+ '@emotion/serialize@1.3.2':
+ dependencies:
+ '@emotion/hash': 0.9.2
+ '@emotion/memoize': 0.9.0
+ '@emotion/unitless': 0.10.0
+ '@emotion/utils': 1.4.1
+ csstype: 3.1.3
+
'@emotion/sheet@1.4.0': {}
- '@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)':
+ '@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.25.0
'@emotion/babel-plugin': 11.12.0
'@emotion/is-prop-valid': 1.3.0
- '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1)
+ '@emotion/react': 11.13.3(@types/react@18.3.10)(react@18.3.1)
'@emotion/serialize': 1.3.0
'@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.3.1)
'@emotion/utils': 1.4.0
react: 18.3.1
optionalDependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.10
transitivePeerDependencies:
- supports-color
+ '@emotion/unitless@0.10.0': {}
+
'@emotion/unitless@0.9.0': {}
'@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@18.3.1)':
@@ -4065,30 +4127,34 @@ snapshots:
'@emotion/utils@1.4.0': {}
+ '@emotion/utils@1.4.1': {}
+
'@emotion/weak-memoize@0.4.0': {}
- '@eslint-community/eslint-utils@4.4.0(eslint@9.8.0)':
+ '@eslint-community/eslint-utils@4.4.0(eslint@9.11.1(jiti@2.0.0))':
dependencies:
- eslint: 9.8.0
+ eslint: 9.11.1(jiti@2.0.0)
eslint-visitor-keys: 3.4.3
- '@eslint-community/regexpp@4.11.0': {}
+ '@eslint-community/regexpp@4.11.1': {}
- '@eslint/config-array@0.17.1':
+ '@eslint/config-array@0.18.0':
dependencies:
'@eslint/object-schema': 2.1.4
- debug: 4.3.6
+ debug: 4.3.7
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
+ '@eslint/core@0.6.0': {}
+
'@eslint/eslintrc@3.1.0':
dependencies:
ajv: 6.12.6
- debug: 4.3.6
+ debug: 4.3.7
espree: 10.1.0
globals: 14.0.0
- ignore: 5.3.1
+ ignore: 5.3.2
import-fresh: 3.3.0
js-yaml: 4.1.0
minimatch: 3.1.2
@@ -4096,11 +4162,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@9.8.0': {}
+ '@eslint/js@9.11.1': {}
'@eslint/object-schema@2.1.4': {}
- '@fontsource/libre-baskerville@5.0.13': {}
+ '@eslint/plugin-kit@0.2.0':
+ dependencies:
+ levn: 0.4.1
+
+ '@fontsource/libre-baskerville@5.1.0': {}
'@humanwhocodes/module-importer@1.0.1': {}
@@ -4118,79 +4188,79 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@img/sharp-darwin-arm64@0.33.4':
+ '@img/sharp-darwin-arm64@0.33.5':
optionalDependencies:
- '@img/sharp-libvips-darwin-arm64': 1.0.2
+ '@img/sharp-libvips-darwin-arm64': 1.0.4
optional: true
- '@img/sharp-darwin-x64@0.33.4':
+ '@img/sharp-darwin-x64@0.33.5':
optionalDependencies:
- '@img/sharp-libvips-darwin-x64': 1.0.2
+ '@img/sharp-libvips-darwin-x64': 1.0.4
optional: true
- '@img/sharp-libvips-darwin-arm64@1.0.2':
+ '@img/sharp-libvips-darwin-arm64@1.0.4':
optional: true
- '@img/sharp-libvips-darwin-x64@1.0.2':
+ '@img/sharp-libvips-darwin-x64@1.0.4':
optional: true
- '@img/sharp-libvips-linux-arm64@1.0.2':
+ '@img/sharp-libvips-linux-arm64@1.0.4':
optional: true
- '@img/sharp-libvips-linux-arm@1.0.2':
+ '@img/sharp-libvips-linux-arm@1.0.5':
optional: true
- '@img/sharp-libvips-linux-s390x@1.0.2':
+ '@img/sharp-libvips-linux-s390x@1.0.4':
optional: true
- '@img/sharp-libvips-linux-x64@1.0.2':
+ '@img/sharp-libvips-linux-x64@1.0.4':
optional: true
- '@img/sharp-libvips-linuxmusl-arm64@1.0.2':
+ '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
optional: true
- '@img/sharp-libvips-linuxmusl-x64@1.0.2':
+ '@img/sharp-libvips-linuxmusl-x64@1.0.4':
optional: true
- '@img/sharp-linux-arm64@0.33.4':
+ '@img/sharp-linux-arm64@0.33.5':
optionalDependencies:
- '@img/sharp-libvips-linux-arm64': 1.0.2
+ '@img/sharp-libvips-linux-arm64': 1.0.4
optional: true
- '@img/sharp-linux-arm@0.33.4':
+ '@img/sharp-linux-arm@0.33.5':
optionalDependencies:
- '@img/sharp-libvips-linux-arm': 1.0.2
+ '@img/sharp-libvips-linux-arm': 1.0.5
optional: true
- '@img/sharp-linux-s390x@0.33.4':
+ '@img/sharp-linux-s390x@0.33.5':
optionalDependencies:
- '@img/sharp-libvips-linux-s390x': 1.0.2
+ '@img/sharp-libvips-linux-s390x': 1.0.4
optional: true
- '@img/sharp-linux-x64@0.33.4':
+ '@img/sharp-linux-x64@0.33.5':
optionalDependencies:
- '@img/sharp-libvips-linux-x64': 1.0.2
+ '@img/sharp-libvips-linux-x64': 1.0.4
optional: true
- '@img/sharp-linuxmusl-arm64@0.33.4':
+ '@img/sharp-linuxmusl-arm64@0.33.5':
optionalDependencies:
- '@img/sharp-libvips-linuxmusl-arm64': 1.0.2
+ '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
optional: true
- '@img/sharp-linuxmusl-x64@0.33.4':
+ '@img/sharp-linuxmusl-x64@0.33.5':
optionalDependencies:
- '@img/sharp-libvips-linuxmusl-x64': 1.0.2
+ '@img/sharp-libvips-linuxmusl-x64': 1.0.4
optional: true
- '@img/sharp-wasm32@0.33.4':
+ '@img/sharp-wasm32@0.33.5':
dependencies:
'@emnapi/runtime': 1.2.0
optional: true
- '@img/sharp-win32-ia32@0.33.4':
+ '@img/sharp-win32-ia32@0.33.5':
optional: true
- '@img/sharp-win32-x64@0.33.4':
+ '@img/sharp-win32-x64@0.33.5':
optional: true
'@isaacs/cliui@8.0.2':
@@ -4215,27 +4285,27 @@ snapshots:
'@jest/console@29.7.0':
dependencies:
'@jest/types': 29.6.3
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
chalk: 4.1.2
jest-message-util: 29.7.0
jest-util: 29.7.0
slash: 3.0.0
- '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.13)(typescript@5.5.4))':
+ '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2))':
dependencies:
'@jest/console': 29.7.0
'@jest/reporters': 29.7.0
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 3.9.0
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.13)(typescript@5.5.4))
+ jest-config: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2))
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -4260,7 +4330,7 @@ snapshots:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
jest-mock: 29.7.0
'@jest/expect-utils@29.7.0':
@@ -4278,7 +4348,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -4300,7 +4370,7 @@ snapshots:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.25
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
chalk: 4.1.2
collect-v8-coverage: 1.0.2
exit: 0.1.2
@@ -4370,7 +4440,7 @@ snapshots:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
'@types/yargs': 17.0.32
chalk: 4.1.2
@@ -4396,7 +4466,7 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.4.15
- '@korumite/kiwi@2.13.0':
+ '@korumite/kiwi@3.1.0':
dependencies:
mdast-util-toc: 7.1.0
reading-time: 1.5.0
@@ -4420,17 +4490,17 @@ snapshots:
dependencies:
prop-types: 15.8.1
- '@mui/core-downloads-tracker@5.16.6': {}
+ '@mui/core-downloads-tracker@6.1.1': {}
- '@mui/material@5.16.6(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@mui/material@6.1.1(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.25.0
- '@mui/core-downloads-tracker': 5.16.6
- '@mui/system': 5.16.6(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
- '@mui/types': 7.2.15(@types/react@18.3.3)
- '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1)
+ '@babel/runtime': 7.25.6
+ '@mui/core-downloads-tracker': 6.1.1
+ '@mui/system': 6.1.1(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1)
+ '@mui/types': 7.2.17(@types/react@18.3.10)
+ '@mui/utils': 6.1.1(@types/react@18.3.10)(react@18.3.1)
'@popperjs/core': 2.11.8
- '@types/react-transition-group': 4.4.10
+ '@types/react-transition-group': 4.4.11
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
@@ -4439,89 +4509,90 @@ snapshots:
react-is: 18.3.1
react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
optionalDependencies:
- '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1)
- '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
+ '@emotion/react': 11.13.3(@types/react@18.3.10)(react@18.3.1)
+ '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1)
+ '@types/react': 18.3.10
- '@mui/private-theming@5.16.6(@types/react@18.3.3)(react@18.3.1)':
+ '@mui/private-theming@6.1.1(@types/react@18.3.10)(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.25.0
- '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1)
+ '@babel/runtime': 7.25.6
+ '@mui/utils': 6.1.1(@types/react@18.3.10)(react@18.3.1)
prop-types: 15.8.1
react: 18.3.1
optionalDependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.10
- '@mui/styled-engine@5.16.6(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)':
+ '@mui/styled-engine@6.1.1(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1))(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.25.0
+ '@babel/runtime': 7.25.6
'@emotion/cache': 11.13.1
+ '@emotion/sheet': 1.4.0
csstype: 3.1.3
prop-types: 15.8.1
react: 18.3.1
optionalDependencies:
- '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1)
- '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
+ '@emotion/react': 11.13.3(@types/react@18.3.10)(react@18.3.1)
+ '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1)
- '@mui/system@5.16.6(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)':
+ '@mui/system@6.1.1(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.25.0
- '@mui/private-theming': 5.16.6(@types/react@18.3.3)(react@18.3.1)
- '@mui/styled-engine': 5.16.6(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
- '@mui/types': 7.2.15(@types/react@18.3.3)
- '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1)
+ '@babel/runtime': 7.25.6
+ '@mui/private-theming': 6.1.1(@types/react@18.3.10)(react@18.3.1)
+ '@mui/styled-engine': 6.1.1(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1))(react@18.3.1)
+ '@mui/types': 7.2.17(@types/react@18.3.10)
+ '@mui/utils': 6.1.1(@types/react@18.3.10)(react@18.3.1)
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
react: 18.3.1
optionalDependencies:
- '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1)
- '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
+ '@emotion/react': 11.13.3(@types/react@18.3.10)(react@18.3.1)
+ '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.10)(react@18.3.1))(@types/react@18.3.10)(react@18.3.1)
+ '@types/react': 18.3.10
- '@mui/types@7.2.15(@types/react@18.3.3)':
+ '@mui/types@7.2.17(@types/react@18.3.10)':
optionalDependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.10
- '@mui/utils@5.16.6(@types/react@18.3.3)(react@18.3.1)':
+ '@mui/utils@6.1.1(@types/react@18.3.10)(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.25.0
- '@mui/types': 7.2.15(@types/react@18.3.3)
- '@types/prop-types': 15.7.12
+ '@babel/runtime': 7.25.6
+ '@mui/types': 7.2.17(@types/react@18.3.10)
+ '@types/prop-types': 15.7.13
clsx: 2.1.1
prop-types: 15.8.1
react: 18.3.1
react-is: 18.3.1
optionalDependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.10
- '@next/env@14.2.5': {}
+ '@next/env@14.2.13': {}
- '@next/swc-darwin-arm64@14.2.5':
+ '@next/swc-darwin-arm64@14.2.13':
optional: true
- '@next/swc-darwin-x64@14.2.5':
+ '@next/swc-darwin-x64@14.2.13':
optional: true
- '@next/swc-linux-arm64-gnu@14.2.5':
+ '@next/swc-linux-arm64-gnu@14.2.13':
optional: true
- '@next/swc-linux-arm64-musl@14.2.5':
+ '@next/swc-linux-arm64-musl@14.2.13':
optional: true
- '@next/swc-linux-x64-gnu@14.2.5':
+ '@next/swc-linux-x64-gnu@14.2.13':
optional: true
- '@next/swc-linux-x64-musl@14.2.5':
+ '@next/swc-linux-x64-musl@14.2.13':
optional: true
- '@next/swc-win32-arm64-msvc@14.2.5':
+ '@next/swc-win32-arm64-msvc@14.2.13':
optional: true
- '@next/swc-win32-ia32-msvc@14.2.5':
+ '@next/swc-win32-ia32-msvc@14.2.13':
optional: true
- '@next/swc-win32-x64-msvc@14.2.5':
+ '@next/swc-win32-x64-msvc@14.2.13':
optional: true
'@nodelib/fs.scandir@2.1.5':
@@ -4536,11 +4607,10 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.17.1
- '@pkgjs/parseargs@0.11.0':
- optional: true
-
'@popperjs/core@2.11.8': {}
+ '@rtsao/scc@1.1.0': {}
+
'@sinclair/typebox@0.27.8': {}
'@sinonjs/commons@3.0.1':
@@ -4554,7 +4624,7 @@ snapshots:
'@snyk/github-codeowners@1.1.0':
dependencies:
commander: 4.1.1
- ignore: 5.3.1
+ ignore: 5.3.2
p-map: 4.0.0
'@swc/counter@0.1.3': {}
@@ -4562,12 +4632,12 @@ snapshots:
'@swc/helpers@0.5.5':
dependencies:
'@swc/counter': 0.1.3
- tslib: 2.6.3
+ tslib: 2.7.0
'@testing-library/dom@10.4.0':
dependencies:
'@babel/code-frame': 7.24.7
- '@babel/runtime': 7.25.0
+ '@babel/runtime': 7.25.6
'@types/aria-query': 5.0.4
aria-query: 5.3.0
chalk: 4.1.2
@@ -4575,25 +4645,24 @@ snapshots:
lz-string: 1.5.0
pretty-format: 27.5.1
- '@testing-library/jest-dom@6.4.8':
+ '@testing-library/jest-dom@6.5.0':
dependencies:
'@adobe/css-tools': 4.4.0
- '@babel/runtime': 7.25.0
- aria-query: 5.3.0
+ aria-query: 5.3.2
chalk: 3.0.0
css.escape: 1.5.1
dom-accessibility-api: 0.6.3
lodash: 4.17.21
redent: 3.0.0
- '@testing-library/react@16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@testing-library/react@16.0.1(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.25.0
+ '@babel/runtime': 7.25.6
'@testing-library/dom': 10.4.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
optionalDependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.10
'@types/react-dom': 18.3.0
'@tootallnate/once@2.0.0': {}
@@ -4639,17 +4708,19 @@ snapshots:
'@types/estree@1.0.5': {}
+ '@types/estree@1.0.6': {}
+
'@types/graceful-fs@4.1.9':
dependencies:
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
'@types/hast@2.3.10':
dependencies:
- '@types/unist': 2.0.10
+ '@types/unist': 2.0.11
'@types/hast@3.0.4':
dependencies:
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
'@types/istanbul-lib-coverage@2.0.6': {}
@@ -4661,48 +4732,50 @@ snapshots:
dependencies:
'@types/istanbul-lib-report': 3.0.3
- '@types/jest@29.5.12':
+ '@types/jest@29.5.13':
dependencies:
expect: 29.7.0
pretty-format: 29.7.0
'@types/jsdom@20.0.1':
dependencies:
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
'@types/tough-cookie': 4.0.5
parse5: 7.1.2
+ '@types/json-schema@7.0.15': {}
+
'@types/json5@0.0.29': {}
'@types/mdast@4.0.4':
dependencies:
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
'@types/ms@0.7.34': {}
- '@types/node@20.14.13':
+ '@types/node@20.16.9':
dependencies:
- undici-types: 5.26.5
+ undici-types: 6.19.8
'@types/parse-json@4.0.2': {}
- '@types/prop-types@15.7.12': {}
+ '@types/prop-types@15.7.13': {}
'@types/react-dom@18.3.0':
dependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.10
'@types/react-syntax-highlighter@15.5.13':
dependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.10
- '@types/react-transition-group@4.4.10':
+ '@types/react-transition-group@4.4.11':
dependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.10
- '@types/react@18.3.3':
+ '@types/react@18.3.10':
dependencies:
- '@types/prop-types': 15.7.12
+ '@types/prop-types': 15.7.13
csstype: 3.1.3
'@types/stack-utils@2.0.3': {}
@@ -4711,9 +4784,9 @@ snapshots:
'@types/ungap__structured-clone@1.2.0': {}
- '@types/unist@2.0.10': {}
+ '@types/unist@2.0.11': {}
- '@types/unist@3.0.2': {}
+ '@types/unist@3.0.3': {}
'@types/yargs-parser@21.0.3': {}
@@ -4721,94 +4794,94 @@ snapshots:
dependencies:
'@types/yargs-parser': 21.0.3
- '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2))(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
dependencies:
- '@eslint-community/regexpp': 4.11.0
- '@typescript-eslint/parser': 7.18.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 7.18.0
- '@typescript-eslint/type-utils': 7.18.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/utils': 7.18.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 7.18.0
- eslint: 9.8.0
+ '@eslint-community/regexpp': 4.11.1
+ '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
+ '@typescript-eslint/scope-manager': 8.7.0
+ '@typescript-eslint/type-utils': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
+ '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
+ '@typescript-eslint/visitor-keys': 8.7.0
+ eslint: 9.11.1(jiti@2.0.0)
graphemer: 1.4.0
- ignore: 5.3.1
+ ignore: 5.3.2
natural-compare: 1.4.0
- ts-api-utils: 1.3.0(typescript@5.5.4)
+ ts-api-utils: 1.3.0(typescript@5.6.2)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@7.18.0(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
dependencies:
- '@typescript-eslint/scope-manager': 7.18.0
- '@typescript-eslint/types': 7.18.0
- '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 7.18.0
- debug: 4.3.6
- eslint: 9.8.0
+ '@typescript-eslint/scope-manager': 8.7.0
+ '@typescript-eslint/types': 8.7.0
+ '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2)
+ '@typescript-eslint/visitor-keys': 8.7.0
+ debug: 4.3.7
+ eslint: 9.11.1(jiti@2.0.0)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@7.18.0':
+ '@typescript-eslint/scope-manager@8.7.0':
dependencies:
- '@typescript-eslint/types': 7.18.0
- '@typescript-eslint/visitor-keys': 7.18.0
+ '@typescript-eslint/types': 8.7.0
+ '@typescript-eslint/visitor-keys': 8.7.0
- '@typescript-eslint/type-utils@7.18.0(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/type-utils@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
dependencies:
- '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4)
- '@typescript-eslint/utils': 7.18.0(eslint@9.8.0)(typescript@5.5.4)
- debug: 4.3.6
- eslint: 9.8.0
- ts-api-utils: 1.3.0(typescript@5.5.4)
+ '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2)
+ '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
+ debug: 4.3.7
+ ts-api-utils: 1.3.0(typescript@5.6.2)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.2
transitivePeerDependencies:
+ - eslint
- supports-color
- '@typescript-eslint/types@7.18.0': {}
+ '@typescript-eslint/types@8.7.0': {}
- '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)':
+ '@typescript-eslint/typescript-estree@8.7.0(typescript@5.6.2)':
dependencies:
- '@typescript-eslint/types': 7.18.0
- '@typescript-eslint/visitor-keys': 7.18.0
- debug: 4.3.6
- globby: 11.1.0
+ '@typescript-eslint/types': 8.7.0
+ '@typescript-eslint/visitor-keys': 8.7.0
+ debug: 4.3.7
+ fast-glob: 3.3.2
is-glob: 4.0.3
minimatch: 9.0.5
semver: 7.6.3
- ts-api-utils: 1.3.0(typescript@5.5.4)
+ ts-api-utils: 1.3.0(typescript@5.6.2)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@7.18.0(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/utils@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0)
- '@typescript-eslint/scope-manager': 7.18.0
- '@typescript-eslint/types': 7.18.0
- '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4)
- eslint: 9.8.0
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.0.0))
+ '@typescript-eslint/scope-manager': 8.7.0
+ '@typescript-eslint/types': 8.7.0
+ '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2)
+ eslint: 9.11.1(jiti@2.0.0)
transitivePeerDependencies:
- supports-color
- typescript
- '@typescript-eslint/visitor-keys@7.18.0':
+ '@typescript-eslint/visitor-keys@8.7.0':
dependencies:
- '@typescript-eslint/types': 7.18.0
+ '@typescript-eslint/types': 8.7.0
eslint-visitor-keys: 3.4.3
'@ungap/structured-clone@1.2.0': {}
- '@vercel/analytics@1.3.1(next@14.2.5(@babel/core@7.24.6)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
+ '@vercel/analytics@1.3.1(next@14.2.13(@babel/core@7.24.6)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
dependencies:
server-only: 0.0.1
optionalDependencies:
- next: 14.2.5(@babel/core@7.24.6)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ next: 14.2.13(@babel/core@7.24.6)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
abab@2.0.6: {}
@@ -4852,7 +4925,7 @@ snapshots:
ansi-regex@5.0.1: {}
- ansi-regex@6.0.1: {}
+ ansi-regex@6.1.0: {}
ansi-styles@3.2.1:
dependencies:
@@ -4883,6 +4956,8 @@ snapshots:
dependencies:
dequal: 2.0.3
+ aria-query@5.3.2: {}
+
array-buffer-byte-length@1.0.1:
dependencies:
call-bind: 1.0.7
@@ -4897,8 +4972,6 @@ snapshots:
get-intrinsic: 1.2.4
is-string: 1.0.7
- array-union@2.1.0: {}
-
array.prototype.findlastindex@1.2.5:
dependencies:
call-bind: 1.0.7
@@ -5060,6 +5133,8 @@ snapshots:
caniuse-lite@1.0.30001643: {}
+ caniuse-lite@1.0.30001664: {}
+
ccount@2.0.1: {}
chalk@2.4.2:
@@ -5153,14 +5228,12 @@ snapshots:
concat-map@0.0.1: {}
- concurrently@8.2.2:
+ concurrently@9.0.1:
dependencies:
chalk: 4.1.2
- date-fns: 2.30.0
lodash: 4.17.21
rxjs: 7.8.1
shell-quote: 1.8.1
- spawn-command: 0.0.2
supports-color: 8.1.1
tree-kill: 1.2.2
yargs: 17.7.2
@@ -5177,13 +5250,13 @@ snapshots:
path-type: 4.0.0
yaml: 1.10.2
- create-jest@29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.13)(typescript@5.5.4)):
+ create-jest@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.13)(typescript@5.5.4))
+ jest-config: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2))
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -5238,10 +5311,6 @@ snapshots:
es-errors: 1.3.0
is-data-view: 1.0.1
- date-fns@2.30.0:
- dependencies:
- '@babel/runtime': 7.24.6
-
debug@3.2.7:
dependencies:
ms: 2.1.3
@@ -5254,6 +5323,10 @@ snapshots:
dependencies:
ms: 2.1.2
+ debug@4.3.7:
+ dependencies:
+ ms: 2.1.3
+
decimal.js@10.4.3: {}
decode-named-character-reference@1.0.2:
@@ -5303,10 +5376,6 @@ snapshots:
diff@4.0.2: {}
- dir-glob@3.0.1:
- dependencies:
- path-type: 4.0.0
-
doctrine@2.1.0:
dependencies:
esutils: 2.0.3
@@ -5317,7 +5386,7 @@ snapshots:
dom-helpers@5.2.1:
dependencies:
- '@babel/runtime': 7.25.0
+ '@babel/runtime': 7.25.6
csstype: 3.1.3
domexception@4.0.0:
@@ -5342,6 +5411,11 @@ snapshots:
emoji-regex@9.2.2: {}
+ enhanced-resolve@5.17.1:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.2.1
+
entities@4.5.0: {}
error-ex@1.3.2:
@@ -5381,7 +5455,7 @@ snapshots:
is-string: 1.0.7
is-typed-array: 1.1.13
is-weakref: 1.0.2
- object-inspect: 1.13.1
+ object-inspect: 1.13.2
object-keys: 1.1.1
object.assign: 4.1.5
regexp.prototype.flags: 1.5.2
@@ -5444,34 +5518,35 @@ snapshots:
eslint-import-resolver-node@0.3.9:
dependencies:
debug: 3.2.7
- is-core-module: 2.13.1
+ is-core-module: 2.15.1
resolve: 1.22.8
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.8.1(@typescript-eslint/parser@7.18.0(eslint@9.8.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@9.8.0):
+ eslint-module-utils@2.11.1(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.11.1(jiti@2.0.0)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 7.18.0(eslint@9.8.0)(typescript@5.5.4)
- eslint: 9.8.0
+ '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
+ eslint: 9.11.1(jiti@2.0.0)
eslint-import-resolver-node: 0.3.9
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0):
+ eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2))(eslint@9.11.1(jiti@2.0.0)):
dependencies:
+ '@rtsao/scc': 1.1.0
array-includes: 3.1.8
array.prototype.findlastindex: 1.2.5
array.prototype.flat: 1.3.2
array.prototype.flatmap: 1.3.2
debug: 3.2.7
doctrine: 2.1.0
- eslint: 9.8.0
+ eslint: 9.11.1(jiti@2.0.0)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.18.0(eslint@9.8.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@9.8.0)
+ eslint-module-utils: 2.11.1(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.11.1(jiti@2.0.0))
hasown: 2.0.2
- is-core-module: 2.13.1
+ is-core-module: 2.15.1
is-glob: 4.0.3
minimatch: 3.1.2
object.fromentries: 2.0.8
@@ -5480,7 +5555,7 @@ snapshots:
semver: 6.3.1
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 7.18.0(eslint@9.8.0)(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -5495,20 +5570,24 @@ snapshots:
eslint-visitor-keys@4.0.0: {}
- eslint@9.8.0:
+ eslint@9.11.1(jiti@2.0.0):
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0)
- '@eslint-community/regexpp': 4.11.0
- '@eslint/config-array': 0.17.1
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.0.0))
+ '@eslint-community/regexpp': 4.11.1
+ '@eslint/config-array': 0.18.0
+ '@eslint/core': 0.6.0
'@eslint/eslintrc': 3.1.0
- '@eslint/js': 9.8.0
+ '@eslint/js': 9.11.1
+ '@eslint/plugin-kit': 0.2.0
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.3.0
'@nodelib/fs.walk': 1.2.8
+ '@types/estree': 1.0.6
+ '@types/json-schema': 7.0.15
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.6
+ debug: 4.3.7
escape-string-regexp: 4.0.0
eslint-scope: 8.0.2
eslint-visitor-keys: 4.0.0
@@ -5519,18 +5598,19 @@ snapshots:
file-entry-cache: 8.0.0
find-up: 5.0.0
glob-parent: 6.0.2
- ignore: 5.3.1
+ ignore: 5.3.2
imurmurhash: 0.1.4
is-glob: 4.0.3
is-path-inside: 3.0.3
json-stable-stringify-without-jsonify: 1.0.1
- levn: 0.4.1
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.4
strip-ansi: 6.0.1
text-table: 0.2.0
+ optionalDependencies:
+ jiti: 2.0.0
transitivePeerDependencies:
- supports-color
@@ -5641,7 +5721,7 @@ snapshots:
dependencies:
is-callable: 1.2.7
- foreground-child@3.2.1:
+ foreground-child@3.3.0:
dependencies:
cross-spawn: 7.0.3
signal-exit: 4.1.0
@@ -5704,14 +5784,14 @@ snapshots:
dependencies:
is-glob: 4.0.3
- glob@10.4.5:
+ glob@11.0.0:
dependencies:
- foreground-child: 3.2.1
- jackspeak: 3.4.3
- minimatch: 9.0.5
+ foreground-child: 3.3.0
+ jackspeak: 4.0.2
+ minimatch: 10.0.1
minipass: 7.1.2
package-json-from-dist: 1.0.0
- path-scurry: 1.11.1
+ path-scurry: 2.0.0
glob@7.2.3:
dependencies:
@@ -5731,15 +5811,6 @@ snapshots:
define-properties: 1.2.1
gopd: 1.0.1
- globby@11.1.0:
- dependencies:
- array-union: 2.1.0
- dir-glob: 3.0.1
- fast-glob: 3.3.2
- ignore: 5.3.1
- merge2: 1.4.1
- slash: 3.0.0
-
gopd@1.0.1:
dependencies:
get-intrinsic: 1.2.4
@@ -5780,7 +5851,7 @@ snapshots:
dependencies:
'@types/estree': 1.0.5
'@types/hast': 3.0.4
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
comma-separated-tokens: 2.0.3
devlop: 1.1.0
estree-util-is-identifier-name: 3.0.0
@@ -5847,7 +5918,9 @@ snapshots:
dependencies:
safer-buffer: 2.1.2
- ignore@5.3.1: {}
+ ignore@5.3.2: {}
+
+ ignore@6.0.2: {}
import-fresh@3.3.0:
dependencies:
@@ -5918,6 +5991,10 @@ snapshots:
dependencies:
hasown: 2.0.2
+ is-core-module@2.15.1:
+ dependencies:
+ hasown: 2.0.2
+
is-data-view@1.0.1:
dependencies:
is-typed-array: 1.1.13
@@ -6030,11 +6107,9 @@ snapshots:
html-escaper: 2.0.2
istanbul-lib-report: 3.0.1
- jackspeak@3.4.3:
+ jackspeak@4.0.2:
dependencies:
'@isaacs/cliui': 8.0.2
- optionalDependencies:
- '@pkgjs/parseargs': 0.11.0
jest-changed-files@29.7.0:
dependencies:
@@ -6048,7 +6123,7 @@ snapshots:
'@jest/expect': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
chalk: 4.1.2
co: 4.6.0
dedent: 1.5.3(babel-plugin-macros@3.1.0)
@@ -6068,16 +6143,16 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-cli@29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.13)(typescript@5.5.4)):
+ jest-cli@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)):
dependencies:
- '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.13)(typescript@5.5.4))
+ '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2))
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.13)(typescript@5.5.4))
+ create-jest: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2))
exit: 0.1.2
import-local: 3.1.0
- jest-config: 29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.13)(typescript@5.5.4))
+ jest-config: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2))
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -6087,7 +6162,7 @@ snapshots:
- supports-color
- ts-node
- jest-config@29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.13)(typescript@5.5.4)):
+ jest-config@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)):
dependencies:
'@babel/core': 7.24.6
'@jest/test-sequencer': 29.7.0
@@ -6112,8 +6187,8 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 20.14.13
- ts-node: 10.9.2(@types/node@20.14.13)(typescript@5.5.4)
+ '@types/node': 20.16.9
+ ts-node: 10.9.2(@types/node@20.16.9)(typescript@5.6.2)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -6143,7 +6218,7 @@ snapshots:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
'@types/jsdom': 20.0.1
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
jest-mock: 29.7.0
jest-util: 29.7.0
jsdom: 20.0.3
@@ -6157,7 +6232,7 @@ snapshots:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -6167,7 +6242,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.9
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -6206,7 +6281,7 @@ snapshots:
jest-mock@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
jest-util: 29.7.0
jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
@@ -6241,7 +6316,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
chalk: 4.1.2
emittery: 0.13.1
graceful-fs: 4.2.11
@@ -6269,7 +6344,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
chalk: 4.1.2
cjs-module-lexer: 1.3.1
collect-v8-coverage: 1.0.2
@@ -6315,7 +6390,7 @@ snapshots:
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -6334,7 +6409,7 @@ snapshots:
dependencies:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
@@ -6343,17 +6418,17 @@ snapshots:
jest-worker@29.7.0:
dependencies:
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
- jest@29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.13)(typescript@5.5.4)):
+ jest@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)):
dependencies:
- '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.13)(typescript@5.5.4))
+ '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2))
'@jest/types': 29.6.3
import-local: 3.1.0
- jest-cli: 29.7.0(@types/node@20.14.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.13)(typescript@5.5.4))
+ jest-cli: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -6362,6 +6437,9 @@ snapshots:
jiti@1.21.6: {}
+ jiti@2.0.0:
+ optional: true
+
js-tokens@4.0.0: {}
js-yaml@3.14.1:
@@ -6422,7 +6500,7 @@ snapshots:
json5@2.2.3: {}
- jsonc-parser@3.2.1: {}
+ jsonc-parser@3.3.1: {}
jsonpointer@5.0.1: {}
@@ -6432,26 +6510,26 @@ snapshots:
kleur@3.0.3: {}
- knip@5.27.0(@types/node@20.14.13)(typescript@5.5.4):
+ knip@5.30.6(@types/node@20.16.9)(typescript@5.6.2):
dependencies:
'@nodelib/fs.walk': 1.2.8
'@snyk/github-codeowners': 1.1.0
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
easy-table: 1.2.0
+ enhanced-resolve: 5.17.1
fast-glob: 3.3.2
jiti: 1.21.6
js-yaml: 4.1.0
minimist: 1.2.8
- picocolors: 1.0.1
+ picocolors: 1.1.0
picomatch: 4.0.2
pretty-ms: 9.1.0
- resolve: 1.22.8
smol-toml: 1.3.0
strip-json-comments: 5.0.1
summary: 2.1.0
- typescript: 5.5.4
+ typescript: 5.6.2
zod: 3.23.8
- zod-validation-error: 3.3.0(zod@3.23.8)
+ zod-validation-error: 3.4.0(zod@3.23.8)
leven@3.1.0: {}
@@ -6489,7 +6567,7 @@ snapshots:
fault: 1.0.4
highlight.js: 10.7.3
- lru-cache@10.4.3: {}
+ lru-cache@11.0.1: {}
lru-cache@5.1.1:
dependencies:
@@ -6520,31 +6598,31 @@ snapshots:
markdown-table@3.0.3: {}
- markdownlint-cli@0.41.0:
+ markdownlint-cli@0.42.0:
dependencies:
commander: 12.1.0
get-stdin: 9.0.0
- glob: 10.4.5
- ignore: 5.3.1
+ glob: 11.0.0
+ ignore: 6.0.2
js-yaml: 4.1.0
- jsonc-parser: 3.2.1
+ jsonc-parser: 3.3.1
jsonpointer: 5.0.1
- markdownlint: 0.34.0
- minimatch: 9.0.5
+ markdownlint: 0.35.0
+ minimatch: 10.0.1
run-con: 1.3.2
- smol-toml: 1.2.2
+ smol-toml: 1.3.0
- markdownlint-micromark@0.1.9: {}
+ markdownlint-micromark@0.1.10: {}
- markdownlint@0.34.0:
+ markdownlint@0.35.0:
dependencies:
markdown-it: 14.1.0
- markdownlint-micromark: 0.1.9
+ markdownlint-micromark: 0.1.10
mdast-util-directive@3.0.0:
dependencies:
'@types/mdast': 4.0.4
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
devlop: 1.1.0
mdast-util-from-markdown: 2.0.0
mdast-util-to-markdown: 2.1.0
@@ -6564,7 +6642,7 @@ snapshots:
mdast-util-from-markdown@2.0.0:
dependencies:
'@types/mdast': 4.0.4
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
decode-named-character-reference: 1.0.2
devlop: 1.1.0
mdast-util-to-string: 4.0.0
@@ -6581,7 +6659,7 @@ snapshots:
mdast-util-from-markdown@2.0.1:
dependencies:
'@types/mdast': 4.0.4
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
decode-named-character-reference: 1.0.2
devlop: 1.1.0
mdast-util-to-string: 4.0.0
@@ -6618,7 +6696,7 @@ snapshots:
dependencies:
'@types/mdast': 4.0.4
devlop: 1.1.0
- mdast-util-from-markdown: 2.0.0
+ mdast-util-from-markdown: 2.0.1
mdast-util-to-markdown: 2.1.0
micromark-util-normalize-identifier: 2.0.0
transitivePeerDependencies:
@@ -6627,7 +6705,7 @@ snapshots:
mdast-util-gfm-strikethrough@2.0.0:
dependencies:
'@types/mdast': 4.0.4
- mdast-util-from-markdown: 2.0.0
+ mdast-util-from-markdown: 2.0.1
mdast-util-to-markdown: 2.1.0
transitivePeerDependencies:
- supports-color
@@ -6637,7 +6715,7 @@ snapshots:
'@types/mdast': 4.0.4
devlop: 1.1.0
markdown-table: 3.0.3
- mdast-util-from-markdown: 2.0.0
+ mdast-util-from-markdown: 2.0.1
mdast-util-to-markdown: 2.1.0
transitivePeerDependencies:
- supports-color
@@ -6646,14 +6724,14 @@ snapshots:
dependencies:
'@types/mdast': 4.0.4
devlop: 1.1.0
- mdast-util-from-markdown: 2.0.0
+ mdast-util-from-markdown: 2.0.1
mdast-util-to-markdown: 2.1.0
transitivePeerDependencies:
- supports-color
mdast-util-gfm@3.0.0:
dependencies:
- mdast-util-from-markdown: 2.0.0
+ mdast-util-from-markdown: 2.0.1
mdast-util-gfm-autolink-literal: 2.0.0
mdast-util-gfm-footnote: 2.0.0
mdast-util-gfm-strikethrough: 2.0.0
@@ -6669,7 +6747,7 @@ snapshots:
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
devlop: 1.1.0
- mdast-util-from-markdown: 2.0.0
+ mdast-util-from-markdown: 2.0.1
mdast-util-to-markdown: 2.1.0
transitivePeerDependencies:
- supports-color
@@ -6679,10 +6757,10 @@ snapshots:
'@types/estree-jsx': 1.0.5
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
ccount: 2.0.1
devlop: 1.1.0
- mdast-util-from-markdown: 2.0.0
+ mdast-util-from-markdown: 2.0.1
mdast-util-to-markdown: 2.1.0
parse-entities: 4.0.1
stringify-entities: 4.0.4
@@ -6698,7 +6776,7 @@ snapshots:
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
devlop: 1.1.0
- mdast-util-from-markdown: 2.0.0
+ mdast-util-from-markdown: 2.0.1
mdast-util-to-markdown: 2.1.0
transitivePeerDependencies:
- supports-color
@@ -6723,7 +6801,7 @@ snapshots:
mdast-util-to-markdown@2.1.0:
dependencies:
'@types/mdast': 4.0.4
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
longest-streak: 3.1.0
mdast-util-phrasing: 4.1.0
mdast-util-to-string: 4.0.0
@@ -6950,7 +7028,7 @@ snapshots:
micromark@4.0.0:
dependencies:
'@types/debug': 4.1.12
- debug: 4.3.4
+ debug: 4.3.7
decode-named-character-reference: 1.0.2
devlop: 1.1.0
micromark-core-commonmark: 2.0.1
@@ -6984,6 +7062,10 @@ snapshots:
min-indent@1.0.1: {}
+ minimatch@10.0.1:
+ dependencies:
+ brace-expansion: 2.0.1
+
minimatch@3.1.2:
dependencies:
brace-expansion: 1.1.11
@@ -7004,27 +7086,27 @@ snapshots:
natural-compare@1.4.0: {}
- next@14.2.5(@babel/core@7.24.6)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ next@14.2.13(@babel/core@7.24.6)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
- '@next/env': 14.2.5
+ '@next/env': 14.2.13
'@swc/helpers': 0.5.5
busboy: 1.6.0
- caniuse-lite: 1.0.30001643
+ caniuse-lite: 1.0.30001664
graceful-fs: 4.2.11
postcss: 8.4.31
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
styled-jsx: 5.1.1(@babel/core@7.24.6)(babel-plugin-macros@3.1.0)(react@18.3.1)
optionalDependencies:
- '@next/swc-darwin-arm64': 14.2.5
- '@next/swc-darwin-x64': 14.2.5
- '@next/swc-linux-arm64-gnu': 14.2.5
- '@next/swc-linux-arm64-musl': 14.2.5
- '@next/swc-linux-x64-gnu': 14.2.5
- '@next/swc-linux-x64-musl': 14.2.5
- '@next/swc-win32-arm64-msvc': 14.2.5
- '@next/swc-win32-ia32-msvc': 14.2.5
- '@next/swc-win32-x64-msvc': 14.2.5
+ '@next/swc-darwin-arm64': 14.2.13
+ '@next/swc-darwin-x64': 14.2.13
+ '@next/swc-linux-arm64-gnu': 14.2.13
+ '@next/swc-linux-arm64-musl': 14.2.13
+ '@next/swc-linux-x64-gnu': 14.2.13
+ '@next/swc-linux-x64-musl': 14.2.13
+ '@next/swc-win32-arm64-msvc': 14.2.13
+ '@next/swc-win32-ia32-msvc': 14.2.13
+ '@next/swc-win32-x64-msvc': 14.2.13
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
@@ -7049,7 +7131,7 @@ snapshots:
object-assign@4.1.1: {}
- object-inspect@1.13.1: {}
+ object-inspect@1.13.2: {}
object-keys@1.1.1: {}
@@ -7135,7 +7217,7 @@ snapshots:
parse-entities@4.0.1:
dependencies:
- '@types/unist': 2.0.10
+ '@types/unist': 2.0.11
character-entities: 2.0.2
character-entities-legacy: 3.0.0
character-reference-invalid: 2.0.1
@@ -7165,15 +7247,17 @@ snapshots:
path-parse@1.0.7: {}
- path-scurry@1.11.1:
+ path-scurry@2.0.0:
dependencies:
- lru-cache: 10.4.3
+ lru-cache: 11.0.1
minipass: 7.1.2
path-type@4.0.0: {}
picocolors@1.0.1: {}
+ picocolors@1.1.0: {}
+
picomatch@2.3.1: {}
picomatch@4.0.2: {}
@@ -7184,17 +7268,17 @@ snapshots:
dependencies:
find-up: 4.1.0
- plaiceholder@3.0.0(sharp@0.33.4):
+ plaiceholder@3.0.0(sharp@0.33.5):
dependencies:
- sharp: 0.33.4
+ sharp: 0.33.5
possible-typed-array-names@1.0.0: {}
postcss@8.4.31:
dependencies:
nanoid: 3.3.7
- picocolors: 1.0.1
- source-map-js: 1.2.0
+ picocolors: 1.1.0
+ source-map-js: 1.2.1
prelude-ls@1.2.1: {}
@@ -7255,7 +7339,7 @@ snapshots:
react: 18.3.1
scheduler: 0.23.2
- react-intersection-observer@9.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ react-intersection-observer@9.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
react: 18.3.1
optionalDependencies:
@@ -7267,10 +7351,10 @@ snapshots:
react-is@18.3.1: {}
- react-markdown@9.0.1(@types/react@18.3.3)(react@18.3.1):
+ react-markdown@9.0.1(@types/react@18.3.10)(react@18.3.1):
dependencies:
'@types/hast': 3.0.4
- '@types/react': 18.3.3
+ '@types/react': 18.3.10
devlop: 1.1.0
hast-util-to-jsx-runtime: 2.3.0
html-url-attributes: 3.0.0
@@ -7295,7 +7379,7 @@ snapshots:
react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
- '@babel/runtime': 7.25.0
+ '@babel/runtime': 7.25.6
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
@@ -7368,7 +7452,7 @@ snapshots:
remark-parse@11.0.0:
dependencies:
'@types/mdast': 4.0.4
- mdast-util-from-markdown: 2.0.0
+ mdast-util-from-markdown: 2.0.1
micromark-util-types: 2.0.0
unified: 11.0.4
transitivePeerDependencies:
@@ -7437,7 +7521,7 @@ snapshots:
rxjs@7.8.1:
dependencies:
- tslib: 2.6.2
+ tslib: 2.7.0
safe-array-concat@1.1.2:
dependencies:
@@ -7486,31 +7570,31 @@ snapshots:
functions-have-names: 1.2.3
has-property-descriptors: 1.0.2
- sharp@0.33.4:
+ sharp@0.33.5:
dependencies:
color: 4.2.3
detect-libc: 2.0.3
semver: 7.6.3
optionalDependencies:
- '@img/sharp-darwin-arm64': 0.33.4
- '@img/sharp-darwin-x64': 0.33.4
- '@img/sharp-libvips-darwin-arm64': 1.0.2
- '@img/sharp-libvips-darwin-x64': 1.0.2
- '@img/sharp-libvips-linux-arm': 1.0.2
- '@img/sharp-libvips-linux-arm64': 1.0.2
- '@img/sharp-libvips-linux-s390x': 1.0.2
- '@img/sharp-libvips-linux-x64': 1.0.2
- '@img/sharp-libvips-linuxmusl-arm64': 1.0.2
- '@img/sharp-libvips-linuxmusl-x64': 1.0.2
- '@img/sharp-linux-arm': 0.33.4
- '@img/sharp-linux-arm64': 0.33.4
- '@img/sharp-linux-s390x': 0.33.4
- '@img/sharp-linux-x64': 0.33.4
- '@img/sharp-linuxmusl-arm64': 0.33.4
- '@img/sharp-linuxmusl-x64': 0.33.4
- '@img/sharp-wasm32': 0.33.4
- '@img/sharp-win32-ia32': 0.33.4
- '@img/sharp-win32-x64': 0.33.4
+ '@img/sharp-darwin-arm64': 0.33.5
+ '@img/sharp-darwin-x64': 0.33.5
+ '@img/sharp-libvips-darwin-arm64': 1.0.4
+ '@img/sharp-libvips-darwin-x64': 1.0.4
+ '@img/sharp-libvips-linux-arm': 1.0.5
+ '@img/sharp-libvips-linux-arm64': 1.0.4
+ '@img/sharp-libvips-linux-s390x': 1.0.4
+ '@img/sharp-libvips-linux-x64': 1.0.4
+ '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
+ '@img/sharp-libvips-linuxmusl-x64': 1.0.4
+ '@img/sharp-linux-arm': 0.33.5
+ '@img/sharp-linux-arm64': 0.33.5
+ '@img/sharp-linux-s390x': 0.33.5
+ '@img/sharp-linux-x64': 0.33.5
+ '@img/sharp-linuxmusl-arm64': 0.33.5
+ '@img/sharp-linuxmusl-x64': 0.33.5
+ '@img/sharp-wasm32': 0.33.5
+ '@img/sharp-win32-ia32': 0.33.5
+ '@img/sharp-win32-x64': 0.33.5
shebang-command@2.0.0:
dependencies:
@@ -7525,13 +7609,13 @@ snapshots:
call-bind: 1.0.7
es-errors: 1.3.0
get-intrinsic: 1.2.4
- object-inspect: 1.13.1
+ object-inspect: 1.13.2
signal-exit@3.0.7: {}
signal-exit@4.1.0: {}
- simple-icons@13.3.0: {}
+ simple-icons@13.11.0: {}
simple-swizzle@0.2.2:
dependencies:
@@ -7541,11 +7625,9 @@ snapshots:
slash@3.0.0: {}
- smol-toml@1.2.2: {}
-
smol-toml@1.3.0: {}
- source-map-js@1.2.0: {}
+ source-map-js@1.2.1: {}
source-map-support@0.5.13:
dependencies:
@@ -7560,8 +7642,6 @@ snapshots:
space-separated-tokens@2.0.2: {}
- spawn-command@0.0.2: {}
-
sprintf-js@1.0.3: {}
stack-utils@2.0.6:
@@ -7617,7 +7697,7 @@ snapshots:
strip-ansi@7.1.0:
dependencies:
- ansi-regex: 6.0.1
+ ansi-regex: 6.1.0
strip-bom@3.0.0: {}
@@ -7665,6 +7745,8 @@ snapshots:
symbol-tree@3.2.4: {}
+ tapable@2.2.1: {}
+
test-exclude@6.0.0:
dependencies:
'@istanbuljs/schema': 0.1.3
@@ -7698,25 +7780,25 @@ snapshots:
trough@2.2.0: {}
- ts-api-utils@1.3.0(typescript@5.5.4):
+ ts-api-utils@1.3.0(typescript@5.6.2):
dependencies:
- typescript: 5.5.4
+ typescript: 5.6.2
- ts-node@10.9.2(@types/node@20.14.13)(typescript@5.5.4):
+ ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
- '@types/node': 20.14.13
+ '@types/node': 20.16.9
acorn: 8.11.3
acorn-walk: 8.3.2
arg: 4.1.3
create-require: 1.1.1
diff: 4.0.2
make-error: 1.3.6
- typescript: 5.5.4
+ typescript: 5.6.2
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
@@ -7727,9 +7809,7 @@ snapshots:
minimist: 1.2.8
strip-bom: 3.0.0
- tslib@2.6.2: {}
-
- tslib@2.6.3: {}
+ tslib@2.7.0: {}
type-check@0.4.0:
dependencies:
@@ -7771,18 +7851,18 @@ snapshots:
is-typed-array: 1.1.13
possible-typed-array-names: 1.0.0
- typescript-eslint@7.18.0(eslint@9.8.0)(typescript@5.5.4):
+ typescript-eslint@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2):
dependencies:
- '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/parser': 7.18.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/utils': 7.18.0(eslint@9.8.0)(typescript@5.5.4)
- eslint: 9.8.0
+ '@typescript-eslint/eslint-plugin': 8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2))(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
+ '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
+ '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.2
transitivePeerDependencies:
+ - eslint
- supports-color
- typescript@5.5.4: {}
+ typescript@5.6.2: {}
uc.micro@2.1.0: {}
@@ -7793,11 +7873,11 @@ snapshots:
has-symbols: 1.0.3
which-boxed-primitive: 1.0.2
- undici-types@5.26.5: {}
+ undici-types@6.19.8: {}
unified@11.0.4:
dependencies:
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
bail: 2.0.2
devlop: 1.1.0
extend: 3.0.2
@@ -7807,26 +7887,26 @@ snapshots:
unist-util-is@6.0.0:
dependencies:
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
unist-util-position@5.0.0:
dependencies:
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
unist-util-remove-position@5.0.0:
dependencies:
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
unist-util-visit: 5.0.0
unist-util-remove@4.0.0:
dependencies:
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
unist-util-is: 6.0.0
unist-util-visit-parents: 6.0.1
unist-util-select@5.1.0:
dependencies:
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
css-selector-parser: 3.0.5
devlop: 1.1.0
nth-check: 2.1.1
@@ -7834,16 +7914,16 @@ snapshots:
unist-util-stringify-position@4.0.0:
dependencies:
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
unist-util-visit-parents@6.0.1:
dependencies:
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
unist-util-is: 6.0.0
unist-util-visit@5.0.0:
dependencies:
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
unist-util-is: 6.0.0
unist-util-visit-parents: 6.0.1
@@ -7880,26 +7960,31 @@ snapshots:
vfile-matter@5.0.0:
dependencies:
- vfile: 6.0.2
- yaml: 2.5.0
+ vfile: 6.0.3
+ yaml: 2.5.1
vfile-message@4.0.2:
dependencies:
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
unist-util-stringify-position: 4.0.0
vfile@6.0.1:
dependencies:
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
unist-util-stringify-position: 4.0.0
vfile-message: 4.0.2
vfile@6.0.2:
dependencies:
- '@types/unist': 3.0.2
+ '@types/unist': 3.0.3
unist-util-stringify-position: 4.0.0
vfile-message: 4.0.2
+ vfile@6.0.3:
+ dependencies:
+ '@types/unist': 3.0.3
+ vfile-message: 4.0.2
+
w3c-xmlserializer@4.0.0:
dependencies:
xml-name-validator: 4.0.0
@@ -7981,7 +8066,7 @@ snapshots:
yaml@1.10.2: {}
- yaml@2.5.0: {}
+ yaml@2.5.1: {}
yargs-parser@21.1.1: {}
@@ -7999,7 +8084,7 @@ snapshots:
yocto-queue@0.1.0: {}
- zod-validation-error@3.3.0(zod@3.23.8):
+ zod-validation-error@3.4.0(zod@3.23.8):
dependencies:
zod: 3.23.8
diff --git a/src/components/ArticleCard/ArticleCard.test.tsx b/src/components/ArticleCard/ArticleCard.test.tsx
index 3dc6670e..e235d571 100644
--- a/src/components/ArticleCard/ArticleCard.test.tsx
+++ b/src/components/ArticleCard/ArticleCard.test.tsx
@@ -19,7 +19,7 @@ describe(ArticleCard.name, () => {
title: '',
},
date: null,
- day: '23',
+ href: '/path/to/article',
matter: {
authors: 'Firstname Lastname',
banner: 'banner',
@@ -27,10 +27,6 @@ describe(ArticleCard.name, () => {
tags: [],
title: 'Article Title',
},
- month: '04',
- route: '/path/to/article',
- slug: 'article',
- year: '2023',
};
});
diff --git a/src/components/ArticleCard/ArticleCard.tsx b/src/components/ArticleCard/ArticleCard.tsx
index 0254c983..f7fda6db 100644
--- a/src/components/ArticleCard/ArticleCard.tsx
+++ b/src/components/ArticleCard/ArticleCard.tsx
@@ -1,7 +1,11 @@
-import { Card, CardActionArea, CardContent, Typography } from '@mui/material';
-import { alpha } from '@mui/material/styles';
+import {
+ alpha,
+ Card,
+ CardActionArea,
+ CardContent,
+ Typography,
+} from '@mui/material';
import NextLink from 'next/link';
-import { type FunctionComponent } from 'react';
import { ArticleMeta } from '@/components/ArticleMeta/ArticleMeta';
import { type ArticleCard as ArticleCardModel } from '@/tools/markdown/types';
@@ -9,14 +13,12 @@ import { type ArticleCard as ArticleCardModel } from '@/tools/markdown/types';
/** Vertical height that should be added for the banner. */
const BANNER_OFFSET = 90;
-type Props = ArticleCardModel;
-
-export const ArticleCard: FunctionComponent = ({
+export const ArticleCard = ({
banner,
date,
+ href,
matter,
- route,
-}) => (
+}: ArticleCardModel) => (
= ({
>
;
+ sx: SxProps;
};
export const BackToTop: FunctionComponent = ({ sx }) => {
- const [hasBeenDisplayed, setHasBeenDisplayed] = useState(false);
+ const [hasBeenDisplayed, setHasBeenDisplayed] = useState(false);
const trigger = useScrollTrigger({ disableHysteresis: true, threshold: 500 });
- const onClick = () => {
+ const onClick = () =>
document.body.scrollIntoView({ behavior: 'smooth', block: 'start' });
- };
useEffect(() => {
if (trigger) {
diff --git a/src/components/Banner/Banner.tsx b/src/components/Banner/Banner.tsx
index e5576d53..76576f4c 100644
--- a/src/components/Banner/Banner.tsx
+++ b/src/components/Banner/Banner.tsx
@@ -1,5 +1,4 @@
-import { Box, Divider, Typography } from '@mui/material';
-import { alpha } from '@mui/material/styles';
+import { alpha, Box, Divider, Typography } from '@mui/material';
import Image from 'next/image';
import { type FunctionComponent } from 'react';
@@ -111,11 +110,7 @@ export const Banner: FunctionComponent = ({
})}
>
{footer.map((line) => (
-
+
{line}
))}
diff --git a/src/components/Card/Card.tsx b/src/components/Card/Card.tsx
index bf722e7f..9106902f 100644
--- a/src/components/Card/Card.tsx
+++ b/src/components/Card/Card.tsx
@@ -1,7 +1,6 @@
import { mdiCached } from '@mdi/js';
import Icon from '@mdi/react';
-import { Box, IconButton } from '@mui/material';
-import { alpha } from '@mui/material/styles';
+import { alpha, Box, IconButton } from '@mui/material';
import { useState, type FunctionComponent, type ReactNode } from 'react';
import { CardFace } from '@/components/Card/CardFace';
@@ -12,7 +11,7 @@ type Props = {
};
export const Card: FunctionComponent = ({ data }) => {
- const [selectedFace, setSelectedFace] = useState(0);
+ const [selectedFace, setSelectedFace] = useState(0);
/** Toggle index between 0 and 1. */
const onFlip = () => setSelectedFace((previous) => 1 - previous);
diff --git a/src/components/Card/CardFace.tsx b/src/components/Card/CardFace.tsx
index 6de4f194..609f7de5 100644
--- a/src/components/Card/CardFace.tsx
+++ b/src/components/Card/CardFace.tsx
@@ -1,14 +1,12 @@
-import { Box, Fade, Tooltip } from '@mui/material';
-import { type Theme } from '@mui/material/styles';
-import { type SxProps } from '@mui/system';
-import { type FunctionComponent, type ReactNode } from 'react';
+import { Box, Fade, Tooltip, type SxProps } from '@mui/material';
+import { type FunctionComponent } from 'react';
import { type ScryCard } from '@/tools/scryfall/types';
type Props = {
active: boolean;
data: ScryCard;
- sx?: SxProps;
+ sx?: SxProps;
};
export const CardFace: FunctionComponent = ({ active, data, sx }) => {
@@ -17,20 +15,14 @@ export const CardFace: FunctionComponent = ({ active, data, sx }) => {
if (!image) return null;
- const titleLines: string[] = [
- `"${name}" from ${setName}`,
- `Art by ${artist}`,
- ];
-
- const title: ReactNode = titleLines.map((line, index) => (
- {line}
- ));
+ const description = [`"${name}" from ${setName}`, `Art by ${artist}`];
+ const title = description.map((line) => {line}
);
return (
= ({ cards }) => {
sx={{ listStyleType: 'none', m: 0, minWidth: 170, p: 0 }}
>
{cards.map(([quantity, name]) => (
-
+
= ({
{main.map((cards, index) => (
-
+
))}
diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx
index 474e9a97..6395043b 100644
--- a/src/components/Footer/Footer.tsx
+++ b/src/components/Footer/Footer.tsx
@@ -1,9 +1,9 @@
-import { Box, Typography } from '@mui/material';
import {
+ Box,
ThemeProvider as MuiThemeProvider,
- type Theme,
-} from '@mui/material/styles';
-import { type SxProps } from '@mui/system';
+ Typography,
+ type SxProps,
+} from '@mui/material';
import { type FunctionComponent, type ReactNode } from 'react';
import { Link } from '@/components/Link/Link';
@@ -11,7 +11,7 @@ import { darkTheme } from '@/theme/theme';
type Props = {
isClear: boolean;
- sx?: SxProps;
+ sx?: SxProps;
};
export const Footer: FunctionComponent = ({ isClear, sx }) => {
diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx
index 63188384..8212ac36 100644
--- a/src/components/Header/Header.tsx
+++ b/src/components/Header/Header.tsx
@@ -1,7 +1,13 @@
import { mdiMenu } from '@mdi/js';
import Icon from '@mdi/react';
-import { AppBar, Box, IconButton, Toolbar } from '@mui/material';
-import { alpha, useTheme } from '@mui/material/styles';
+import {
+ alpha,
+ AppBar,
+ Box,
+ IconButton,
+ Toolbar,
+ useTheme,
+} from '@mui/material';
import { type FunctionComponent } from 'react';
import { Progress } from '@/components/Progress/Progress';
diff --git a/src/components/Layout/Layout.tsx b/src/components/Layout/Layout.tsx
index 2553745f..ce5dcde9 100644
--- a/src/components/Layout/Layout.tsx
+++ b/src/components/Layout/Layout.tsx
@@ -1,42 +1,36 @@
-import { Box, Container } from '@mui/material';
-import { useTheme, type Theme } from '@mui/material/styles';
-import useMediaQuery from '@mui/material/useMediaQuery';
-import { type SxProps } from '@mui/system';
+import { Box, Container, useMediaQuery, useTheme } from '@mui/material';
import { useRouter } from 'next/router';
import {
useCallback,
useEffect,
useState,
- type FunctionComponent,
type PropsWithChildren,
} from 'react';
-import { z } from 'zod';
import { BackToTop } from '@/components/BackToTop/BackToTop';
import { Footer } from '@/components/Footer/Footer';
import { Header } from '@/components/Header/Header';
import { Sidebar } from '@/components/Sidebar/Sidebar';
import { Title } from '@/components/Title/Title';
-import { CATEGORIES } from '@/tools/markdown/constants';
-import { type MenuEntry } from '@/tools/markdown/types';
-import { union } from '@/tools/z/union';
+import { type MENU } from '@/tools/markdown/menu';
+import { zCategory } from '@/tools/z/schemas';
-type Props = PropsWithChildren & {
+type Props = {
background?: string;
- menu: MenuEntry[];
+ menu: typeof MENU;
title: string;
withBackToTop?: boolean;
withProgress?: boolean;
};
-export const Layout: FunctionComponent = ({
+export const Layout = ({
background,
children,
menu,
title,
withBackToTop = false,
withProgress = false,
-}) => {
+}: PropsWithChildren) => {
const router = useRouter();
const theme = useTheme();
// NOTE Prefer `up` over `down` to avoid flickering
@@ -44,12 +38,7 @@ export const Layout: FunctionComponent = ({
const [isSidebarOpen, setIsSidebarOpen] = useState(false);
const isClear = !!background;
// TODO Pretty sure this can fail client side until migration to `app` router
- const category = z
- .preprocess(
- (value) => (typeof value === 'string' ? value.toUpperCase() : value),
- union(CATEGORIES).optional(),
- )
- .parse(router.query.category);
+ const category = zCategory.optional().parse(router.query.category);
const closeSidebar = useCallback(() => setIsSidebarOpen(false), []);
@@ -60,30 +49,30 @@ export const Layout: FunctionComponent = ({
return () => router.events.off('routeChangeStart', closeSidebar);
}, [closeSidebar, router]);
- const sx: SxProps = [
- { display: 'flex', flexDirection: 'column', minHeight: '100%' },
- background !== undefined && {
- backgroundImage: `url(${background})`,
- backgroundPosition: 'center',
- backgroundRepeat: 'no-repeat',
- backgroundSize: 'cover',
- color: 'white',
- position: 'relative',
- '&:before': {
- backdropFilter: 'blur(4px)',
- bottom: 0,
- content: '""',
- display: 'block',
- left: 0,
- position: 'absolute',
- right: 0,
- top: 0,
- },
- },
- ];
-
return (
-
+
= ({ id, node }) => {
- const [hasError, setHasError] = useState(false);
- const [height, setHeight] = useState(700);
- const [isLoading, setIsLoading] = useState(true);
+ const [hasError, setHasError] = useState(false);
+ const [height, setHeight] = useState(700);
+ const [isLoading, setIsLoading] = useState(true);
const tweet = useRef(null);
const { inView, ref: root } = useInView({
fallbackInView: true,
diff --git a/src/components/Progress/Progress.tsx b/src/components/Progress/Progress.tsx
index 6da27f74..74af53fb 100644
--- a/src/components/Progress/Progress.tsx
+++ b/src/components/Progress/Progress.tsx
@@ -1,12 +1,10 @@
-import { Box } from '@mui/material';
-import { type Theme } from '@mui/material/styles';
-import { type SxProps } from '@mui/system';
+import { Box, type SxProps } from '@mui/material';
import { type FunctionComponent } from 'react';
import { useScroll } from '@/hooks/useScroll';
type Props = {
- sx?: SxProps;
+ sx?: SxProps;
};
export const Progress: FunctionComponent = ({ sx }) => {
diff --git a/src/components/Sidebar/Entry.tsx b/src/components/Sidebar/Entry.tsx
new file mode 100644
index 00000000..89e6447a
--- /dev/null
+++ b/src/components/Sidebar/Entry.tsx
@@ -0,0 +1,76 @@
+import { mdiChevronDown } from '@mdi/js';
+import Icon from '@mdi/react';
+import {
+ Box,
+ Collapse,
+ List,
+ ListItemButton,
+ ListItemText,
+} from '@mui/material';
+import NextLink from 'next/link';
+import { useRouter } from 'next/router';
+import { useState } from 'react';
+
+import { type MENU } from '@/tools/markdown/menu';
+
+type Props = {
+ chapter: string;
+ pages: (typeof MENU)[number]['pages'];
+ subtitle?: string;
+ title?: string;
+};
+
+export const Entry = ({ chapter, pages, subtitle, title }: Props) => {
+ const { query } = useRouter();
+ const currentChapter = `${query.category}`.toUpperCase();
+ const currentSlug = `${query.chapter}`;
+ const [isOpen, setIsOpen] = useState(chapter === currentChapter);
+
+ if (!subtitle || !title) return null;
+
+ const onToggle = () => setIsOpen((previous) => !previous);
+
+ return (
+ <>
+
+
+ ({
+ transition: transitions.create('transform'),
+ })}
+ />
+
+
+
+ {pages.map(({ href, slug, title }) => (
+
+
+
+ ))}
+
+
+ >
+ );
+};
diff --git a/src/components/Sidebar/EntryAsLink.tsx b/src/components/Sidebar/EntryAsLink.tsx
new file mode 100644
index 00000000..b55da78a
--- /dev/null
+++ b/src/components/Sidebar/EntryAsLink.tsx
@@ -0,0 +1,22 @@
+import { ListItemButton, ListItemText } from '@mui/material';
+import NextLink from 'next/link';
+import { useRouter } from 'next/router';
+
+type Props = {
+ href: string;
+ subtitle: string;
+ title: string;
+};
+
+export const EntryAsLink = ({ href, subtitle, title }: Props) => {
+ const { asPath } = useRouter();
+ return (
+
+
+
+ );
+};
diff --git a/src/components/Sidebar/Sidebar.tsx b/src/components/Sidebar/Sidebar.tsx
index 82900e1e..98235110 100644
--- a/src/components/Sidebar/Sidebar.tsx
+++ b/src/components/Sidebar/Sidebar.tsx
@@ -4,29 +4,40 @@ import {
Drawer,
drawerClasses,
List,
+ ThemeProvider as MuiThemeProvider,
type DrawerProps,
} from '@mui/material';
-import {
- ThemeProvider as MuiThemeProvider,
- type Theme,
-} from '@mui/material/styles';
-import { type SxProps } from '@mui/system';
-import NextLink from 'next/link';
-import { type FunctionComponent, type ReactNode } from 'react';
+import { type FunctionComponent } from 'react';
-import { SidebarEntry } from '@/components/Sidebar/SidebarEntry';
+import { Entry } from '@/components/Sidebar/Entry';
+import { EntryAsLink } from '@/components/Sidebar/EntryAsLink';
import { SidebarHeader } from '@/components/Sidebar/SidebarHeader';
import { SidebarRosetta } from '@/components/Sidebar/SidebarRosetta';
import { darkTheme } from '@/theme/theme';
import { type CATEGORIES } from '@/tools/markdown/constants';
-import { type MenuEntry } from '@/tools/markdown/types';
+import { type MENU } from '@/tools/markdown/menu';
+
+/**
+ * Decorate menu entries with a pretty title and subtitle.
+ * Omitting an entry simply hides it from the menu.
+ */
+const DECORATIONS: Partial<
+ Record<(typeof CATEGORIES)[number], { subtitle: string; title: string }>
+> =
+ // prettier-ignore
+ {
+ APPENDICES: { subtitle: 'Other Resources', title: 'Appendices' },
+ DDFT: { subtitle: 'Doomsday Fetchland Tendrils', title: 'DDFT' },
+ ENTOMBSDAY: { subtitle: 'Tin Fins Hybrid', title: 'Entombsday' },
+ MEANDECK: { subtitle: 'Force of Will Doomsday', title: 'Doomsday' },
+};
type Props = {
category: (typeof CATEGORIES)[number] | undefined;
isClear: boolean;
isMobile?: boolean;
isOpen?: boolean;
- menu: MenuEntry[];
+ menu: typeof MENU;
onClose: () => void;
};
@@ -38,27 +49,6 @@ export const Sidebar: FunctionComponent = ({
menu,
onClose,
}) => {
- const sx: SxProps = ({ drawer }) => ({
- [`.${drawerClasses.paper}`]: [
- { width: drawer.width },
- isClear && !isMobile && { background: 'none' },
- ],
- });
-
- const sxBody: SxProps = [
- { color: 'text.primary', flexGrow: 1, overflowY: 'auto' },
- isClear && !isMobile && { backdropFilter: 'blur(24px)' },
- ];
-
- const sxHeader: SxProps = [
- { backgroundColor: ({ palette }) => palette.background.paper },
- (!isClear || isMobile) && {
- borderBottomColor: ({ palette }) => palette.divider,
- borderBottomStyle: 'solid',
- borderBottomWidth: 1,
- },
- ];
-
const drawerProps: DrawerProps = isMobile
? {
ModalProps: { keepMounted: true },
@@ -68,14 +58,26 @@ export const Sidebar: FunctionComponent = ({
}
: { open: true, variant: 'permanent' };
- const body: ReactNode = (
-
+ const body = (
+
- {menu.map((entry) => (
-
- ))}
-
+ DECORATIONS[entry.id] && (
+
+ ),
+ )}
+ = ({
);
return (
-
-
+ ({
+ [`.${drawerClasses.paper}`]: [
+ { width: drawer.width },
+ isClear && !isMobile && { background: 'none' },
+ ],
+ })}
+ {...drawerProps}
+ >
+
{isClear && !isMobile ? (
{body}
) : (
diff --git a/src/components/Sidebar/SidebarEntry.tsx b/src/components/Sidebar/SidebarEntry.tsx
deleted file mode 100644
index 567b3670..00000000
--- a/src/components/Sidebar/SidebarEntry.tsx
+++ /dev/null
@@ -1,87 +0,0 @@
-import { mdiChevronDown } from '@mdi/js';
-import Icon from '@mdi/react';
-import {
- Collapse,
- Divider,
- List,
- ListItemButton,
- ListItemText,
-} from '@mui/material';
-import NextLink from 'next/link';
-import { useRouter } from 'next/router';
-import {
- forwardRef,
- useState,
- type ElementType,
- type FunctionComponent,
-} from 'react';
-
-import { type CATEGORIES } from '@/tools/markdown/constants';
-import { type ChapterCard, type MenuEntry } from '@/tools/markdown/types';
-
-type Props = Omit & {
- category?: (typeof CATEGORIES)[number];
- children?: never;
- component?: ElementType;
- href?: string;
- pages?: ChapterCard[];
-};
-
-export const SidebarEntry: FunctionComponent = forwardRef<
- HTMLDivElement,
- Props
->(({ category, pages = [], subtitle, title, ...rest }, ref) => {
- const { asPath, query } = useRouter();
- const routeCategory = `${query.category}`.toUpperCase();
- const routeChapter = `${query.chapter}`;
- const hasPages = pages.length > 0;
- const [isOpen, setIsOpen] = useState(hasPages && category === routeCategory);
-
- /** Toggle the drawer in mobile viewport. */
- const onToggle = () => setIsOpen((previous) => !previous);
-
- return (
- <>
- ({
- '> svg': { transition: transitions.create('transform') },
- })}
- {...rest}
- {...(hasPages && { onClick: onToggle })}
- >
-
- {hasPages && (
-
- )}
-
- {hasPages && (
-
-
-
- {pages.map(({ category, matter, route, slug }) => (
-
-
-
- ))}
-
-
-
- )}
- >
- );
-});
diff --git a/src/components/Sidebar/SidebarHeader.tsx b/src/components/Sidebar/SidebarHeader.tsx
index 05c780aa..9ad68b5b 100644
--- a/src/components/Sidebar/SidebarHeader.tsx
+++ b/src/components/Sidebar/SidebarHeader.tsx
@@ -1,8 +1,13 @@
import { mdiLightbulbOff, mdiLightbulbOn } from '@mdi/js';
import { Icon } from '@mdi/react';
-import { Box, Button, IconButton, Toolbar, Tooltip } from '@mui/material';
-import { type Theme } from '@mui/material/styles';
-import { type SxProps } from '@mui/system';
+import {
+ Box,
+ Button,
+ IconButton,
+ Toolbar,
+ Tooltip,
+ type SxProps,
+} from '@mui/material';
import NextLink from 'next/link';
import { useContext, type FunctionComponent } from 'react';
import { siDiscord } from 'simple-icons';
@@ -11,7 +16,7 @@ import { ThemeContext } from '@/theme/ThemeContext';
type Props = {
onClose: () => void;
- sx?: SxProps;
+ sx?: SxProps;
};
export const SidebarHeader: FunctionComponent = ({ onClose, sx }) => {
diff --git a/src/components/Sidebar/SidebarRosetta.tsx b/src/components/Sidebar/SidebarRosetta.tsx
index bb431f7c..25804387 100644
--- a/src/components/Sidebar/SidebarRosetta.tsx
+++ b/src/components/Sidebar/SidebarRosetta.tsx
@@ -5,9 +5,8 @@ import {
tableCellClasses,
TableHead,
TableRow,
+ type SxProps,
} from '@mui/material';
-import { type Theme } from '@mui/material/styles';
-import { type SxProps } from '@mui/system';
import { useEffect, useState, type FunctionComponent } from 'react';
import { getRosetta, type Rosetta } from '@/tools/game/getRosetta';
@@ -15,7 +14,7 @@ import { type CATEGORIES } from '@/tools/markdown/constants';
type Props = {
category: (typeof CATEGORIES)[number] | undefined;
- sx?: SxProps;
+ sx?: SxProps;
};
export const SidebarRosetta: FunctionComponent = ({ category, sx }) => {
@@ -45,7 +44,7 @@ export const SidebarRosetta: FunctionComponent = ({ category, sx }) => {
{rosetta.map(([notation, card]) => (
-
+
{notation}
diff --git a/src/components/SpoilsCalculator/SpoilsCalculator.tsx b/src/components/SpoilsCalculator/SpoilsCalculator.tsx
index e1017994..36d61a0c 100644
--- a/src/components/SpoilsCalculator/SpoilsCalculator.tsx
+++ b/src/components/SpoilsCalculator/SpoilsCalculator.tsx
@@ -5,7 +5,7 @@ import {
Button,
ButtonGroup,
Divider,
- Unstable_Grid2 as Grid,
+ Grid2 as Grid,
Table,
TableBody,
TableCell,
@@ -109,7 +109,7 @@ export const SpoilsCalculator: FunctionComponent = () => {
return (
-
+
= () => {
value={input.deck}
/>
-
+
= () => {
value={input.copies}
/>
-
+
= () => {
value={input.life}
/>
-
+
10000 && 'Not suited for above 10,000'}
diff --git a/src/hooks/useScroll.ts b/src/hooks/useScroll.ts
index 29a6f041..8ec9a7e5 100644
--- a/src/hooks/useScroll.ts
+++ b/src/hooks/useScroll.ts
@@ -1,7 +1,7 @@
import { useEffect, useState } from 'react';
export const useScroll = (): number => {
- const [scroll, setScroll] = useState(0);
+ const [scroll, setScroll] = useState(0);
const onScroll = () => {
const { documentElement } = document;
diff --git a/src/pages/404.tsx b/src/pages/404.tsx
index 4f710c21..4d10ed67 100644
--- a/src/pages/404.tsx
+++ b/src/pages/404.tsx
@@ -2,11 +2,10 @@ import { Box } from '@mui/material';
import { type GetStaticProps, type NextPage } from 'next';
import { Layout } from '@/components/Layout/Layout';
-import { MENU } from '@/tools/markdown/getMenu';
-import { type MenuEntry } from '@/tools/markdown/types';
+import { MENU } from '@/tools/markdown/menu';
type Props = {
- menu: MenuEntry[];
+ menu: typeof MENU;
};
const Page: NextPage = ({ menu }) => (
diff --git a/src/pages/[category]/[chapter].tsx b/src/pages/[category]/[chapter].tsx
index 3790112a..c9bfaf63 100644
--- a/src/pages/[category]/[chapter].tsx
+++ b/src/pages/[category]/[chapter].tsx
@@ -5,13 +5,13 @@ import { Banner } from '@/components/Banner/Banner';
import { Layout } from '@/components/Layout/Layout';
import { Markdown } from '@/components/Markdown/Markdown';
import { CHAPTERS } from '@/tools/markdown/files';
-import { getChapter } from '@/tools/markdown/getMarkdown';
-import { MENU } from '@/tools/markdown/getMenu';
-import { type Chapter, type MenuEntry } from '@/tools/markdown/types';
+import { getChapter } from '@/tools/markdown/getChapter';
+import { MENU } from '@/tools/markdown/menu';
+import { type Chapter } from '@/tools/markdown/types';
type Props = {
chapter: Chapter;
- menu: MenuEntry[];
+ menu: typeof MENU;
};
const Page: NextPage = ({ chapter, menu }) => (
diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx
index b094bfd2..d7d9d9fd 100644
--- a/src/pages/_app.tsx
+++ b/src/pages/_app.tsx
@@ -1,4 +1,4 @@
-import CssBaseline from '@mui/material/CssBaseline';
+import { CssBaseline } from '@mui/material';
import { Analytics } from '@vercel/analytics/react';
import { type AppProps } from 'next/app';
import Head from 'next/head';
diff --git a/src/pages/articles.tsx b/src/pages/articles.tsx
index f8297e92..e61f0183 100644
--- a/src/pages/articles.tsx
+++ b/src/pages/articles.tsx
@@ -11,24 +11,24 @@ import NextLink from 'next/link';
import { ArticleMeta } from '@/components/ArticleMeta/ArticleMeta';
import { Layout } from '@/components/Layout/Layout';
import { getArticleCards } from '@/tools/markdown/getArticleCards';
-import { MENU } from '@/tools/markdown/getMenu';
-import { type ArticleCard, type MenuEntry } from '@/tools/markdown/types';
+import { MENU } from '@/tools/markdown/menu';
+import { type ArticleCard } from '@/tools/markdown/types';
type Props = {
articles: ArticleCard[];
- menu: MenuEntry[];
+ menu: typeof MENU;
};
const Page: NextPage = ({ articles, menu }) => (
- {articles.map(({ date, matter, route }, index) => (
+ {articles.map(({ date, href, matter }, index) => (
= ({ article, footer, menu }) => (
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
index cde0ce51..bb63190f 100644
--- a/src/pages/index.tsx
+++ b/src/pages/index.tsx
@@ -1,4 +1,10 @@
-import { Button, ButtonGroup, Card, CardContent, Grid } from '@mui/material';
+import {
+ Button,
+ ButtonGroup,
+ Card,
+ CardContent,
+ Grid2 as Grid,
+} from '@mui/material';
import { type GetStaticProps, type NextPage } from 'next';
import { useEffect, useRef, useState } from 'react';
@@ -7,10 +13,9 @@ import { Layout } from '@/components/Layout/Layout';
import { Markdown } from '@/components/Markdown/Markdown';
import { getArticleCards } from '@/tools/markdown/getArticleCards';
import { getMarkdown } from '@/tools/markdown/getMarkdown';
-import { MENU } from '@/tools/markdown/getMenu';
+import { MENU } from '@/tools/markdown/menu';
import {
type ArticleCard as ArticleCardModel,
- type MenuEntry,
type Partial,
} from '@/tools/markdown/types';
@@ -18,7 +23,7 @@ const ARTICLES_INITIAL_SIZE = 5;
type Props = {
articles: ArticleCardModel[];
- menu: MenuEntry[];
+ menu: typeof MENU;
welcome: Partial;
};
@@ -43,14 +48,14 @@ const Page: NextPage = ({ articles, menu, welcome }) => {
return (
-
+
-
+
= ({ articles, menu, welcome }) => {
sx={{ flexDirection: 'column', pb: 2 }}
>
{articles.slice(0, size).map((article) => (
-
+
))}
-
+
= articles.length}
variant="outlined"
diff --git a/src/pages/license.tsx b/src/pages/license.tsx
index 39cd3730..3fc93296 100644
--- a/src/pages/license.tsx
+++ b/src/pages/license.tsx
@@ -4,12 +4,12 @@ import { type GetStaticProps, type NextPage } from 'next';
import { Layout } from '@/components/Layout/Layout';
import { Markdown } from '@/components/Markdown/Markdown';
import { getMarkdown } from '@/tools/markdown/getMarkdown';
-import { MENU } from '@/tools/markdown/getMenu';
-import { type MenuEntry, type Partial } from '@/tools/markdown/types';
+import { MENU } from '@/tools/markdown/menu';
+import { type Partial } from '@/tools/markdown/types';
type Props = {
license: Partial;
- menu: MenuEntry[];
+ menu: typeof MENU;
};
const Page: NextPage = ({ license, menu }) => (
diff --git a/src/pages/sandbox/index.tsx b/src/pages/sandbox/index.tsx
index 5b885a31..a22efd54 100644
--- a/src/pages/sandbox/index.tsx
+++ b/src/pages/sandbox/index.tsx
@@ -3,18 +3,17 @@ import {
Card,
CardContent,
Divider,
+ Stack,
TextField,
Typography,
} from '@mui/material';
-import { Stack } from '@mui/system';
import { type GetStaticProps, type NextPage } from 'next';
import { useEffect, useState, type ChangeEvent } from 'react';
import { Layout } from '@/components/Layout/Layout';
import { SpoilsCalculator } from '@/components/SpoilsCalculator/SpoilsCalculator';
import { phyrexian } from '@/fonts/fonts';
-import { MENU } from '@/tools/markdown/getMenu';
-import { type MenuEntry } from '@/tools/markdown/types';
+import { MENU } from '@/tools/markdown/menu';
// NOTE Flavor text from "Dark Ritual" in "Urza's Saga"
const DEFAULT_INPUT = `From void evolved Phyrexia.
@@ -22,11 +21,11 @@ Great Yawgmoth, Father of Machines, saw its perfection.
Thus the Grand Evolution began.`;
type Props = {
- menu: MenuEntry[];
+ menu: typeof MENU;
};
const Page: NextPage = ({ menu }) => {
- const [input, setInput] = useState(DEFAULT_INPUT);
+ const [input, setInput] = useState(DEFAULT_INPUT);
const [output, setOutput] = useState<{ id: number; text: string }[]>([]);
const onChange = ({ target }: ChangeEvent) =>
diff --git a/src/pages/sandbox/markdown.tsx b/src/pages/sandbox/markdown.tsx
index fa7d677a..dc11c2b6 100644
--- a/src/pages/sandbox/markdown.tsx
+++ b/src/pages/sandbox/markdown.tsx
@@ -4,12 +4,12 @@ import { type GetStaticProps, type NextPage } from 'next';
import { Layout } from '@/components/Layout/Layout';
import { Markdown } from '@/components/Markdown/Markdown';
import { getMarkdown } from '@/tools/markdown/getMarkdown';
-import { MENU } from '@/tools/markdown/getMenu';
-import { type MenuEntry, type Partial } from '@/tools/markdown/types';
+import { MENU } from '@/tools/markdown/menu';
+import { type Partial } from '@/tools/markdown/types';
type Props = {
markdown: Partial;
- menu: MenuEntry[];
+ menu: typeof MENU;
};
const Page: NextPage = ({ markdown, menu }) => (
diff --git a/src/theme/ThemeContext.tsx b/src/theme/ThemeContext.tsx
index 3e8a086a..596b3c7f 100644
--- a/src/theme/ThemeContext.tsx
+++ b/src/theme/ThemeContext.tsx
@@ -1,4 +1,4 @@
-import { ThemeProvider as MuiThemeProvider } from '@mui/material/styles';
+import { ThemeProvider as MuiThemeProvider } from '@mui/material';
import {
createContext,
useEffect,
diff --git a/src/theme/theme.ts b/src/theme/theme.ts
index da7b5ac3..80fd2f8d 100644
--- a/src/theme/theme.ts
+++ b/src/theme/theme.ts
@@ -1,3 +1,4 @@
+import { alpha, createTheme, type ThemeOptions } from '@mui/material';
import {
amber as article,
grey,
@@ -6,12 +7,6 @@ import {
purple as report,
pink as secondary,
} from '@mui/material/colors';
-import {
- alpha,
- createTheme,
- type Theme,
- type ThemeOptions,
-} from '@mui/material/styles';
import { deepmerge } from '@mui/utils';
import { barf } from '@/theme/tools/barf';
@@ -59,7 +54,7 @@ declare module '@mui/system/createTheme/shape' {
/* eslint-enable @typescript-eslint/consistent-type-definitions */
-const customizeTheme = (options: ThemeOptions): Theme => {
+const customizeTheme = (options: ThemeOptions) => {
const theme = createTheme(options);
const { breakpoints, palette, spacing, typography } = theme;
const { mode } = palette;
@@ -198,7 +193,7 @@ const customizeTheme = (options: ThemeOptions): Theme => {
);
};
-export const darkTheme: Theme = customizeTheme({
+export const darkTheme = customizeTheme({
palette: {
background: { default: '#121212', paper: grey[900] },
dividerOpaque: grey[800],
@@ -213,7 +208,7 @@ export const darkTheme: Theme = customizeTheme({
},
});
-export const lightTheme: Theme = customizeTheme({
+export const lightTheme = customizeTheme({
palette: {
background: { default: grey[100] },
dividerOpaque: grey[300],
diff --git a/src/theme/tools/barf.ts b/src/theme/tools/barf.ts
index 11ce5b51..7cd28ca2 100644
--- a/src/theme/tools/barf.ts
+++ b/src/theme/tools/barf.ts
@@ -1,7 +1,7 @@
-import { type Theme } from '@mui/material/styles';
-import { type CSSProperties } from '@mui/material/styles/createMixins';
+import { type Theme } from '@mui/material';
+import { type SystemStyleObject } from '@mui/system';
-export const barf = ({ breakpoints, spacing }: Theme): CSSProperties => ({
+export const barf = ({ breakpoints, spacing }: Theme): SystemStyleObject => ({
marginLeft: spacing(-4),
marginRight: spacing(-4),
width: 'auto',
diff --git a/src/theme/tools/gutters.ts b/src/theme/tools/gutters.ts
index b95ea9be..21afdb6d 100644
--- a/src/theme/tools/gutters.ts
+++ b/src/theme/tools/gutters.ts
@@ -1,7 +1,10 @@
-import { type Theme } from '@mui/material/styles';
-import { type CSSProperties } from '@mui/material/styles/createMixins';
+import { type Theme } from '@mui/material';
+import { type SystemStyleObject } from '@mui/system';
-export const gutters = ({ breakpoints, spacing }: Theme): CSSProperties => ({
+export const gutters = ({
+ breakpoints,
+ spacing,
+}: Theme): SystemStyleObject => ({
paddingLeft: spacing(4),
paddingRight: spacing(4),
[breakpoints.down('sm')]: {
diff --git a/src/theme/tools/toolbarMargin.ts b/src/theme/tools/toolbarMargin.ts
index 6c1e51a0..7ccf80ab 100644
--- a/src/theme/tools/toolbarMargin.ts
+++ b/src/theme/tools/toolbarMargin.ts
@@ -1,8 +1,8 @@
-import { type Theme } from '@mui/material/styles';
-import { type CSSProperties } from '@mui/material/styles/createMixins';
+import { type Theme } from '@mui/material';
+import { type SystemStyleObject } from '@mui/system';
/** Add top scroll margin to account for the sticky toolbar. */
-export const toolbarMargin = ({ breakpoints }: Theme): CSSProperties => ({
+export const toolbarMargin = ({ breakpoints }: Theme): SystemStyleObject => ({
// NOTE Values are hardcoded to follow that of the MUI built-in `toolbar`
// mixin for simplicity. If the toolbar is customized, these values
// should be updated.
diff --git a/src/tools/markdown/files.ts b/src/tools/markdown/files.ts
index 47c3c0cc..ac61d3c3 100644
--- a/src/tools/markdown/files.ts
+++ b/src/tools/markdown/files.ts
@@ -1,11 +1,14 @@
import { join } from 'node:path';
-import { makeNextRoutes, walk } from '@korumite/kiwi/server';
+import { makeCards, makeNextRoutes, walk } from '@korumite/kiwi/server';
import { z } from 'zod';
+import { formatDate } from '@/tools/io/formatDate';
+import { zCategory, zChapter } from '@/tools/z/schemas';
+
/** @deprecated Use `BASE_URLS.ROOT` instead. */
const BASE_URL = join(process.cwd(), 'markdown');
-/** Base file URLs for Markdown content categories. */
+/** Base file URLs for Markdown content. */
export const BASE_URLS = {
ARTICLES: join(BASE_URL, 'articles'),
CHAPTERS: join(BASE_URL, 'chapters'),
@@ -19,6 +22,16 @@ const ARTICLES_TREE = z
.parse(walk(BASE_URLS.ARTICLES));
export const ARTICLES = {
+ CARDS: (
+ await makeCards(
+ { paths: ARTICLES_TREE, root: BASE_URLS.ARTICLES },
+ {
+ banner: ({ matter }) => z.string().parse(matter.banner),
+ date: ({ crumbs: [y, m, d] }) => formatDate(y, m, d),
+ slug: ({ crumbs }) => z.string().parse(crumbs[3]),
+ },
+ )
+ ).reverse(),
ROUTES: makeNextRoutes(ARTICLES_TREE, ['year', 'month', 'day', 'article']),
TREE: ARTICLES_TREE,
} as const;
@@ -30,6 +43,15 @@ const CHAPTERS_TREE = z
.parse(walk(BASE_URLS.CHAPTERS));
export const CHAPTERS = {
+ CARDS: await makeCards(
+ { paths: CHAPTERS_TREE, root: BASE_URLS.CHAPTERS },
+ {
+ banner: ({ matter }) => z.string().parse(matter.banner),
+ category: ({ crumbs }) => zCategory.parse(crumbs[0]),
+ chapter: ({ crumbs }) => zChapter.parse(crumbs[0]),
+ slug: ({ crumbs }) => z.string().parse(crumbs[1]),
+ },
+ ),
ROUTES: makeNextRoutes(CHAPTERS_TREE, ['category', 'chapter']),
TREE: CHAPTERS_TREE,
} as const;
diff --git a/src/tools/markdown/getArticle.ts b/src/tools/markdown/getArticle.ts
new file mode 100644
index 00000000..67c59c4e
--- /dev/null
+++ b/src/tools/markdown/getArticle.ts
@@ -0,0 +1,35 @@
+import { read } from '@korumite/kiwi/server';
+
+import { ARTICLES } from '@/tools/markdown/files';
+import { getBanner } from '@/tools/markdown/getBanner';
+import { type Article } from '@/tools/markdown/types';
+import { remarkDecklists } from '@/tools/remark/remarkDecklists.server';
+import { remarkMana } from '@/tools/remark/remarkMana.server';
+import { remarkScries } from '@/tools/remark/remarkScries.server';
+import { zArticleMatter, zMetadata } from '@/tools/z/schemas';
+
+export const getArticle = async (
+ ...crumbs: [year: string, month: string, day: string, article: string]
+): Promise => {
+ const id = crumbs.join('!');
+ const card = ARTICLES.CARDS.find((card) => card.id === id);
+ try {
+ if (!card) throw new Error('Missing article card');
+ const { data, ...markdown } = await read(
+ [card.path],
+ remarkDecklists,
+ remarkMana,
+ remarkScries,
+ );
+ const matter = zArticleMatter.parse(markdown.matter);
+ return {
+ ...markdown,
+ ...zMetadata.parse(data),
+ banner: await getBanner(matter.banner),
+ matter,
+ };
+ } catch (error) {
+ const message = error instanceof Error ? error.message : error;
+ throw new Error(`${message} in "${id}"`);
+ }
+};
diff --git a/src/tools/markdown/getArticleCards.ts b/src/tools/markdown/getArticleCards.ts
index 9e837109..9e264a8e 100644
--- a/src/tools/markdown/getArticleCards.ts
+++ b/src/tools/markdown/getArticleCards.ts
@@ -1,62 +1,21 @@
-import { join } from 'node:path';
import { read } from '@korumite/kiwi/server';
-import { formatDate } from '@/tools/io/formatDate';
-import { ARTICLES, BASE_URLS } from '@/tools/markdown/files';
+import { ARTICLES } from '@/tools/markdown/files';
import { getBanner } from '@/tools/markdown/getBanner';
-import { readArticleMatter } from '@/tools/markdown/readMatter';
-import {
- type ArticleCard,
- type ArticleMatter,
- type Banner,
-} from '@/tools/markdown/types';
-
-const MARKDOWN_EXTENSION = '.md';
-
-/** Represent an article card for which the banner hasn't resolved yet. */
-type ArticleCardPending = Omit & {
- banner?: ArticleCard['banner'];
-};
+import { type ArticleCard } from '@/tools/markdown/types';
+import { zArticleMatter } from '@/tools/z/schemas';
/** Read file system and return a list of all articles. */
-export const getArticleCards = async (): Promise => {
- /** Warmup array for banner promises. */
- const banners: Promise[] = [];
- // NOTE Reduce rightwards to sort descending
- const cards = await ARTICLES.TREE.reduceRight>(
- async (accumulator, crumbs) => {
- const path = join(...crumbs) + MARKDOWN_EXTENSION;
- const markdown = await read([BASE_URLS.ARTICLES, path]);
- let matter: ArticleMatter;
- try {
- matter = readArticleMatter(markdown.matter);
- } catch (error) {
- const message = error instanceof Error ? error.message : `${error}`;
- throw new Error(`${message} in "${path}"`);
- }
- const [year, month, day, slug] = crumbs;
- const card: ArticleCardPending = {
- date: formatDate(year, month, day),
- day,
+export const getArticleCards = async (): Promise =>
+ Promise.all(
+ ARTICLES.CARDS.map(async (card) => {
+ const markdown = await read([card.path]);
+ const matter = zArticleMatter.parse(markdown.matter);
+ return {
+ banner: await getBanner(matter.banner),
+ date: card.date,
+ href: '/articles' + card.href,
matter,
- month,
- route: ['/articles', ...crumbs].join('/'),
- slug,
- year,
};
- banners.push(
- getBanner(matter.banner).then(
- (banner) => (card.banner = banner),
- (error) => {
- const message = `Failed to scry banner "${matter.banner}" (${error})`;
- throw new Error(message);
- },
- ),
- );
- return [...(await accumulator), card];
- },
- Promise.resolve([]),
+ }),
);
- await Promise.all(banners);
- return cards as ArticleCard[];
-};
diff --git a/src/tools/markdown/getChapter.ts b/src/tools/markdown/getChapter.ts
new file mode 100644
index 00000000..2e03704c
--- /dev/null
+++ b/src/tools/markdown/getChapter.ts
@@ -0,0 +1,35 @@
+import { read } from '@korumite/kiwi/server';
+
+import { CHAPTERS } from '@/tools/markdown/files';
+import { getBanner } from '@/tools/markdown/getBanner';
+import { type Chapter } from '@/tools/markdown/types';
+import { remarkDecklists } from '@/tools/remark/remarkDecklists.server';
+import { remarkMana } from '@/tools/remark/remarkMana.server';
+import { remarkScries } from '@/tools/remark/remarkScries.server';
+import { zChapterMatter, zMetadata } from '@/tools/z/schemas';
+
+export const getChapter = async (
+ ...crumbs: [chapter: string, slug: string]
+): Promise => {
+ const id = crumbs.join('!');
+ const card = CHAPTERS.CARDS.find((card) => card.id === id);
+ try {
+ if (!card) throw new Error('Missing chapter card');
+ const { data, ...markdown } = await read(
+ [card.path],
+ remarkDecklists,
+ remarkMana,
+ remarkScries,
+ );
+ const matter = zChapterMatter.parse(markdown.matter);
+ return {
+ ...markdown,
+ ...zMetadata.parse(data),
+ banner: await getBanner(matter.banner),
+ matter,
+ };
+ } catch (error) {
+ const message = error instanceof Error ? error.message : error;
+ throw new Error(`${message} in "${id}"`);
+ }
+};
diff --git a/src/tools/markdown/getChapterCards.ts b/src/tools/markdown/getChapterCards.ts
deleted file mode 100644
index 4403245b..00000000
--- a/src/tools/markdown/getChapterCards.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { join } from 'node:path';
-import { read } from '@korumite/kiwi/server';
-import { z } from 'zod';
-
-import { CATEGORIES } from '@/tools/markdown/constants';
-import { BASE_URLS, CHAPTERS } from '@/tools/markdown/files';
-import { readChapterMatter } from '@/tools/markdown/readMatter';
-import { type ChapterCard, type ChapterMatter } from '@/tools/markdown/types';
-import { union } from '@/tools/z/union';
-
-const MARKDOWN_EXTENSION = '.md';
-
-/** Read file system and return a list of all chapters. */
-export const getChapterCards = (): Promise =>
- CHAPTERS.TREE.reduce>(async (accumulator, crumbs) => {
- const category = z
- .preprocess(
- (value) => (typeof value === 'string' ? value.toUpperCase() : value),
- union(CATEGORIES),
- )
- .parse(crumbs[0]);
- const path = join(...crumbs) + MARKDOWN_EXTENSION;
- const markdown = await read([BASE_URLS.CHAPTERS, path]);
- let matter: ChapterMatter;
- try {
- matter = readChapterMatter(markdown.matter);
- } catch (error) {
- const message = error instanceof Error ? error.message : `${error}`;
- throw new Error(`${message} in "${path}"`);
- }
- const card: ChapterCard = {
- category,
- matter,
- route: ['', ...crumbs].join('/'),
- slug: crumbs[1],
- };
- return [...(await accumulator), card];
- }, Promise.resolve([]));
diff --git a/src/tools/markdown/getMarkdown.ts b/src/tools/markdown/getMarkdown.ts
index 7f941497..7c9e16bc 100644
--- a/src/tools/markdown/getMarkdown.ts
+++ b/src/tools/markdown/getMarkdown.ts
@@ -1,54 +1,12 @@
import { join } from 'node:path';
import { read } from '@korumite/kiwi/server';
-import { type Decklists } from '@/tools/decklists/types';
import { BASE_URLS } from '@/tools/markdown/files';
-import { getBanner } from '@/tools/markdown/getBanner';
-import {
- readArticleMatter,
- readChapterMatter,
-} from '@/tools/markdown/readMatter';
-import {
- type Article,
- type Chapter,
- type Partial,
-} from '@/tools/markdown/types';
+import { type Partial } from '@/tools/markdown/types';
import { remarkDecklists } from '@/tools/remark/remarkDecklists.server';
import { remarkMana } from '@/tools/remark/remarkMana.server';
import { remarkScries } from '@/tools/remark/remarkScries.server';
-import { type Scries } from '@/tools/scryfall/types';
-
-/** Convenience helper to read an article. See `getMarkdown`. */
-export const getArticle = async (
- ...crumbs: [year: string, month: string, day: string, article: string]
-): Promise => {
- const path = join('articles', ...crumbs);
- const markdown = await getMarkdown(path);
- try {
- const matter = readArticleMatter(markdown.matter);
- const banner = await getBanner(matter.banner);
- return { ...markdown, banner, matter };
- } catch (error) {
- const message = error instanceof Error ? error.message : `${error}`;
- throw new Error(`${message} in "${path}"`);
- }
-};
-
-/** Convenience helper to read a chapter. See `getMarkdown`. */
-export const getChapter = async (
- ...crumbs: [category: string, chapter: string]
-): Promise => {
- const path = join('chapters', ...crumbs);
- const markdown = await getMarkdown(path);
- try {
- const matter = readChapterMatter(markdown.matter);
- const banner = await getBanner(matter.banner);
- return { ...markdown, banner, matter };
- } catch (error) {
- const message = error instanceof Error ? error.message : `${error}`;
- throw new Error(`${message} in "${path}"`);
- }
-};
+import { zMetadata } from '@/tools/z/schemas';
/**
* Read the Markdown content found at the provided path crumbs.
@@ -57,23 +15,17 @@ export const getChapter = async (
* The path is relative to the root of the project.
*/
export const getMarkdown = async (...crumbs: string[]): Promise => {
- const path = join(...crumbs) + '.md';
+ const id = crumbs.join('!');
try {
- const { data, ...rest } = await read(
- [BASE_URLS.ROOT, path],
+ const { data, ...markdown } = await read(
+ [BASE_URLS.ROOT, join(...crumbs) + '.md'],
remarkDecklists,
remarkMana,
remarkScries,
);
- if (!data.decklists) throw new Error('Missing decklists');
- if (!data.scries) throw new Error('Missing scries');
- return {
- decklists: data.decklists as Decklists,
- scries: data.scries as Scries,
- ...rest,
- };
+ return { ...markdown, ...zMetadata.parse(data) };
} catch (error) {
- const message = error instanceof Error ? error.message : `${error}`;
- throw new Error(`${message} in "${path}"`);
+ const message = error instanceof Error ? error.message : error;
+ throw new Error(`${message} in "${id}"`);
}
};
diff --git a/src/tools/markdown/getMenu.ts b/src/tools/markdown/getMenu.ts
deleted file mode 100644
index ac592328..00000000
--- a/src/tools/markdown/getMenu.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import { getChapterCards } from '@/tools/markdown/getChapterCards';
-import {
- type ChapterCard,
- type MenuDecoration,
- type MenuEntry,
-} from '@/tools/markdown/types';
-
-/** List the menu entries and their corresponding decorations in order. */
-const DECORATIONS: MenuDecoration[] = [
- {
- category: 'MEANDECK',
- subtitle: 'Force of Will Doomsday',
- title: 'Doomsday',
- },
- {
- category: 'DDFT',
- subtitle: 'Doomsday Fetchland Tendrils',
- title: 'DDFT',
- },
- {
- category: 'ENTOMBSDAY',
- subtitle: 'Tin Fins Hybrid',
- title: 'Entombsday',
- },
- {
- category: 'APPENDICES',
- subtitle: 'Other Resources',
- title: 'Appendices',
- },
-];
-
-/**
- * Read file system and return a structured list of all chapters within their
- * respective categories.
- */
-const getMenu = async (): Promise => {
- const cards = await getChapterCards();
- const menu = cards.reduce<
- Partial>
- >((accumulator, card) => {
- const { category } = card;
- accumulator[category] = accumulator[category] || [];
- accumulator[category].push(card);
- return accumulator;
- }, {});
- return DECORATIONS.map(({ category, subtitle, title }) => {
- const pages = menu[category];
- if (!pages) {
- throw new Error(`Could not find pages under '${category}' menu`);
- }
- // NOTE Sort chapters by the `order` frontmatter, no support above 99
- pages.sort((a, b) => (a.matter.order ?? 99) - (b.matter.order ?? 99));
- return { category, subtitle, title, pages };
- });
-};
-
-/** A structured list of all chapters within their respective categories. */
-export const MENU = await getMenu();
diff --git a/src/tools/markdown/menu.ts b/src/tools/markdown/menu.ts
new file mode 100644
index 00000000..843f2c30
--- /dev/null
+++ b/src/tools/markdown/menu.ts
@@ -0,0 +1,6 @@
+import { makeMenu } from '@korumite/kiwi/server';
+
+import { CHAPTERS } from '@/tools/markdown/files';
+
+/** A structured list of all chapters within their respective categories. */
+export const MENU = makeMenu(CHAPTERS.CARDS);
diff --git a/src/tools/markdown/readMatter.ts b/src/tools/markdown/readMatter.ts
deleted file mode 100644
index d8c67976..00000000
--- a/src/tools/markdown/readMatter.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import { z } from 'zod';
-
-import { KINDS, TAGS } from '@/tools/markdown/constants';
-import { type ArticleMatter, type ChapterMatter } from '@/tools/markdown/types';
-import { union } from '@/tools/z/union';
-
-type ReadMatter = (data: Record) => TMatter;
-
-export const readArticleMatter: ReadMatter = (data) =>
- z
- .object({
- authors: z.string(),
- banner: z.string(),
- kind: union(KINDS),
- tags: z.preprocess(
- (value) => (Array.isArray(value) ? value : [value]),
- union(TAGS).array(),
- ),
- title: z.string(),
- })
- .parse(data);
-
-export const readChapterMatter: ReadMatter = (data) =>
- z
- .object({
- banner: z.string(),
- order: z.number().nonnegative().optional(),
- title: z.string(),
- })
- .parse(data);
diff --git a/src/tools/markdown/types.ts b/src/tools/markdown/types.ts
index d9ae2651..a49f1042 100644
--- a/src/tools/markdown/types.ts
+++ b/src/tools/markdown/types.ts
@@ -1,9 +1,5 @@
import { type Decklists } from '@/tools/decklists/types';
-import {
- type CATEGORIES,
- type KINDS,
- type TAGS,
-} from '@/tools/markdown/constants';
+import { type KINDS, type TAGS } from '@/tools/markdown/constants';
import { type Scries } from '@/tools/scryfall/types';
export type Banner = {
@@ -13,47 +9,32 @@ export type Banner = {
title: string;
};
-// Cards ///////////////////////////////////////////////////////////////////////
-
-type Card = {
- matter: TMatter;
- route: string;
- slug: string;
-};
-
-export type ArticleCard = Card & {
- banner: Banner;
- date: string | null;
- day: string;
- month: string;
- year: string;
-};
-
-export type ChapterCard = Card & {
- category: (typeof CATEGORIES)[number];
-};
-
-// Documents ///////////////////////////////////////////////////////////////////
-
export type Partial = {
decklists: Decklists;
- matter: Record;
minutes: number;
scries: Scries;
text: string;
};
-export type Article = Omit & {
+export type Article = Partial & {
banner: Banner;
matter: ArticleMatter;
};
-export type Chapter = Omit & {
+export type ArticleCard = {
banner: Banner;
- matter: ChapterMatter;
+ date: string | null;
+ href: string;
+ matter: ArticleMatter;
};
-// Matter //////////////////////////////////////////////////////////////////////
+export type Chapter = Partial & {
+ banner: Banner;
+ matter: {
+ banner: string;
+ title: string;
+ };
+};
export type ArticleMatter = {
authors: string;
@@ -62,21 +43,3 @@ export type ArticleMatter = {
tags: (typeof TAGS)[number][];
title: string;
};
-
-export type ChapterMatter = {
- banner: string;
- order?: number;
- title: string;
-};
-
-// Menu ////////////////////////////////////////////////////////////////////////
-
-export type MenuDecoration = {
- category: (typeof CATEGORIES)[number];
- subtitle: string;
- title: string;
-};
-
-export type MenuEntry = MenuDecoration & {
- pages: ChapterCard[];
-};
diff --git a/src/tools/scryfall/parse.ts b/src/tools/scryfall/parse.ts
index d1bb1107..0d8a6757 100644
--- a/src/tools/scryfall/parse.ts
+++ b/src/tools/scryfall/parse.ts
@@ -29,7 +29,7 @@ export const parse = async (options: {
try {
artPreview = await makePreview(art);
} catch (error) {
- const message = error instanceof Error ? error.message : `${error}`;
+ const message = error instanceof Error ? error.message : error;
throw new Error(`${message} for "${art}"`);
}
}
diff --git a/src/tools/z/schemas.test.ts b/src/tools/z/schemas.test.ts
new file mode 100644
index 00000000..cbd8c15f
--- /dev/null
+++ b/src/tools/z/schemas.test.ts
@@ -0,0 +1,70 @@
+import { zCategory, zChapter } from '@/tools/z/schemas';
+
+describe('zCategory', () => {
+ it('should not validate an unknown category', () => {
+ // When
+ const test = () => zCategory.parse('unknown');
+ // Then
+ expect(test).toThrow();
+ });
+
+ it('should uppercase the parsed value', () => {
+ // When
+ const output = zCategory.parse('DdFt');
+ // Then
+ expect(output).toEqual('DDFT');
+ });
+
+ describe('Known categories', () => {
+ const tests: [input: string, expected: string][] = [
+ ['appendices', 'APPENDICES'],
+ ['ddft', 'DDFT'],
+ ['ddeft', 'DDEFT'],
+ ['entombsday', 'ENTOMBSDAY'],
+ ['meandeck', 'MEANDECK'],
+ ];
+
+ it.each(tests)(
+ 'should validate known cateories: "%s"',
+ (input, expected) => {
+ // When
+ const output = zCategory.parse(input);
+ // Then
+ expect(output).toEqual(expected);
+ },
+ );
+ });
+});
+
+describe('zChapter', () => {
+ it('should not validate an unknown chapter', () => {
+ // When
+ const test = () => zChapter.parse('unknown');
+ // Then
+ expect(test).toThrow();
+ });
+
+ it('should not validate a known chapter with the wrong case', () => {
+ // When
+ const test = () => zChapter.parse('Meandeck');
+ // Then
+ expect(test).toThrow();
+ });
+
+ describe('Known categories', () => {
+ const tests: string[] = [
+ 'appendices',
+ 'ddft',
+ 'ddeft',
+ 'entombsday',
+ 'meandeck',
+ ];
+
+ it.each(tests)('should validate known cateories: "%s"', (value) => {
+ // When
+ const output = zChapter.parse(value);
+ // Then
+ expect(output).toEqual(value);
+ });
+ });
+});
diff --git a/src/tools/z/schemas.ts b/src/tools/z/schemas.ts
new file mode 100644
index 00000000..945b94dc
--- /dev/null
+++ b/src/tools/z/schemas.ts
@@ -0,0 +1,65 @@
+import { z } from 'zod';
+
+import { CATEGORIES, KINDS, TAGS } from '@/tools/markdown/constants';
+import { union } from '@/tools/z/union';
+
+export const zArticleMatter = z.object({
+ authors: z.string(),
+ banner: z.string(),
+ kind: union(KINDS),
+ tags: z.preprocess(
+ (value) => (Array.isArray(value) ? value : [value]),
+ union(TAGS).array(),
+ ),
+ title: z.string(),
+});
+
+/** A Zod schema to describe chapter categories. */
+export const zCategory = z.preprocess(
+ (value) => (typeof value === 'string' ? value.toUpperCase() : value),
+ union(CATEGORIES),
+);
+
+/** A Zod schema to describe chapter path crumbs. */
+export const zChapter = union(CATEGORIES.map((it) => it.toLowerCase()));
+
+export const zChapterMatter = z.object({
+ banner: z.string(),
+ title: z.string(),
+});
+
+const zCard = z
+ .tuple([z.number(), z.string()])
+ .refine((_): _ is [quantity: number, name: string] => true);
+
+const zDecklist = z.object({
+ // NOTE Formerly `Decklist` type
+ authors: z.string().nullable(),
+ colors: z.string().array().nullable(),
+ main: zCard.array().array(),
+ mainCount: z.number(),
+ side: zCard.array().array(),
+ sideCount: z.number(),
+ title: z.string().nullable(),
+ // NOTE Formerly `DecklistExtra` type
+ date: z.string().nullable(),
+ titleFromPath: z.string(),
+});
+
+const zScry = z.object({
+ artist: z.string(),
+ flavor: z.string().nullable(),
+ images: z.object({
+ art: z.string().nullable(),
+ artPreview: z.string().nullable(),
+ full: z.string().nullable(),
+ }),
+ name: z.string(),
+ setCode: z.string(),
+ setName: z.string(),
+});
+
+export const zMetadata = z.object({
+ decklists: z.record(z.string(), zDecklist),
+ scries: z.record(z.string(), zScry.array()),
+});
diff --git a/typings.d.ts b/typings.d.ts
index 88dba3fb..eef7858f 100644
--- a/typings.d.ts
+++ b/typings.d.ts
@@ -3,6 +3,8 @@ interface ObjectConstructor {
}
interface String {
+ toLowerCase(this: T): Lowercase;
+ toUpperCase(this: T): Uppercase;
split(separator: ''): string[];
split(separator: string): [first: string, ...rest: string[]];
}