diff --git a/CONTRIBUTING_WITH_CODE.org b/CONTRIBUTING_WITH_CODE.org index db29075a..0f2f9565 100644 --- a/CONTRIBUTING_WITH_CODE.org +++ b/CONTRIBUTING_WITH_CODE.org @@ -46,12 +46,8 @@ See [[#environment-variables][#Environment Variables]] to disable the mocks. ** Environment Variables -A number of variables are pre-configured for you in =.env.development=: - -- =SCRYFALL_MOCKS= :: - Whether the development server should mock queries to =api.scryfall.com=. This - allows offline development and reduce unnecessary hits on Scryfall's API since - card data is fetched during the build. +- =SCRYFALL_DEBUG= :: + Whether the Scryfall caching server should output more logs. You can overwrite their respective value, by creating a new =.env.local= at the root of the project. diff --git a/markdown/articles/2018/12/13/primer.md b/markdown/articles/2018/12/13/primer.md index 9b765566..fed1cbf0 100644 --- a/markdown/articles/2018/12/13/primer.md +++ b/markdown/articles/2018/12/13/primer.md @@ -19,6 +19,8 @@ competitive that I wouldn't be completely embarassed to write a primer. ::decklist{path=2018/12/ddft} +## Table of Contents + ## The Part Where I Predict Some of Your Questions About the List > Why Infernal Contract? @@ -164,9 +166,9 @@ These are some situations you may find youself in and examples of piles you might use to win. Make sure you understand how much mana is needed post-Doomsday to execute one of these piles. Many of these piles can be quite mana hungry. -**IC in hand used to draw into pile** +##### IC in hand used to draw into pile -> IC in hand - {B}{B}{B} + {B}{B}{B} - 7 Storm +> {B}{B}{B} + {B}{B}{B} - 7 Storm :::row{variant=PILE} LP @@ -176,7 +178,7 @@ CB ToA ::: -> IC in hand - {B}{B}{B} + {B}{B}{B} - 8 Storm +> {B}{B}{B} + {B}{B}{B} - 8 Storm :::row{variant=PILE} LED @@ -186,7 +188,7 @@ CB BW ::: -**Think the opponent is being cute and sandbagging an answer to Tendrils?** +##### Think the opponent is being cute and sandbagging an answer to Tendrils? > Cantrip in hand - {B}{B}{B} + {U}{B}{B}{B}{B} - 7 Storm @@ -198,7 +200,7 @@ Dur ToA ::: -**Need to get rid of something like a Gaddock Teeg or Leyline of Sanctity** +##### Need to get rid of something like a Gaddock Teeg or Leyline of Sanctity > Cantrip in hand - {B}{B}{B} + {U}{U}{B}{B}{B} - 7 Storm @@ -212,9 +214,9 @@ ToA Note that this only works post board since CoV isn't in the maindeck. -**Brainstorm and IC in hand** +##### Brainstorm and IC in hand -> BS and IC in hand - {B}{B}{B} + {U}{B} - 8 Storm +> {B}{B}{B} + {U}{B} - 8 Storm :::row{variant=PILE} DR @@ -224,9 +226,9 @@ DR ToA ::: -**Brainstorm and ToA in hand** +##### Brainstorm and ToA in hand -> BS and ToA in hand - {B}{B}{B} + {U}{B} - 8 Storm +> {B}{B}{B} + {U}{B} - 8 Storm :::row{variant=PILE} IC @@ -501,9 +503,9 @@ not having it hasn't had an adverse effect on my winrate. Pass-the-turn Lab Man piles were one of the deck's best tools against heavy discard. This new list just has different tools against discard in the form of Draw4s and PiF. -### Sideboard Guide +## Sideboard Guide -#### Grixis Control +### Grixis Control -1 Doomsday, -1 Rain of Filth, -1 Preordain +2 Empty the Warrens, +1 Infernal Contract @@ -514,7 +516,7 @@ toe-to-toe with their discard and card advantage. You can consider bringing Flusterstorm in for this matchup if you feel like you want a little more help. Maybe cut an LED and a Duress. -#### Miracles, High Tide, any slow Ux Counterspell deck +### Miracles, High Tide or any slow Counterspell deck -4 Lion's Eye Diamond, -4 Burning Wish, -1 Preordain +1 Doomsday, +1 Infernal Contract, +1 Tendrils of Agony, +1 Past in Flames, +3 @@ -534,7 +536,7 @@ individually powerful cards to overwhelm their counters. Disrupt them and make them spend resources trying to reassemble instead of spend resources stopping you. -#### Most Delver Variants +### Most Delver Variants -2 Doomsday +2 Empty the Warrens @@ -544,7 +546,7 @@ lots of disruption. Empty the Warrens is a better plan. Often Delver players will keep threat-light, disruption-heavy hands and Empty stays relevant suprisingly late into the game. Be patient. -#### Death's Shadow +### Death's Shadow -3 Doomsday, -1 Conjurer's Bauble +2 Empty the Warrens, +1 Tendrils of Agony, +1 Infernal Contract @@ -557,7 +559,7 @@ The Bauble gets cut because it's bad without Doomsday, and the Contract comes in because you need maximum ability to try and take advantage of any opening you get. -#### Storm +### Storm -1 Rain of Filth, -1 Doomsday, -1 Preordain +2 Flusterstorm, +1 Infernal Contract @@ -568,7 +570,7 @@ Flusterstorm comes in for obvious reasons, and Contract comes in because your life total doesn't really matter and the matchup often devolves into discard-laden attrition games. -#### Death and Taxes and pretty much anything with Chalices +### Death and Taxes or pretty much anything with Chalices -3 Duress, -1 Preordain +3 Echoing Truth, +1 Chain of Vapor @@ -578,7 +580,7 @@ before they drop a lockpiece, or try to get rid of it and go off. Don't forget that Burning Wish can find solutions to hateful permanents, but a quick EtW can be a solution too. -#### Lands +### Lands -4 Thoughtseize +3 Echoing Truth, +1 Chain of Vapor @@ -589,7 +591,7 @@ Win before the Spheres come down, or bounce them. The mana denial is heavier in this matchup so watch out for that, and remember that Empty the Warrens is pretty bad in this matchup. -#### Sneak and Show and Reanimator +### Sneak and Show and Reanimator -1 Preordain, -1 Rain of Filth +2 Flusterstorm @@ -601,7 +603,7 @@ this matchup because they are the best single card at taking advantage of a window your opponent gives you, and it may be correct to side the same as Storm for this matchup. -#### Turbo Depths or Nic Fit, without blue splash +### Turbo Depths or Nic Fit, without blue splash -3 Duress, -1 Thoughtseize -1 Preordain +3 Echoing Truth, +1 Chain of Vapor, +1 Infernal Contract diff --git a/markdown/articles/2021/03/21/everything-vintage-doomsday.md b/markdown/articles/2021/03/21/everything-vintage-doomsday.md index 039759e3..dac29952 100644 --- a/markdown/articles/2021/03/21/everything-vintage-doomsday.md +++ b/markdown/articles/2021/03/21/everything-vintage-doomsday.md @@ -6,9 +6,9 @@ tags: [VINTAGE, MEANDECK] title: Everything Vintage Doomsday --- -_Special thanks to Bart van Etten ([Diem4x][diem4x]), Max Vervoort -([MaxMagicer][maxmagicer]), [SingPanMan][singpanman], and [discoverN][discovern] -for writing._ +Special thanks to Bart [_Diem4x_][diem4x] van Etten, Max +[_MaxMagicer_][maxmagicer] Vervoort, [_SingPanMan_][singpanman], and +[_discoverN_][discovern] for writing. [diem4x]: https://twitter.com/Bartvehs [maxmagicer]: https://twitter.com/MaxVervoort2002 @@ -38,7 +38,7 @@ Dispute], :card[Force of Negation], and :card[Portent]. CoS ::: -**Mystical Dispute / Force of Negation**: These slots are generally between +**Mystical Dispute and Force of Negation**: These slots are generally between either :card[Treasure Cruise] + disruptive spell or two disruptive spells. Standard cards in these slots are 3rd :card[Daze], 4th :card[Flusterstorm], :card[Duress], or :card[Chain of Vapor]. With shops and mirrors so popular in @@ -64,21 +64,19 @@ especially in something like the mirror. Portent ::: -## Sideboard Configuration and Sideboard Guide +## Sideboard Configuration -_With Bart van Etten and Max Vervoort_ - -**:card[Steel Sabotage]**: it is only used for the shops matchup, but it's so +**Steel Sabotage**: it is only used for the shops matchup, but it's so crucial in that matchup that you want four after sideboard. It's the most effective way to get rid of :card[Sphere of Resistance] type cards without investing too much mana. -**:card[Mindbreak Trap]**: it's good vs. decks that try to do a lot on the first +**Mindbreak Trap**: it's good vs. decks that try to do a lot on the first turn, like :card[Paradoxical Outcome], shops, or the mirror. At worst, it's a pitch to force, which makes sure it's not entirely a dead card when you draw it later in the game. -**:card[Duress]**: an overall decent card against all decks where you want to +**Duress**: an overall decent card against all decks where you want to play around counters and a card that sometimes is exactly what you need in your doomsday pile, especially when you have a Mox Jet in your start, so you don't need to tap a land to play it. A handy thing it can do is snag a Brain freeze @@ -90,17 +88,17 @@ Mindbreak Trap Duress ::: -**:card[Fatal Push]**: you need an answer for cards like Lavinia, +**Fatal Push**: you need an answer for cards like Lavinia, :card[Deathrite Shaman], :card[Thalia, Guardian of Thraben], :card[Archon of Emeria], Leovold, :card[Collector Ouphe], and other hatebears, and Push is just the most efficient one in the game. It's also good against ravager shops because it can give you enough time to beat the stax pieces. -**:card[Opposition Agent]**: agent is outstanding in the mirror as it is a win +**Opposition Agent**: agent is outstanding in the mirror as it is a win the game if it's not answered, while it's still decent vs. all decks that play tutors. -**:card[Leyline of the Void]**: you only board it in vs. dredge or other bazaar +**Leyline of the Void**: you only board it in vs. dredge or other bazaar decks, but it's just the most efficient card to play in your Doomsday sideboard for that matchup without dedicating too many spots for the matchup. @@ -110,7 +108,7 @@ Opposition Agent Leyline of the Void ::: -**:card[Tasigur, the Golden Fang]**: you want an additional win condition +**Tasigur, the Golden Fang**: you want an additional win condition against decks that can disrupt your combo well, like :card[Brain Freeze] or a deck with many specific counters, like Flusterstorm and :card[Pyroblast]. You also board Tasigur in when your opponent boards out their removal spells, like @@ -118,7 +116,7 @@ how Jeskai boards out :card[Swords to Plowshares], and you want another card that they have to counter, yet it can't be hit by Flusterstorm, Pyroblast, or even Force of Negation. Because of this, it can sometimes steal games. -**:card[Island]**: having a second basic is another tool for shops to better +**Island**: having a second basic is another tool for shops to better play around :card[Wasteland] and :card[Ghost Quarter]. :::row{variant=CENTERED} @@ -126,7 +124,7 @@ Tasigur, the Golden Fang Island ::: -### Sideboard Guide +## Sideboard Guide | vs BUG | | | --------------------------- | -------------------- | @@ -224,8 +222,6 @@ and piles you can make to do that. ## Playing vs. Breach -_With discoverN_ - You are against Breach, and the opponent was on the play with seven cards and went :card[Misty Rainforest], :card[Mox Ruby], pass (5 cards remaining). You mulliganned once, and your hand is :card[Doomsday], Street Wraith, Force of @@ -235,14 +231,22 @@ this turn and the rest of the game? Our hand is: -_DiscoverN's response_ +:::row{variant=HAND} +DD +SW +Pre +FoW +Underground Sea|LEB +Tasigur, the Golden Fang +DR +::: -> **Game plan:** +> **Game plan** > > In this hand, First, I want to play tasigur. > And after the opponent moves, I want to play doomsday. > -> **Choices:** +> **Choices** > > 1. Play Ritual Doomsday: too risky. > If the opponent doesn't have Brain Freeze, the opponent very likely has a @@ -254,20 +258,8 @@ _DiscoverN's response_ > Good things: it can keep Street Wraith. Wraith is a vital card to beating > Brain Freeze. -:::row{variant=HAND} -DD -SW -Pre -FoW -Underground Sea|LEB -Tasigur, the Golden Fang -DR -::: - ## Playing vs. BUG -_With SingPanMan_ - You are at 16 life vs. BUG game three (assume Fatal Push is in your deck and nothing is exiled, so you have your whole deck to put in your pile) and cast a Doomsday with a Dark Ritual in hand and 3 Underground Seas in play. Your @@ -275,31 +267,31 @@ opponent has Leovold, Collector Ouphe, 3 lands, and 3 cards in hand. You assume their graveyard doesn't matter (i.e., :card[Snapcaster Mage]). What is your pile? (thinking about playing around Fluster, Wasteland, possibly Daze, etc.) -_SingPanMan's response_ - -> Demonic Tutor, Time Walk, Oracle, Oracle, Island (double Trophy is an issue) -> -> 1. Pass turn 1. Play Ritual 1. Play Tutor, and get Time Walk 1. Play Walk 1. -> In extra turn, play Oracle +> 1. Pass turn +> 1. Play Ritual +> 1. Play Tutor, and get Time Walk +> 1. Play Walk +> 1. In extra turn, play Oracle > -> I think there are low odds of winning this match. -> But you will have to go all-in. +> I think there are low odds of winning this match. But you will have to go +> all-in. > > If the opponent plays two trophies (or plays wasteland and trophy), you need -> to search Island. -> Let's pray that it won't happen. +> to search Island. Let's pray that it won't happen. > > **Bad** > -> - Can withstand only one turn (16 life to 8, their board has 5 power) - Lose -> with one counter (Flusterstorm, Force, Mindbreak Trap, Spell Pierce) - Lose -> with one removal (Decay, Trophy) - 33% to lose (we can't draw the island) - -> I can't afford the resources (it's all Leo's fault) +> - Can withstand only one turn (16 life to 8, their board has 5 power) +> - Lose with one counter (Flusterstorm, Force, Mindbreak Trap, Spell Pierce) +> - Lose with one removal (Decay, Trophy) +> - 33% to lose (we can't draw the island) +> - I can't afford the resources (it's all Leo's fault) > > **Good** > > - The opponent might not have Daze (if the opponent has Daze, they will cast -> it on Doomsday) - A single Wasteland can be played around +> it on Doomsday) +> - A single Wasteland can be played around :::row{variant=PILE} Demonic Tutor @@ -311,8 +303,6 @@ Island ## Playing vs. Bant -_With discoverN_ - Your Opponent casts Archon of Emeria with five cards in hand on the play in turn two. It is game three (You have Fatal Push in your deck, and they may have cards like :card[Meddling Mage] or :card[Deafening Silence]). You untap and cast @@ -324,10 +314,6 @@ Hullbreacher, maybe Deafening Silence, counterspells like Flusterstorm, and even :card[Spell Queller]). What is your pile, and what do are you trying to do in the following turns? -_DiscoverN's response_ - -> Timewalk, Oracle, Oracle, Island, Island -> > This turn play tapped fetchland, pass. > Next turn, play tapped fetchland, time walk. > Next turn, play Oracle, fetch in response to removal if needed, or fetch to @@ -353,8 +339,6 @@ Island ## Playing vs. Shops -_With Jacobisboss_ - I've decided to do one final puzzle of a Doomsday pile to beat Golos shops. You cast Doomsday off of three lands and two Moxes, as there is a :card[Thorn of @@ -375,8 +359,6 @@ Daze FoW ::: -_My response_ - > From the top: Steel Sabotage, Gush, Oracle, Lotus, Island > Goal: try to win in two turns. > The plan is to pass after the opponent attacks you to 4. You bounce the diff --git a/markdown/articles/2023/03/01/megacy.md b/markdown/articles/2023/03/01/megacy.md index 0ec62b15..dd2f5aa9 100644 --- a/markdown/articles/2023/03/01/megacy.md +++ b/markdown/articles/2023/03/01/megacy.md @@ -6,7 +6,7 @@ tags: [LEGACY, MEANDECK] title: 'Axion Mega Legacy February 2023: Second Place Report' --- -_How to do well at a big tournament by getting really lucky_ +Or how to do well at a big tournament by getting really lucky. On the 18th February 2023 I came 2nd in the Axion _Mega Legacy_ event in the Great Hall at the University of Birmingham. This is part of an event series run diff --git a/markdown/chapters/ddft/dd-vs-hate.md b/markdown/chapters/ddft/dd-vs-hate.md index 28090214..40e829cb 100644 --- a/markdown/chapters/ddft/dd-vs-hate.md +++ b/markdown/chapters/ddft/dd-vs-hate.md @@ -38,7 +38,7 @@ Spell Pierce, you can beat them by simply having extra mana, via rituals or plenty of lands. What can you do though if they have "harder" counters that you can't get rid of? -**Example 1** +### Example 1 One thing to consider is using a pass-the-turn pile. Lets say your opponent lets you resolve Doomsday but still has a Force of Will. You could use a @@ -59,7 +59,7 @@ then Ponder into the rest of the pile to win with Oracle. This type of pile can work against many kinds of interaction, but it's really only effective if they have just one card you care about. -**Example 2** +### Example 2 Another option if your opponent has something like Flusterstorm is to avoid casting lots of instants and sorceries. If you're playing multiple :card[Street @@ -81,7 +81,7 @@ another Fluster-able spell after Doomsday, or if you have a cantrip in hand you can do it all in one turn and hope they don't counter the cantrip. If they do, simply win next turn. -**Example 3** +### Example 3 What about something like Pyroblast? Ideas Unbound and Thassa's Oracle are both blue, so this poses some difficulty. Fortunately, the sideboard gives us some @@ -102,7 +102,7 @@ pile, and you can storm off without ever casting a blue spell. The life cost is hefty, since you halve your life total twice and then pay 2 life, but the key point here is that it is possible. -**Example 4** +### Example 4 How about Stifle? Stifle is unaffected by Veil of Summer, stops both ways you'd try to win (Oracle and storm), but it won't stop you from drawing your pile. @@ -132,7 +132,7 @@ are a powerful weapon against discard. They don't need to rely on cards in hand after Doomsday, and they require minimal initial input, i.e. a single hardcast Doomsday may be all you need. -**Example 1** +### Example 1 > {U}{U}, 2 life @@ -148,7 +148,7 @@ You've seen this pile before, but we bring it up again here for its simplcity. It is efficient and requires no cards in hand, making it invulnerable to discard. -**Example 2** +### Example 2 > Echo, 1 other card in hand - {0} diff --git a/markdown/chapters/ddft/echo.md b/markdown/chapters/ddft/echo.md index 078c4027..fa9ec790 100644 --- a/markdown/chapters/ddft/echo.md +++ b/markdown/chapters/ddft/echo.md @@ -20,7 +20,7 @@ some of the unique aspects about Echo piles, but let's start from the beginning. ## Basic Echo Piles -**Example 1** +### Example 1 There are only 5 cards in a pile, and Echo makes you draw 7. This means you'll need 2 more cards. Echo does not count, as flashback will exile it. One of those @@ -59,7 +59,7 @@ even have any interaction, and there are techniques to be used against those that do, but for now we will pretend this isn't a factor and simply focus on how the piles work. -**Example 2** +### Example 2 > Echo, Ponder in hand - {B}{B}{B} + {U} @@ -80,7 +80,7 @@ that it can be used just as easily to win in Echo piles. What happens when you aren't so lucky to have exactly 7 cards left over? Lets take a look at an example. -**Example 1** +### Example 1 > Brainstorm, 2 useless cards in hand - {B}{B}{B} + {U} - 9+ Storm @@ -102,7 +102,7 @@ be missing one piece, and if you are, then the Ponder will be in your hand to find it. Cast Ponder, draw the missing piece, and then play out the LEDs and wish for Tendrils. -**Example 3** +### Example 2 Sometimes it is tough to avoid a bit of non-determinism when you have multiple extra cards in hand. @@ -129,7 +129,7 @@ great, There are 2 cards left, so if the Oracle survives, you win. But there are Luckily, the chances of success with this pile is approximately 90%. These odds are good enough that you should take the chance almost every time. -**Example 4** +### Example 3 Echo can be used in manner similar to Brainstorm, to move cards in your hand into the pile. @@ -151,8 +151,6 @@ able to cast the discard spell for protection before casting Oracle. ## Extra Fancy -**Example 1** - It is possible to use multiple Echoes to build very high storm counts, enabling you to kill with :card[Grapeshot] diff --git a/markdown/chapters/ddft/pass-the-turn.md b/markdown/chapters/ddft/pass-the-turn.md index ac60c4e2..f17bbbef 100644 --- a/markdown/chapters/ddft/pass-the-turn.md +++ b/markdown/chapters/ddft/pass-the-turn.md @@ -29,7 +29,7 @@ because of the extremely cheap pass-the-turn piles it enables. Most are quite straightforward and many are nearly identical to their same-turn counterparts. Let's look at some basic examples. -**Example 1** +### Example 1 > {U}{U} @@ -48,7 +48,7 @@ Doomsday on turn 1, and make your second land drop to generate {U}{U}. You may notice that this is identical to the basic Oracle pile presented in the first chapter, simply using the draw step in place of a cantrip to draw into the pile. -**Example 2** +### Example 2 > {B}{B}{B} @@ -67,7 +67,7 @@ be paid with a Ritual, meaning fewer lands needed if the situation permits. Again, this pile is also presented as a same-turn pile in the first chapter, and here the draw step replaces a cantrip. -**Example 3** +### Example 3 > Lion's Eye Diamond on the board - {0}, 2 life @@ -85,7 +85,7 @@ lands after passing the turn. Invalidating mana-denial and discard can be valuable against a deck like Pox, which, while uncommon, you will surely encounter at some point. -**Example 4** +### Example 4 > Ponder in hand - {U} @@ -114,7 +114,7 @@ these kinds of piles are often unecessary, but if you are unlucky you may find yourself with Oracle exiled, nothing but a Doomsday in hand, and you'll be glad you read this section. -**Example 1** +### Example 1 > 2 cards in hand - {U}{U} - 8 Storm @@ -141,7 +141,7 @@ those spells. Echo creates some unusual constraints on the pile though: the precise number of cards leftover is important so Echo doesn't kill you, and there is a chance your opponent draws a fresh hand full of interaction. -**Example 2** +### Example 2 > LED, LP on board - {1}{U}{U} - 9 Storm @@ -180,7 +180,7 @@ twice, meaning you'll need at least 4 life to execute. Though it appears clumsy, this pile does not require any unusual card choices and does not draw your opponent any new cards, so it has some appealing aspects. -**Example 3** +### Example 3 > 5 lands in play - {1}{B}{B}{B}{B} - 5 Storm + 6 Storm @@ -198,7 +198,7 @@ ton of lands on board, as well as :card[Rain of Filth], :card[Conjurer's Bauble], and maindeck Tendrils, which not every deck plays. However, with some mana producers in hand the onboard requirements are easier to manage. -**Example 4** +### Example 4 > DR in hand, PiF in sideboard - {B}{B}{R}{R} - 10 Storm diff --git a/package.json b/package.json index 5830218d..6560fc03 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "node": ">=20.11.1" }, "scripts": { - "build": "concurrently 'pnpm:build:*' --names --prefix-colors auto --kill-others --success first", + "build": "concurrently 'pnpm:build:*' --kill-others --names --prefix-colors auto --success first", "build:next": "next build", "build:scryfall": "pnpm run scryfall", "dev": "concurrently 'pnpm:dev:*' --names --prefix-colors auto", @@ -52,7 +52,6 @@ "remark-gfm": "4.0.0", "remark-parse": "11.0.0", "remark-toc": "9.0.0", - "sharp": "0.32.5", "simple-icons": "11.8.0", "unified": "11.0.4", "unist-util-select": "5.1.0", @@ -85,9 +84,8 @@ "jest-environment-jsdom": "29.7.0", "knip": "5.0.3", "lint-staged": "15.2.2", - "markdownlint-cli": "0.37.0", + "markdownlint-cli": "0.39.0", "mdast-util-directive": "3.0.0", - "msw": "1.3.2", "prettier": "3.2.5", "ts-node": "10.9.2", "typescript": "5.4.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3b4a415e..fc1ad182 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,7 +49,7 @@ dependencies: version: 14.1.3(@babel/core@7.24.0)(react-dom@18.2.0)(react@18.2.0) plaiceholder: specifier: 3.0.0 - version: 3.0.0(sharp@0.32.5) + version: 3.0.0(sharp@0.33.2) react: specifier: 18.2.0 version: 18.2.0 @@ -83,9 +83,6 @@ dependencies: remark-toc: specifier: 9.0.0 version: 9.0.0 - sharp: - specifier: 0.32.5 - version: 0.32.5 simple-icons: specifier: 11.8.0 version: 11.8.0 @@ -179,14 +176,11 @@ devDependencies: specifier: 15.2.2 version: 15.2.2 markdownlint-cli: - specifier: 0.37.0 - version: 0.37.0 + specifier: 0.39.0 + version: 0.39.0 mdast-util-directive: specifier: 3.0.0 version: 3.0.0 - msw: - specifier: 1.3.2 - version: 1.3.2(typescript@5.4.2) prettier: specifier: 3.2.5 version: 3.2.5 @@ -536,6 +530,14 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true + /@emnapi/runtime@0.45.0: + resolution: {integrity: sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==} + requiresBuild: true + dependencies: + tslib: 2.6.2 + dev: false + optional: true + /@emotion/babel-plugin@11.11.0: resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} dependencies: @@ -786,6 +788,194 @@ packages: - supports-color dev: true + /@img/sharp-darwin-arm64@0.33.2: + resolution: {integrity: sha512-itHBs1rPmsmGF9p4qRe++CzCgd+kFYktnsoR1sbIAfsRMrJZau0Tt1AH9KVnufc2/tU02Gf6Ibujx+15qRE03w==} + 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'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.1 + dev: false + optional: true + + /@img/sharp-darwin-x64@0.33.2: + resolution: {integrity: sha512-/rK/69Rrp9x5kaWBjVN07KixZanRr+W1OiyKdXcbjQD6KbW+obaTeBBtLUAtbBsnlTTmWthw99xqoOS7SsySDg==} + 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'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.1 + dev: false + optional: true + + /@img/sharp-libvips-darwin-arm64@1.0.1: + resolution: {integrity: sha512-kQyrSNd6lmBV7O0BUiyu/OEw9yeNGFbQhbxswS1i6rMDwBBSX+e+rPzu3S+MwAiGU3HdLze3PanQ4Xkfemgzcw==} + engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-darwin-x64@1.0.1: + resolution: {integrity: sha512-eVU/JYLPVjhhrd8Tk6gosl5pVlvsqiFlt50wotCvdkFGf+mDNBJxMh+bvav+Wt3EBnNZWq8Sp2I7XfSjm8siog==} + engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-arm64@1.0.1: + resolution: {integrity: sha512-bnGG+MJjdX70mAQcSLxgeJco11G+MxTz+ebxlz8Y3dxyeb3Nkl7LgLI0mXupoO+u1wRNx/iRj5yHtzA4sde1yA==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-arm@1.0.1: + resolution: {integrity: sha512-FtdMvR4R99FTsD53IA3LxYGghQ82t3yt0ZQ93WMZ2xV3dqrb0E8zq4VHaTOuLEAuA83oDawHV3fd+BsAPadHIQ==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-s390x@1.0.1: + resolution: {integrity: sha512-3+rzfAR1YpMOeA2zZNp+aYEzGNWK4zF3+sdMxuCS3ey9HhDbJ66w6hDSHDMoap32DueFwhhs3vwooAB2MaK4XQ==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-x64@1.0.1: + resolution: {integrity: sha512-3NR1mxFsaSgMMzz1bAnnKbSAI+lHXVTqAHgc1bgzjHuXjo4hlscpUxc0vFSAPKI3yuzdzcZOkq7nDPrP2F8Jgw==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linuxmusl-arm64@1.0.1: + resolution: {integrity: sha512-5aBRcjHDG/T6jwC3Edl3lP8nl9U2Yo8+oTl5drd1dh9Z1EBfzUKAJFUDTDisDjUwc7N4AjnPGfCA3jl3hY8uDg==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linuxmusl-x64@1.0.1: + resolution: {integrity: sha512-dcT7inI9DBFK6ovfeWRe3hG30h51cBAP5JXlZfx6pzc/Mnf9HFCQDLtYf4MCBjxaaTfjCCjkBxcy3XzOAo5txw==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-linux-arm64@0.33.2: + resolution: {integrity: sha512-pz0NNo882vVfqJ0yNInuG9YH71smP4gRSdeL09ukC2YLE6ZyZePAlWKEHgAzJGTiOh8Qkaov6mMIMlEhmLdKew==} + 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'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.1 + dev: false + optional: true + + /@img/sharp-linux-arm@0.33.2: + resolution: {integrity: sha512-Fndk/4Zq3vAc4G/qyfXASbS3HBZbKrlnKZLEJzPLrXoJuipFNNwTes71+Ki1hwYW5lch26niRYoZFAtZVf3EGA==} + 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'} + cpu: [arm] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.1 + dev: false + optional: true + + /@img/sharp-linux-s390x@0.33.2: + resolution: {integrity: sha512-MBoInDXDppMfhSzbMmOQtGfloVAflS2rP1qPcUIiITMi36Mm5YR7r0ASND99razjQUpHTzjrU1flO76hKvP5RA==} + 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'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.1 + dev: false + optional: true + + /@img/sharp-linux-x64@0.33.2: + resolution: {integrity: sha512-xUT82H5IbXewKkeF5aiooajoO1tQV4PnKfS/OZtb5DDdxS/FCI/uXTVZ35GQ97RZXsycojz/AJ0asoz6p2/H/A==} + 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'} + cpu: [x64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.1 + dev: false + optional: true + + /@img/sharp-linuxmusl-arm64@0.33.2: + resolution: {integrity: sha512-F+0z8JCu/UnMzg8IYW1TMeiViIWBVg7IWP6nE0p5S5EPQxlLd76c8jYemG21X99UzFwgkRo5yz2DS+zbrnxZeA==} + 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'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.1 + dev: false + optional: true + + /@img/sharp-linuxmusl-x64@0.33.2: + resolution: {integrity: sha512-+ZLE3SQmSL+Fn1gmSaM8uFusW5Y3J9VOf+wMGNnTtJUMUxFhv+P4UPaYEYT8tqnyYVaOVGgMN/zsOxn9pSsO2A==} + 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'} + cpu: [x64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.1 + dev: false + optional: true + + /@img/sharp-wasm32@0.33.2: + resolution: {integrity: sha512-fLbTaESVKuQcpm8ffgBD7jLb/CQLcATju/jxtTXR1XCLwbOQt+OL5zPHSDMmp2JZIeq82e18yE0Vv7zh6+6BfQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [wasm32] + requiresBuild: true + dependencies: + '@emnapi/runtime': 0.45.0 + dev: false + optional: true + + /@img/sharp-win32-ia32@0.33.2: + resolution: {integrity: sha512-okBpql96hIGuZ4lN3+nsAjGeggxKm7hIRu9zyec0lnfB8E7Z6p95BuRZzDDXZOl2e8UmR4RhYt631i7mfmKU8g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-win32-x64@0.33.2: + resolution: {integrity: sha512-E4magOks77DK47FwHUIGH0RYWSgRBfGdK56kIHSVeB9uIS4pPFr4N2kIVsXdQQo4LzOsENKV5KAhRlRL7eMAdg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1070,30 +1260,6 @@ packages: prop-types: 15.8.1 dev: false - /@mswjs/cookies@0.2.2: - resolution: {integrity: sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==} - engines: {node: '>=14'} - dependencies: - '@types/set-cookie-parser': 2.4.7 - set-cookie-parser: 2.6.0 - dev: true - - /@mswjs/interceptors@0.17.10: - resolution: {integrity: sha512-N8x7eSLGcmUFNWZRxT1vsHvypzIRgQYdG0rJey/rZCy6zT/30qDt8Joj7FxzGNLSwXbeZqJOMqDurp7ra4hgbw==} - engines: {node: '>=14'} - dependencies: - '@open-draft/until': 1.0.3 - '@types/debug': 4.1.12 - '@xmldom/xmldom': 0.8.10 - debug: 4.3.4 - headers-polyfill: 3.2.5 - outvariant: 1.4.2 - strict-event-emitter: 0.2.8 - web-encoding: 1.1.5 - transitivePeerDependencies: - - supports-color - dev: true - /@mui/base@5.0.0-beta.38(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-AsjD6Y1X5A1qndxz8xCcR8LDqv31aiwlgWMPxFAX/kCKiIGKlK65yMeVZ62iQr/6LBz+9hSKLiD1i4TZdAHKcQ==} engines: {node: '>=12.0.0'} @@ -1435,10 +1601,6 @@ packages: which: 4.0.0 dev: true - /@open-draft/until@1.0.3: - resolution: {integrity: sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==} - dev: true - /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1721,10 +1883,6 @@ packages: '@babel/types': 7.24.0 dev: true - /@types/cookie@0.4.1: - resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} - dev: true - /@types/debug@4.1.12: resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} dependencies: @@ -1781,10 +1939,6 @@ packages: pretty-format: 29.7.0 dev: true - /@types/js-levenshtein@1.1.3: - resolution: {integrity: sha512-jd+Q+sD20Qfu9e2aEXogiO3vpOC1PYJOUdyN9gvs4Qrvkg4wF43L5OhqrPeokdv8TL0/mXoYfpkcoGZMNN2pkQ==} - dev: true - /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: @@ -1858,12 +2012,6 @@ packages: resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: true - /@types/set-cookie-parser@2.4.7: - resolution: {integrity: sha512-+ge/loa0oTozxip6zmhRIk8Z/boU51wl9Q6QdLZcokIGMzY5lFXYy/x7Htj2HTC6/KZP1hUbZ1ekx8DYXICvWg==} - dependencies: - '@types/node': 20.11.25 - dev: true - /@types/stack-utils@2.0.3: resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} dev: true @@ -2043,11 +2191,6 @@ packages: server-only: 0.0.1 dev: false - /@xmldom/xmldom@0.8.10: - resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} - engines: {node: '>=10.0.0'} - dev: true - /@zkochan/retry@0.2.0: resolution: {integrity: sha512-WhB+2B/ZPlW2Xy/kMJBrMbqecWXcbDDgn0K0wKBAgO2OlBTz1iLJrRWduo+DGGn0Akvz1Lu4Xvls7dJojximWw==} engines: {node: '>=10'} @@ -2060,12 +2203,6 @@ packages: rimraf: 3.0.2 dev: true - /@zxing/text-encoding@0.9.0: - resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} - requiresBuild: true - dev: true - optional: true - /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} deprecated: Use your platform's native atob() and btoa() methods instead @@ -2360,10 +2497,6 @@ packages: dequal: 2.0.3 dev: true - /b4a@1.6.6: - resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} - dev: false - /babel-jest@29.7.0(@babel/core@7.24.0): resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2458,52 +2591,6 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /bare-events@2.2.1: - resolution: {integrity: sha512-9GYPpsPFvrWBkelIhOhTWtkeZxVxZOdb3VnFTCzlOo3OjvmTvzLoZFUT8kNFACx0vJej6QPney1Cf9BvzCNE/A==} - requiresBuild: true - dev: false - optional: true - - /bare-fs@2.2.1: - resolution: {integrity: sha512-+CjmZANQDFZWy4PGbVdmALIwmt33aJg8qTkVjClU6X4WmZkTPBDxRHiBn7fpqEWEfF3AC2io++erpViAIQbSjg==} - requiresBuild: true - dependencies: - bare-events: 2.2.1 - bare-os: 2.2.0 - bare-path: 2.1.0 - streamx: 2.16.1 - dev: false - optional: true - - /bare-os@2.2.0: - resolution: {integrity: sha512-hD0rOPfYWOMpVirTACt4/nK8mC55La12K5fY1ij8HAdfQakD62M+H4o4tpfKzVGLgRDTuk3vjA4GqGXXCeFbag==} - requiresBuild: true - dev: false - optional: true - - /bare-path@2.1.0: - resolution: {integrity: sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==} - requiresBuild: true - dependencies: - bare-os: 2.2.0 - dev: false - optional: true - - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true - - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - /bole@5.0.11: resolution: {integrity: sha512-KB0Ye0iMAW5BnNbnLfMSQcnI186hKUzE2fpkZWqcxsoTR7eqzlTidSOMYPHJOn/yR7VGH7uSZp37qH9q2Et0zQ==} dependencies: @@ -2540,7 +2627,7 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001596 + caniuse-lite: 1.0.30001597 electron-to-chromium: 1.4.699 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) @@ -2555,12 +2642,6 @@ packages: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: @@ -2599,8 +2680,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001596: - resolution: {integrity: sha512-zpkZ+kEr6We7w63ORkoJ2pOfBwBkY/bJrG/UZ90qNb45Isblu8wzDgevEOrRL1r9dWayHjYiiyCMEXPn4DweGQ==} + /caniuse-lite@1.0.30001597: + resolution: {integrity: sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==} /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -2664,29 +2745,6 @@ packages: /character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true - - /chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: false - /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -2701,13 +2759,6 @@ packages: engines: {node: '>=6'} dev: true - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - dev: true - /cli-cursor@4.0.0: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2715,11 +2766,6 @@ packages: restore-cursor: 4.0.0 dev: true - /cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - dev: true - /cli-truncate@4.0.0: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} @@ -2728,11 +2774,6 @@ packages: string-width: 7.1.0 dev: true - /cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - dev: true - /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false @@ -2751,6 +2792,7 @@ packages: engines: {node: '>=0.8'} requiresBuild: true dev: true + optional: true /clsx@2.1.0: resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} @@ -2817,11 +2859,6 @@ packages: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} dev: false - /commander@11.0.0: - resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} - engines: {node: '>=16'} - dev: true - /commander@11.1.0: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} @@ -2869,11 +2906,6 @@ packages: /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - /cookie@0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} - engines: {node: '>= 0.6'} - dev: true - /cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -3004,13 +3036,6 @@ packages: dependencies: character-entities: 2.0.2 - /decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - dependencies: - mimic-response: 3.1.0 - dev: false - /dedent@1.5.1: resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} peerDependencies: @@ -3041,12 +3066,13 @@ packages: side-channel: 1.0.6 which-boxed-primitive: 1.0.2 which-collection: 1.0.2 - which-typed-array: 1.1.14 + which-typed-array: 1.1.15 dev: true /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} + dev: true /deep-freeze@0.0.1: resolution: {integrity: sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==} @@ -3067,6 +3093,7 @@ packages: dependencies: clone: 1.0.4 dev: true + optional: true /define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} @@ -3203,12 +3230,6 @@ packages: mem: 8.1.1 dev: true - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: false - /enhanced-resolve@5.15.1: resolution: {integrity: sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg==} engines: {node: '>=10.13.0'} @@ -3217,11 +3238,6 @@ packages: tapable: 2.2.1 dev: true - /entities@3.0.1: - resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} - engines: {node: '>=0.12'} - dev: true - /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -3256,7 +3272,7 @@ packages: has-property-descriptors: 1.0.2 has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.1 + hasown: 2.0.2 internal-slot: 1.0.7 is-array-buffer: 3.0.4 is-callable: 1.2.7 @@ -3280,7 +3296,7 @@ packages: typed-array-byte-offset: 1.0.2 typed-array-length: 1.0.5 unbox-primitive: 1.0.2 - which-typed-array: 1.1.14 + which-typed-array: 1.1.15 dev: true /es-array-method-boxes-properly@1.0.0: @@ -3340,13 +3356,13 @@ packages: dependencies: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 - hasown: 2.0.1 + hasown: 2.0.2 dev: true /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - hasown: 2.0.1 + hasown: 2.0.2 dev: true /es-to-primitive@1.2.1: @@ -3519,7 +3535,7 @@ packages: eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.1.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - hasown: 2.0.1 + hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 @@ -3551,7 +3567,7 @@ packages: emoji-regex: 9.2.2 es-iterator-helpers: 1.0.17 eslint: 8.57.0 - hasown: 2.0.1 + hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 minimatch: 3.1.2 @@ -3701,11 +3717,6 @@ packages: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} dev: true - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: true - /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -3741,11 +3752,6 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - dev: false - /expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3768,23 +3774,10 @@ packages: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: false - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: true - /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - dev: false - /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -3836,13 +3829,6 @@ packages: optional: true dev: true - /figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - dependencies: - escape-string-regexp: 1.0.5 - dev: true - /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -3927,10 +3913,6 @@ packages: engines: {node: '>=0.4.x'} dev: false - /fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: false - /fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -3991,7 +3973,7 @@ packages: function-bind: 1.1.2 has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.1 + hasown: 2.0.2 dev: true /get-package-type@0.1.0: @@ -4029,10 +4011,6 @@ packages: resolve-pkg-maps: 1.0.0 dev: true - /github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - dev: false - /github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} dev: false @@ -4117,11 +4095,6 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true - /graphql@16.8.1: - resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==} - engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - dev: true - /gray-matter@4.0.3: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} @@ -4172,8 +4145,8 @@ packages: has-symbols: 1.0.3 dev: true - /hasown@2.0.1: - resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 @@ -4232,10 +4205,6 @@ packages: space-separated-tokens: 1.1.5 dev: false - /headers-polyfill@3.2.5: - resolution: {integrity: sha512-tUCGvt191vNSQgttSyJoibR+VO+I6+iCHIUdhzEMJKE+EAL8BwCN7fUOZlY4ofOelNHsK+gEjxB/B+9N3EWtdA==} - dev: true - /highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} dev: false @@ -4312,13 +4281,6 @@ packages: hasBin: true dev: true - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: true - /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -4330,14 +4292,6 @@ packages: resolution: {integrity: sha512-kNrgUK0qI+9qLTBidsH85HjDLpZfrrS0ElquKKe/fJFdB3D7VeKdXXEvOPDUHSHOzdZKCAAaQIWWyp0l2yq6pw==} dev: true - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: true - /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} @@ -4382,10 +4336,7 @@ packages: /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false + dev: true /ini@4.1.2: resolution: {integrity: sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==} @@ -4396,33 +4347,12 @@ packages: resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} dev: false - /inquirer@8.2.6: - resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} - engines: {node: '>=12.0.0'} - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.1 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 6.2.0 - dev: true - /internal-slot@1.0.7: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 - hasown: 2.0.1 + hasown: 2.0.2 side-channel: 1.0.6 dev: true @@ -4482,13 +4412,6 @@ packages: has-bigints: 1.0.2 dev: true - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: true - /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} @@ -4505,7 +4428,7 @@ packages: /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - hasown: 2.0.1 + hasown: 2.0.2 /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -4580,11 +4503,6 @@ packages: /is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: true - /is-iterable@1.1.1: resolution: {integrity: sha512-EdOZCr0NsGE00Pot+x1ZFx9MJK3C6wy91geZpXwvwexDLJvA4nzYyZf7r+EIwSeVsOLDdBz7ATg9NqKTzuNYuQ==} engines: {node: '>= 4'} @@ -4600,10 +4518,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-node-process@1.2.0: - resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} - dev: true - /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} @@ -4683,12 +4597,7 @@ packages: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.14 - dev: true - - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} + which-typed-array: 1.1.15 dev: true /is-weakmap@2.0.2: @@ -5245,11 +5154,6 @@ packages: hasBin: true dev: true - /js-levenshtein@1.1.6: - resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} - engines: {node: '>=0.10.0'} - dev: true - /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -5457,10 +5361,10 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /linkify-it@4.0.1: - resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} + /linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} dependencies: - uc.micro: 1.0.6 + uc.micro: 2.1.0 dev: true /lint-staged@15.2.2: @@ -5530,14 +5434,6 @@ packages: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: true - /log-update@6.0.0: resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==} engines: {node: '>=18'} @@ -5625,48 +5521,49 @@ packages: engines: {node: '>=4'} dev: true - /markdown-it@13.0.1: - resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==} + /markdown-it@14.0.0: + resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==} hasBin: true dependencies: argparse: 2.0.1 - entities: 3.0.1 - linkify-it: 4.0.1 - mdurl: 1.0.1 - uc.micro: 1.0.6 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 dev: true /markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} dev: false - /markdownlint-cli@0.37.0: - resolution: {integrity: sha512-hNKAc0bWBBuVhJbSWbUhRzavstiB4o1jh3JeSpwC4/dt6eJ54lRfYHRxVdzVp4qGWBKbeE6Pg490PFEfrKjqSg==} - engines: {node: '>=16'} + /markdownlint-cli@0.39.0: + resolution: {integrity: sha512-ZuFN7Xpsbn1Nbp0YYkeLOfXOMOfLQBik2lKRy8pVI/llmKQ2uW7x+8k5OMgF6o7XCsTDSYC/OOmeJ+3qplvnJQ==} + engines: {node: '>=18'} hasBin: true dependencies: - commander: 11.0.0 + commander: 11.1.0 get-stdin: 9.0.0 glob: 10.3.10 - ignore: 5.2.4 + ignore: 5.3.1 js-yaml: 4.1.0 jsonc-parser: 3.2.1 - markdownlint: 0.31.1 + markdownlint: 0.33.0 minimatch: 9.0.3 run-con: 1.3.2 dev: true - /markdownlint-micromark@0.1.7: - resolution: {integrity: sha512-BbRPTC72fl5vlSKv37v/xIENSRDYL/7X/XoFzZ740FGEbs9vZerLrIkFRY0rv7slQKxDczToYuMmqQFN61fi4Q==} + /markdownlint-micromark@0.1.8: + resolution: {integrity: sha512-1ouYkMRo9/6gou9gObuMDnvZM8jC/ly3QCFQyoSPCS2XV1ZClU0xpKbL1Ar3bWWRT1RnBZkWUEiNKrI2CwiBQA==} engines: {node: '>=16'} dev: true - /markdownlint@0.31.1: - resolution: {integrity: sha512-CKMR2hgcIBrYlIUccDCOvi966PZ0kJExDrUi1R+oF9PvqQmCrTqjOsgIvf2403OmJ+CWomuzDoylr6KbuMyvHA==} - engines: {node: '>=16'} + /markdownlint@0.33.0: + resolution: {integrity: sha512-4lbtT14A3m0LPX1WS/3d1m7Blg+ZwiLq36WvjQqFGsX3Gik99NV+VXp/PW3n+Q62xyPdbvGOCfjPqjW+/SKMig==} + engines: {node: '>=18'} dependencies: - markdown-it: 13.0.1 - markdownlint-micromark: 0.1.7 + markdown-it: 14.0.0 + markdownlint-micromark: 0.1.8 dev: true /mdast-util-directive@3.0.0: @@ -5874,8 +5771,8 @@ packages: unist-util-visit: 5.0.0 dev: false - /mdurl@1.0.1: - resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + /mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} dev: true /mem@6.1.1: @@ -6183,11 +6080,6 @@ packages: engines: {node: '>=12'} dev: true - /mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: false - /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -6208,16 +6100,13 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true /minipass@7.0.4: resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} dev: true - /mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - dev: false - /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -6225,56 +6114,12 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /msw@1.3.2(typescript@5.4.2): - resolution: {integrity: sha512-wKLhFPR+NitYTkQl5047pia0reNGgf0P6a1eTnA5aNlripmiz0sabMvvHcicE8kQ3/gZcI0YiPFWmYfowfm3lA==} - engines: {node: '>=14'} - hasBin: true - requiresBuild: true - peerDependencies: - typescript: '>= 4.4.x <= 5.2.x' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@mswjs/cookies': 0.2.2 - '@mswjs/interceptors': 0.17.10 - '@open-draft/until': 1.0.3 - '@types/cookie': 0.4.1 - '@types/js-levenshtein': 1.1.3 - chalk: 4.1.2 - chokidar: 3.6.0 - cookie: 0.4.2 - graphql: 16.8.1 - headers-polyfill: 3.2.5 - inquirer: 8.2.6 - is-node-process: 1.2.0 - js-levenshtein: 1.1.6 - node-fetch: 2.7.0 - outvariant: 1.4.2 - path-to-regexp: 6.2.1 - strict-event-emitter: 0.4.6 - type-fest: 2.19.0 - typescript: 5.4.2 - yargs: 17.7.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - dev: true - /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: false - /napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - dev: false - /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true @@ -6309,7 +6154,7 @@ packages: '@next/env': 14.1.3 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001596 + caniuse-lite: 1.0.30001597 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 @@ -6330,29 +6175,6 @@ packages: - babel-plugin-macros dev: false - /node-abi@3.56.0: - resolution: {integrity: sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q==} - engines: {node: '>=10'} - dependencies: - semver: 7.6.0 - dev: false - - /node-addon-api@6.1.0: - resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - dev: false - - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: true - /node-fetch@3.0.0-beta.9: resolution: {integrity: sha512-RdbZCEynH2tH46+tj0ua9caUHVWrd/RHnRfvly2EVdqGmI3ndS1Vn/xjm5KuGejDt2RNDQsVRLPNd2QPwcewVg==} engines: {node: ^10.17 || >=12.3} @@ -6529,6 +6351,7 @@ packages: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 + dev: true /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} @@ -6556,30 +6379,6 @@ packages: type-check: 0.4.0 dev: true - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - dev: true - - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: true - - /outvariant@1.4.2: - resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==} - dev: true - /p-defer@1.0.0: resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} engines: {node: '>=4'} @@ -6727,10 +6526,6 @@ packages: unique-string: 2.0.0 dev: true - /path-to-regexp@6.2.1: - resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} - dev: true - /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -6766,12 +6561,12 @@ packages: find-up: 4.1.0 dev: true - /plaiceholder@3.0.0(sharp@0.32.5): + /plaiceholder@3.0.0(sharp@0.33.2): resolution: {integrity: sha512-jwHxxHPnr1BwRzPCeZgEK2BMsEy2327sWynw3qb6XC/oGgGDUTPtR8pFxFQmNArhMBwhkUbUr5OPhhIJpCa8eQ==} peerDependencies: sharp: '>= 0.30.6' dependencies: - sharp: 0.32.5 + sharp: 0.33.2 dev: false /possible-typed-array-names@1.0.0: @@ -6788,25 +6583,6 @@ packages: source-map-js: 1.0.2 dev: false - /prebuild-install@7.1.2: - resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - detect-libc: 2.0.2 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.56.0 - pump: 3.0.0 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - dev: false - /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -6904,12 +6680,10 @@ packages: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: false + /punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + dev: true /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} @@ -6928,21 +6702,6 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - requiresBuild: true - dev: false - - /rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - dev: false - /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -7045,12 +6804,6 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 dev: true /reading-time@1.5.0: @@ -7228,14 +6981,6 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: true - /restore-cursor@4.0.0: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -7269,11 +7014,6 @@ packages: glob: 7.2.3 dev: true - /run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - dev: true - /run-con@1.3.2: resolution: {integrity: sha512-CcfE+mYiTcKEzg0IqS08+efdnH0oJ3zV0wSUFBNrMHMuxCtXvBCLzCJHatwuXDcu/RlhjTziTo/a1ruQik6/Yg==} hasBin: true @@ -7308,6 +7048,7 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true /safe-regex-test@1.0.3: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} @@ -7357,10 +7098,6 @@ packages: resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} dev: false - /set-cookie-parser@2.6.0: - resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - dev: true - /set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -7383,19 +7120,34 @@ packages: has-property-descriptors: 1.0.2 dev: true - /sharp@0.32.5: - resolution: {integrity: sha512-0dap3iysgDkNaPOaOL4X/0akdu0ma62GcdC2NBQ+93eqpePdDdr2/LM0sFdDSMmN7yS+odyZtPsb7tx/cYBKnQ==} - engines: {node: '>=14.15.0'} + /sharp@0.33.2: + resolution: {integrity: sha512-WlYOPyyPDiiM07j/UO+E720ju6gtNtHjEGg5vovUk1Lgxyjm2LFO+37Nt/UI3MMh2l6hxTWQWi7qk3cXJTutcQ==} + engines: {libvips: '>=8.15.1', node: ^18.17.0 || ^20.3.0 || >=21.0.0} requiresBuild: true dependencies: color: 4.2.3 detect-libc: 2.0.2 - node-addon-api: 6.1.0 - prebuild-install: 7.1.2 semver: 7.6.0 - simple-get: 4.0.1 - tar-fs: 3.0.5 - tunnel-agent: 0.6.0 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.2 + '@img/sharp-darwin-x64': 0.33.2 + '@img/sharp-libvips-darwin-arm64': 1.0.1 + '@img/sharp-libvips-darwin-x64': 1.0.1 + '@img/sharp-libvips-linux-arm': 1.0.1 + '@img/sharp-libvips-linux-arm64': 1.0.1 + '@img/sharp-libvips-linux-s390x': 1.0.1 + '@img/sharp-libvips-linux-x64': 1.0.1 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.1 + '@img/sharp-libvips-linuxmusl-x64': 1.0.1 + '@img/sharp-linux-arm': 0.33.2 + '@img/sharp-linux-arm64': 0.33.2 + '@img/sharp-linux-s390x': 0.33.2 + '@img/sharp-linux-x64': 0.33.2 + '@img/sharp-linuxmusl-arm64': 0.33.2 + '@img/sharp-linuxmusl-x64': 0.33.2 + '@img/sharp-wasm32': 0.33.2 + '@img/sharp-win32-ia32': 0.33.2 + '@img/sharp-win32-x64': 0.33.2 dev: false /shebang-command@2.0.0: @@ -7437,18 +7189,6 @@ packages: engines: {node: '>=14'} dev: true - /simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: false - - /simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - dev: false - /simple-icons@11.8.0: resolution: {integrity: sha512-PlbTchVVDyVccqT+M1HvfiB1gjzi6ewnpsj9QCFLsX9lZiJJIMrCY+bSELRMl0GUM0+wgH9mr8ZAj4XJdaMJvg==} engines: {node: '>=0.12.18'} @@ -7581,25 +7321,6 @@ packages: engines: {node: '>=10.0.0'} dev: false - /streamx@2.16.1: - resolution: {integrity: sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==} - dependencies: - fast-fifo: 1.3.2 - queue-tick: 1.0.1 - optionalDependencies: - bare-events: 2.2.1 - dev: false - - /strict-event-emitter@0.2.8: - resolution: {integrity: sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==} - dependencies: - events: 3.3.0 - dev: true - - /strict-event-emitter@0.4.6: - resolution: {integrity: sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==} - dev: true - /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -7687,6 +7408,7 @@ packages: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 + dev: true /stringify-entities@4.0.3: resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} @@ -7740,11 +7462,6 @@ packages: min-indent: 1.0.1 dev: true - /strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: false - /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -7820,44 +7537,6 @@ packages: engines: {node: '>=6'} dev: true - /tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 2.2.0 - dev: false - - /tar-fs@3.0.5: - resolution: {integrity: sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==} - dependencies: - pump: 3.0.0 - tar-stream: 3.1.7 - optionalDependencies: - bare-fs: 2.2.1 - bare-path: 2.1.0 - dev: false - - /tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: false - - /tar-stream@3.1.7: - resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - dependencies: - b4a: 1.6.6 - fast-fifo: 1.3.2 - streamx: 2.16.1 - dev: false - /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -7877,17 +7556,6 @@ packages: readable-stream: 3.6.2 dev: true - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true - - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - dependencies: - os-tmpdir: 1.0.2 - dev: true - /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true @@ -7929,10 +7597,6 @@ packages: url-parse: 1.5.10 dev: true - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: true - /tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} @@ -8005,12 +7669,6 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - dependencies: - safe-buffer: 5.2.1 - dev: false - /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -8038,11 +7696,6 @@ packages: engines: {node: '>=8'} dev: true - /type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - dev: true - /type-fest@3.13.1: resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} engines: {node: '>=14.16'} @@ -8098,8 +7751,8 @@ packages: hasBin: true dev: true - /uc.micro@1.0.6: - resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + /uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} dev: true /unbox-primitive@1.0.2: @@ -8221,15 +7874,6 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - /util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.14 dev: true /v8-compile-cache-lib@3.0.1: @@ -8307,21 +7951,11 @@ packages: /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + requiresBuild: true dependencies: defaults: 1.0.4 dev: true - - /web-encoding@1.1.5: - resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} - dependencies: - util: 0.12.5 - optionalDependencies: - '@zxing/text-encoding': 0.9.0 - dev: true - - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: true + optional: true /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} @@ -8348,13 +7982,6 @@ packages: webidl-conversions: 7.0.0 dev: true - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: true - /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: @@ -8380,7 +8007,7 @@ packages: isarray: 2.0.5 which-boxed-primitive: 1.0.2 which-collection: 1.0.2 - which-typed-array: 1.1.14 + which-typed-array: 1.1.15 dev: true /which-collection@1.0.2: @@ -8393,8 +8020,8 @@ packages: is-weakset: 2.0.3 dev: true - /which-typed-array@1.1.14: - resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 @@ -8420,15 +8047,6 @@ packages: isexe: 3.1.1 dev: true - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -8458,6 +8076,7 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} diff --git a/src/components/Remark/constants.tsx b/src/components/Remark/constants.tsx index 200be801..90ede98a 100644 --- a/src/components/Remark/constants.tsx +++ b/src/components/Remark/constants.tsx @@ -47,7 +47,7 @@ export const COMPONENTS = ol: RemarkListOrdered, p: RemarkParagraph, // NOTE The `code` entries handle both block and inline code markup - pre: ({children})=> <>{children}, + pre: ({children}) => <>{children}, table: RemarkTable, tbody: RemarkTableBody, td: RemarkTableCell<'td'>, diff --git a/src/mocks/bootstrap.ts b/src/mocks/bootstrap.ts deleted file mode 100644 index 561f0bb9..00000000 --- a/src/mocks/bootstrap.ts +++ /dev/null @@ -1,13 +0,0 @@ -const bootstrap = async () => { - if (typeof window === 'undefined') { - const { server } = await import('@/mocks/server'); - server.listen(); - } else { - const { worker } = await import('@/mocks/browser'); - worker.start(); - } -}; - -bootstrap(); - -export {}; diff --git a/src/mocks/browser.ts b/src/mocks/browser.ts deleted file mode 100644 index 53a891c2..00000000 --- a/src/mocks/browser.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { setupWorker } from 'msw'; - -import { handlers } from '@/mocks/handlers'; - -export const worker = setupWorker(...handlers); diff --git a/src/mocks/constants/named.ts b/src/mocks/constants/named.ts deleted file mode 100644 index fd667c55..00000000 --- a/src/mocks/constants/named.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { type ScryDataItem } from '@/tools/scryfall/types'; - -export const NAMED: ScryDataItem = { - /* eslint-disable camelcase */ - artist: 'Adrian Smith', - artist_ids: ['be42f6f3-66d4-4957-9f1e-0591f8b95364'], - booster: true, - border_color: 'black', - card_back_id: '0aeebaf5-8c7d-4636-9e82-8c27447861f7', - cardmarket_id: 8576, - cmc: 3.0, - collector_number: '66', - color_identity: ['B'], - colors: ['B'], - digital: false, - edhrec_rank: 3797, - finishes: ['nonfoil'], - foil: false, - frame: '1997', - full_art: false, - games: ['paper', 'mtgo'], - highres_image: true, - id: '5b3c6d87-9383-450b-bba5-33435b6b0d08', - illustration_id: '2c7d4a58-b8dd-447f-820d-bb728a1d11af', - image_status: 'highres_scan', - image_uris: { - art_crop: '/mocks/doomsday.wth.art-crop.jpg', - border_crop: '/mocks/doomsday.wth.border-crop.jpg', - large: '/mocks/doomsday.wth.large.jpg', - normal: '/mocks/doomsday.wth.normal.jpg', - png: '/mocks/doomsday.wth.png.png', - }, - keywords: [], - legalities: { - alchemy: 'not_legal', - brawl: 'not_legal', - commander: 'legal', - duel: 'legal', - explorer: 'not_legal', - future: 'not_legal', - gladiator: 'not_legal', - historic: 'not_legal', - historicbrawl: 'not_legal', - legacy: 'legal', - modern: 'not_legal', - oldschool: 'not_legal', - pauper: 'not_legal', - paupercommander: 'not_legal', - penny: 'not_legal', - pioneer: 'not_legal', - premodern: 'legal', - standard: 'not_legal', - vintage: 'legal', - }, - lang: 'en', - layout: 'normal', - mana_cost: '{B}{B}{B}', - mtgo_foil_id: 9280, - mtgo_id: 9279, - multiverse_ids: [4454], - name: 'Doomsday', - nonfoil: true, - object: 'card', - oracle_id: '721eb5a2-d7cf-4db0-8013-ef3f596c52a5', - oracle_text: - 'Search your library and graveyard for five cards and exile the rest. Put the chosen cards on top of your library in any order. You lose half your life, rounded up.', - oversized: false, - prices: { - eur: '6.00', - eur_foil: null, - tix: '24.44', - usd: '13.21', - usd_etched: null, - usd_foil: null, - }, - prints_search_uri: - 'https://api.scryfall.com/cards/search?order=released&q=oracleid%3A721eb5a2-d7cf-4db0-8013-ef3f596c52a5&unique=prints', - promo: false, - purchase_uris: { - cardhoarder: - 'https://www.cardhoarder.com/cards/9279?affiliate_id=scryfall&ref=card-profile&utm_campaign=affiliate&utm_medium=card&utm_source=scryfall', - cardmarket: - 'https://www.cardmarket.com/en/Magic/Products/Search?referrer=scryfall&searchString=Doomsday&utm_campaign=card_prices&utm_medium=text&utm_source=scryfall', - tcgplayer: - 'https://www.tcgplayer.com/product/6014?page=1&utm_campaign=affiliate&utm_medium=api&utm_source=scryfall', - }, - rarity: 'rare', - related_uris: { - edhrec: 'https://edhrec.com/route/?cc=Doomsday', - gatherer: - 'https://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=4454', - tcgplayer_infinite_articles: - 'https://infinite.tcgplayer.com/search?contentMode=article&game=magic&partner=scryfall&q=Doomsday&utm_campaign=affiliate&utm_medium=api&utm_source=scryfall', - tcgplayer_infinite_decks: - 'https://infinite.tcgplayer.com/search?contentMode=deck&game=magic&partner=scryfall&q=Doomsday&utm_campaign=affiliate&utm_medium=api&utm_source=scryfall', - }, - released_at: '1997-06-09', - reprint: false, - reserved: false, - rulings_uri: - 'https://api.scryfall.com/cards/5b3c6d87-9383-450b-bba5-33435b6b0d08/rulings', - scryfall_set_uri: 'https://scryfall.com/sets/wth?utm_source=api', - scryfall_uri: 'https://scryfall.com/card/wth/66/doomsday?utm_source=api', - set: 'wth', - set_id: '700997ac-add2-4ce2-992e-5efa0fdfc0e9', - set_name: 'Weatherlight', - set_search_uri: - 'https://api.scryfall.com/cards/search?order=set&q=e%3Awth&unique=prints', - set_type: 'expansion', - set_uri: 'https://api.scryfall.com/sets/700997ac-add2-4ce2-992e-5efa0fdfc0e9', - story_spotlight: false, - tcgplayer_id: 6014, - textless: false, - type_line: 'Sorcery', - uri: 'https://api.scryfall.com/cards/5b3c6d87-9383-450b-bba5-33435b6b0d08', - variation: false, - /* eslint-enable camelcase */ -}; diff --git a/src/mocks/constants/search.ts b/src/mocks/constants/search.ts deleted file mode 100644 index 4bea8e81..00000000 --- a/src/mocks/constants/search.ts +++ /dev/null @@ -1,245 +0,0 @@ -import { type ScryDataItem, type ScryDataList } from '@/tools/scryfall/types'; - -export const SEARCH: ScryDataList = { - /* eslint-disable camelcase */ - data: [ - { - artist: 'Adrian Smith', - artist_ids: ['be42f6f3-66d4-4957-9f1e-0591f8b95364'], - booster: true, - border_color: 'black', - card_back_id: '0aeebaf5-8c7d-4636-9e82-8c27447861f7', - cardmarket_id: 8576, - cmc: 3.0, - collector_number: '66', - color_identity: ['B'], - colors: ['B'], - digital: false, - edhrec_rank: 3797, - finishes: ['nonfoil'], - foil: false, - frame: '1997', - full_art: false, - games: ['paper', 'mtgo'], - highres_image: true, - id: '5b3c6d87-9383-450b-bba5-33435b6b0d08', - illustration_id: '2c7d4a58-b8dd-447f-820d-bb728a1d11af', - image_status: 'highres_scan', - image_uris: { - art_crop: '/mocks/doomsday.wth.art-crop.jpg', - border_crop: '/mocks/doomsday.wth.border-crop.jpg', - large: '/mocks/doomsday.wth.large.jpg', - normal: '/mocks/doomsday.wth.normal.jpg', - png: '/mocks/doomsday.wth.png.png', - }, - keywords: [], - lang: 'en', - layout: 'normal', - legalities: { - alchemy: 'not_legal', - brawl: 'not_legal', - commander: 'legal', - duel: 'legal', - explorer: 'not_legal', - future: 'not_legal', - gladiator: 'not_legal', - historic: 'not_legal', - historicbrawl: 'not_legal', - legacy: 'legal', - modern: 'not_legal', - oldschool: 'not_legal', - pauper: 'not_legal', - paupercommander: 'not_legal', - penny: 'not_legal', - pioneer: 'not_legal', - premodern: 'legal', - standard: 'not_legal', - vintage: 'legal', - }, - mana_cost: '{B}{B}{B}', - mtgo_foil_id: 9280, - mtgo_id: 9279, - multiverse_ids: [4454], - name: 'Doomsday', - nonfoil: true, - object: 'card', - oracle_id: '721eb5a2-d7cf-4db0-8013-ef3f596c52a5', - oracle_text: - 'Search your library and graveyard for five cards and exile the rest. Put the chosen cards on top of your library in any order. You lose half your life, rounded up.', - oversized: false, - prices: { - eur: '6.00', - eur_foil: null, - tix: '24.44', - usd: '13.21', - usd_etched: null, - usd_foil: null, - }, - prints_search_uri: - 'https://api.scryfall.com/cards/search?order=released&q=oracleid%3A721eb5a2-d7cf-4db0-8013-ef3f596c52a5&unique=prints', - promo: false, - purchase_uris: { - cardhoarder: - 'https://www.cardhoarder.com/cards/9279?affiliate_id=scryfall&ref=card-profile&utm_campaign=affiliate&utm_medium=card&utm_source=scryfall', - cardmarket: - 'https://www.cardmarket.com/en/Magic/Products/Search?referrer=scryfall&searchString=Doomsday&utm_campaign=card_prices&utm_medium=text&utm_source=scryfall', - tcgplayer: - 'https://www.tcgplayer.com/product/6014?page=1&utm_campaign=affiliate&utm_medium=api&utm_source=scryfall', - }, - rarity: 'rare', - related_uris: { - edhrec: 'https://edhrec.com/route/?cc=Doomsday', - gatherer: - 'https://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=4454', - tcgplayer_infinite_articles: - 'https://infinite.tcgplayer.com/search?contentMode=article&game=magic&partner=scryfall&q=Doomsday&utm_campaign=affiliate&utm_medium=api&utm_source=scryfall', - tcgplayer_infinite_decks: - 'https://infinite.tcgplayer.com/search?contentMode=deck&game=magic&partner=scryfall&q=Doomsday&utm_campaign=affiliate&utm_medium=api&utm_source=scryfall', - }, - released_at: '1997-06-09', - reprint: false, - reserved: false, - rulings_uri: - 'https://api.scryfall.com/cards/5b3c6d87-9383-450b-bba5-33435b6b0d08/rulings', - scryfall_set_uri: 'https://scryfall.com/sets/wth?utm_source=api', - scryfall_uri: 'https://scryfall.com/card/wth/66/doomsday?utm_source=api', - set: 'wth', - set_id: '700997ac-add2-4ce2-992e-5efa0fdfc0e9', - set_name: 'Weatherlight', - set_search_uri: - 'https://api.scryfall.com/cards/search?order=set&q=e%3Awth&unique=prints', - set_type: 'expansion', - set_uri: - 'https://api.scryfall.com/sets/700997ac-add2-4ce2-992e-5efa0fdfc0e9', - story_spotlight: false, - tcgplayer_id: 6014, - textless: false, - type_line: 'Sorcery', - uri: 'https://api.scryfall.com/cards/5b3c6d87-9383-450b-bba5-33435b6b0d08', - variation: false, - } as ScryDataItem, - { - artist: 'Noah Bradley', - artist_ids: ['81995d11-da98-4f8b-89bd-b88ca2ddb06b'], - booster: true, - border_color: 'black', - card_back_id: '0aeebaf5-8c7d-4636-9e82-8c27447861f7', - cardmarket_id: 319008, - cmc: 3.0, - collector_number: '88', - color_identity: ['B'], - colors: ['B'], - digital: false, - edhrec_rank: 3797, - finishes: ['nonfoil', 'foil'], - foil: true, - frame: '2015', - full_art: false, - games: ['paper', 'mtgo'], - highres_image: true, - id: '68c73755-9678-467a-abd5-f8dd1556864e', - illustration_id: 'f7f9a52f-2ff7-48fd-802f-0a481b0c69fb', - image_status: 'highres_scan', - image_uris: { - art_crop: '/mocks/doomsday.a25.art-crop.jpg', - border_crop: '/mocks/doomsday.a25.border-crop.jpg', - large: '/mocks/doomsday.a25.large.jpg', - normal: '/mocks/doomsday.a25.normal.jpg', - png: '/mocks/doomsday.a25.png.png', - }, - keywords: [], - lang: 'en', - layout: 'normal', - legalities: { - alchemy: 'not_legal', - brawl: 'not_legal', - commander: 'legal', - duel: 'legal', - explorer: 'not_legal', - future: 'not_legal', - gladiator: 'not_legal', - historic: 'not_legal', - historicbrawl: 'not_legal', - legacy: 'legal', - modern: 'not_legal', - oldschool: 'not_legal', - pauper: 'not_legal', - paupercommander: 'not_legal', - penny: 'not_legal', - pioneer: 'not_legal', - premodern: 'legal', - standard: 'not_legal', - vintage: 'legal', - }, - mana_cost: '{B}{B}{B}', - mtgo_foil_id: 67091, - mtgo_id: 67090, - multiverse_ids: [442077], - name: 'Doomsday', - nonfoil: true, - object: 'card', - oracle_id: '721eb5a2-d7cf-4db0-8013-ef3f596c52a5', - oracle_text: - 'Search your library and graveyard for five cards and exile the rest. Put the chosen cards on top of your library in any order. You lose half your life, rounded up.', - oversized: false, - prices: { - eur: '14.98', - eur_foil: '29.95', - tix: '9.30', - usd: '13.00', - usd_etched: null, - usd_foil: '43.04', - }, - prints_search_uri: - 'https://api.scryfall.com/cards/search?order=released&q=oracleid%3A721eb5a2-d7cf-4db0-8013-ef3f596c52a5&unique=prints', - promo: false, - purchase_uris: { - cardhoarder: - 'https://www.cardhoarder.com/cards/67090?affiliate_id=scryfall&ref=card-profile&utm_campaign=affiliate&utm_medium=card&utm_source=scryfall', - cardmarket: - 'https://www.cardmarket.com/en/Magic/Products/Search?referrer=scryfall&searchString=Doomsday&utm_campaign=card_prices&utm_medium=text&utm_source=scryfall', - tcgplayer: - 'https://www.tcgplayer.com/product/161443?page=1&utm_campaign=affiliate&utm_medium=api&utm_source=scryfall', - }, - rarity: 'mythic', - related_uris: { - edhrec: 'https://edhrec.com/route/?cc=Doomsday', - gatherer: - 'https://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=442077', - tcgplayer_infinite_articles: - 'https://infinite.tcgplayer.com/search?contentMode=article&game=magic&partner=scryfall&q=Doomsday&utm_campaign=affiliate&utm_medium=api&utm_source=scryfall', - tcgplayer_infinite_decks: - 'https://infinite.tcgplayer.com/search?contentMode=deck&game=magic&partner=scryfall&q=Doomsday&utm_campaign=affiliate&utm_medium=api&utm_source=scryfall', - }, - released_at: '2018-03-16', - reprint: true, - reserved: false, - rulings_uri: - 'https://api.scryfall.com/cards/68c73755-9678-467a-abd5-f8dd1556864e/rulings', - scryfall_set_uri: 'https://scryfall.com/sets/a25?utm_source=api', - scryfall_uri: 'https://scryfall.com/card/a25/88/doomsday?utm_source=api', - security_stamp: 'oval', - set: 'a25', - set_id: '41ee6e2f-69b3-4c53-8a8e-960f5e974cfc', - set_name: 'Masters 25', - set_search_uri: - 'https://api.scryfall.com/cards/search?order=set&q=e%3Aa25&unique=prints', - set_type: 'masters', - set_uri: - 'https://api.scryfall.com/sets/41ee6e2f-69b3-4c53-8a8e-960f5e974cfc', - story_spotlight: false, - tcgplayer_id: 161443, - textless: false, - type_line: 'Sorcery', - uri: 'https://api.scryfall.com/cards/68c73755-9678-467a-abd5-f8dd1556864e', - variation: false, - watermark: 'set', - } as ScryDataItem, - ], - has_more: false, - next_page: null, - object: 'list', - total_cards: 2, - warnings: null, - /* eslint-enable camelcase */ -}; diff --git a/src/mocks/constants/set.ts b/src/mocks/constants/set.ts deleted file mode 100644 index 6e96c51c..00000000 --- a/src/mocks/constants/set.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { type ScryDataItem } from '@/tools/scryfall/types'; - -export const SET = { - /* eslint-disable camelcase */ - arena_id: 77571, - artist: 'Romiy', - artist_ids: ['1b154f1b-377c-4816-a76e-4fa588296304'], - booster: false, - border_color: 'borderless', - card_back_id: '0aeebaf5-8c7d-4636-9e82-8c27447861f7', - cardmarket_id: 556314, - cmc: 1.0, - collector_number: '92', - color_identity: ['B'], - colors: ['B'], - digital: false, - edhrec_rank: 2501, - finishes: ['nonfoil', 'foil', 'etched'], - flavor_text: - '「魔法は大界に平和をもたらしたが、すぐに腐敗した。」\n——神秘の時代:呪文物語', - foil: true, - frame: '2015', - full_art: false, - games: ['arena', 'paper', 'mtgo'], - highres_image: true, - id: '11e96127-83e2-42e2-9799-998b1408d444', - illustration_id: 'c7369e4c-8a0a-4d4b-9e7b-af10abf3138d', - image_status: 'highres_scan', - image_uris: { - art_crop: '/mocks/duress.sta.art-crop.jpg', - border_crop: '/mocks/duress.sta.border-crop.jpg', - large: '/mocks/duress.sta.large.jpg', - normal: '/mocks/duress.sta.normal.jpg', - png: '/mocks/duress.sta.png.png', - }, - keywords: [], - lang: 'ja', - layout: 'normal', - legalities: { - alchemy: 'legal', - brawl: 'legal', - commander: 'legal', - duel: 'legal', - explorer: 'legal', - future: 'legal', - gladiator: 'legal', - historic: 'legal', - historicbrawl: 'legal', - legacy: 'legal', - modern: 'legal', - oldschool: 'not_legal', - pauper: 'legal', - paupercommander: 'legal', - penny: 'legal', - pioneer: 'legal', - premodern: 'legal', - standard: 'legal', - vintage: 'legal', - }, - mana_cost: '{B}', - mtgo_id: 99583, - multiverse_ids: [], - name: 'Duress', - nonfoil: true, - object: 'card', - oracle_id: '33d405ea-7a9a-4970-b70f-9c05d90dd6f0', - oracle_text: - 'Target opponent reveals their hand. You choose a noncreature, nonland card from it. That player discards that card.', - oversized: false, - penny_rank: 57, - prices: { - eur: '0.67', - eur_foil: '1.19', - tix: null, - usd: '1.08', - usd_etched: '1.39', - usd_foil: '1.47', - }, - printed_name: '強迫', - printed_text: - '対戦相手1人を対象とする。そのプレイヤーは自分の手札を公開する。あなたはその中からクリーチャーでも土地でもないカード1枚を選ぶ。そのプレイヤーはそのカードを捨てる。', - printed_type_line: 'ソーサリー', - prints_search_uri: - 'https://api.scryfall.com/cards/search?order=released&q=oracleid%3A33d405ea-7a9a-4970-b70f-9c05d90dd6f0&unique=prints', - promo: false, - promo_types: ['boosterfun'], - purchase_uris: { - cardhoarder: - 'https://www.cardhoarder.com/cards/99583?affiliate_id=scryfall&ref=card-profile&utm_campaign=affiliate&utm_medium=card&utm_source=scryfall', - cardmarket: - 'https://www.cardmarket.com/en/Magic/Products/Search?referrer=scryfall&searchString=Duress&utm_campaign=card_prices&utm_medium=text&utm_source=scryfall', - tcgplayer: - 'https://www.tcgplayer.com/product/235142?page=1&utm_campaign=affiliate&utm_medium=api&utm_source=scryfall', - }, - rarity: 'uncommon', - related_uris: { - edhrec: 'https://edhrec.com/route/?cc=Duress', - tcgplayer_infinite_articles: - 'https://infinite.tcgplayer.com/search?contentMode=article&game=magic&partner=scryfall&q=Duress&utm_campaign=affiliate&utm_medium=api&utm_source=scryfall', - tcgplayer_infinite_decks: - 'https://infinite.tcgplayer.com/search?contentMode=deck&game=magic&partner=scryfall&q=Duress&utm_campaign=affiliate&utm_medium=api&utm_source=scryfall', - }, - released_at: '2021-04-23', - reprint: true, - reserved: false, - rulings_uri: - 'https://api.scryfall.com/cards/11e96127-83e2-42e2-9799-998b1408d444/rulings', - scryfall_set_uri: 'https://scryfall.com/sets/sta?utm_source=api', - scryfall_uri: - 'https://scryfall.com/card/sta/92/ja/%E5%BC%B7%E8%BF%AB?utm_source=api', - set: 'sta', - set_id: '5064a720-907f-4cb6-a425-766dc1dd7374', - set_name: 'Strixhaven Mystical Archive', - set_search_uri: - 'https://api.scryfall.com/cards/search?order=set&q=e%3Asta&unique=prints', - set_type: 'masterpiece', - set_uri: 'https://api.scryfall.com/sets/5064a720-907f-4cb6-a425-766dc1dd7374', - story_spotlight: false, - tcgplayer_etched_id: 235141, - tcgplayer_id: 235142, - textless: false, - type_line: 'Sorcery', - uri: 'https://api.scryfall.com/cards/11e96127-83e2-42e2-9799-998b1408d444', - variation: false, - /* eslint-enable camelcase */ -} as ScryDataItem; diff --git a/src/mocks/handlers.ts b/src/mocks/handlers.ts deleted file mode 100644 index 42ff3149..00000000 --- a/src/mocks/handlers.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { rest, type MockedRequest, type RestHandler } from 'msw'; - -import { NAMED } from '@/mocks/constants/named'; -import { SEARCH } from '@/mocks/constants/search'; -import { SET } from '@/mocks/constants/set'; -import { type ScryDataItem, type ScryDataList } from '@/tools/scryfall/types'; - -export const handlers: RestHandler[] = [ - rest.get( - 'https://api.scryfall.com/cards/named', - (request, response, context) => { - const card: ScryDataItem = { ...NAMED }; - const name = request.url.searchParams.get('exact'); - const set = request.url.searchParams.get('set'); - card.name = name || card.name; - card.set = set || card.set; - return response(context.json(card)); - }, - ), - - rest.get( - 'https://api.scryfall.com/cards/search', - (request, response, context) => { - const query = request.url.searchParams.get('q'); - const cards: ScryDataList = { ...SEARCH }; - if (query) { - const [, name] = query.match(/!"(.+)"/) || []; - if (cards.data[0]) { - cards.data[0].name = name || query; - } - } - return response(context.json(cards)); - }, - ), - - rest.get( - 'https://api.scryfall.com/cards/:set/:number', - (request, response, context) => { - const set = `${request.params.set}`; - const number = `${request.params.number}`; - const name = `${set.toUpperCase()}#${number}`; - const card: ScryDataItem = { ...SET, name }; - return response(context.json(card)); - }, - ), -]; diff --git a/src/mocks/server.ts b/src/mocks/server.ts deleted file mode 100644 index b6d6dd5a..00000000 --- a/src/mocks/server.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { setupServer } from 'msw/node'; - -import { handlers } from '@/mocks/handlers'; - -export const server = setupServer(...handlers); diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index e6b58a02..32cdd4cd 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -5,10 +5,6 @@ import Head from 'next/head'; import { ThemeProvider } from '@/theme/ThemeContext'; -if (process.env.SCRYFALL_MOCKS === '1') { - import('@/mocks/bootstrap'); -} - const Application = (props: AppProps): JSX.Element => { const { Component, pageProps } = props; return (