diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index e7559cc..0000000 --- a/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -# web javascript causes a lot of eslint warnings -assets/js diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 8d56f4f..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "env": { - "browser": true, - "node": true, - "commonjs": true, - "es6": true - }, - "globals": { - "document": true - }, - "parserOptions": { - "ecmaVersion": 2021 - }, - "extends": "eslint:recommended", - "rules": { - "no-case-declarations": "off", - "no-empty": "off", - "no-console": "off", - "linebreak-style": "off", - "prefer-const": "error", - "no-var": "error", - "one-var": [ - "error", - "never" - ], - "indent": [ - "error", - "tab", - { - "SwitchCase": 1 - } - ], - "quotes": [ - "error", - "single" - ], - "semi": [ - "error", - "always" - ] - } -} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..085af2b --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,23 @@ +name: Lint + +on: + pull_request: {} + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Install dependencies + run: npm ci + + - name: Lint + run: npm run lint diff --git a/blogposts/11-1-24.md b/blogposts/11-1-24.md new file mode 100644 index 0000000..7ba23ad --- /dev/null +++ b/blogposts/11-1-24.md @@ -0,0 +1,89 @@ +--- +title: "October Progress Update" +author: "Jon" +author_image: "https://www.github.com/jonbarrow.png" +date: "November 1, 2024" +caption: "Archiverse, new team members, new server architecture and more!" +cover_image: "/assets/images/blogposts/11-1-24.png" +--- + +Welcome back to another progress report. While it may seem like not a lot has been going on lately, we've been hard at work in private working on some exciting new updates to share! This blog post will serve as both an announcement for some upcoming features/additions, as well as a sneak-peak behind the scenes to see what sort of experiments we've been running! + +# Archiverse + +As many of you know, the original Miiverse service shut down late 2017. However before the service went dark for good, a team of dedicated archivists known as [Archive Team](https://wiki.archiveteam.org) managed to archive 17TB worth of posts, drawings, and images. This data was then published onto the [Internet Archive](https://archive.org). + +A group known as Archiverse was later established in 2018, providing the archived data both for modern audiences who may not have experienced Miiverse in its prime, and those feeling nostalgic who want to see themselves and what they were doing all those years ago, formally accessible at [archiverse.guide](https://archiverse.guide). In early 2024 the original maintainer left the project, leaving it in the hands of a new team now accessible at [archiverse.app](https://archiverse.app). + +We are happy to announce that we have come together with the new maintainers of Archiverse to merge our services! Archiverse is now an official Pretendo Network service, with the intent to have full (read-only) integrations within the on-console Miiverse apps and in games. This migration will take some time to complete, as we work towards moving many terabytes of data to our systems and finalizing the modifications needed to integrate everything, so stay tuned for a future blog post announcing the migration's completion! + +Archiverse can now be visited at [archiverse.pretendo.network](https://archiverse.pretendo.network)! + +***Note: Archiverse data will be read-only, and will not be able to be modified by any account system, PNID or otherwise. Functions like "Yeahs", comments, etc. will be disabled when using Archiverse. The data used by Archiverse was taken from the browser version of Miiverse, meaning it lacks some critical in-game data needed for some games which may be impossible to recover, as it was only accessible via the Miiverse in-game API. Archiverse support in games will vary on a game-by-game basis depending on what data can and cannot be recovered/reconstructed.*** + +# New Members + +With the aforementioned project merge with Archiverse, we'd like to welcome our two newest team members joining us along for the ride! Please welcome [SuperFX](https://kylewade.dev) and [Luna](https://github.com/masopuppy), the lead maintainer and designer of Archiverse respectively. Originally only helping out with the migration, we've now offered them official spots on our development team. Both are incredibly talented web developers/designers, so expect to see some exciting new features and improvements rolling out in the future. + +# New Licensing + +We encourage others to use our work in other 3rd party projects, such as [GoCentral](https://rb3e.rbenhanced.rocks/), custom "Rock Central" servers for Rock Band 3 on the Wii, PlayStation 3, and Xbox 360. To maintain openness, we typically license our work in ways that prevent privatization. Most of our work has been licensed under [AGPLv3](https://choosealicense.com/licenses/agpl-3.0), as it ensures "network use" (running software on a server) is treated as "distribution", which aligns with our focus on server-based projects. + +However, AGPLv3's strict requirements can be too restrictive, as it forces works which use the AGPLv3 licensed work (even as a library, or a non-derivative work) to also adopt AGPLv3 in its entirety, limiting compatibility with other, more permissive, licenses such as [Apache 2.0](https://choosealicense.com/licenses/apache-2.0). While this infectious nature has benefits, we recognize the need for more flexibility in certain cases. Thus, we will be reviewing some repositories when appropriate to see if less restrictive licenses could work better for specific projects. + +One project, our [`error-codes`](https://github.com/PretendoNetwork/error-codes) library for Wii U/3DS, [has already been re-licensed](https://github.com/PretendoNetwork/error-codes/pull/15) under [LGPLv3](https://choosealicense.com/licenses/lgpl-3.0), which offers similar protections to AGPLv3 but is less restrictive and avoids the full infection of AGPLv3. We will still use AGPLv3 for most projects however as other licenses lack the "network use is distribution" clause which makes it unsuitable for purely server-side software. + +# Enhanced Multiplayer with Relays + +We have begun some experiments of a new method of handling multiplayer sessions known as "relays". The networking library Nintendo used for Nintendo Network has support for relays, however they go unused officially and many games have the relay functionality stripped out to varying degrees. We have begun our own attempt at manually recreating the concept in order to boost security and stability in the future. + +***Note: Relays are highly experimental, and not widely tested. We have seen promising results during some initial private tests, however these tests were tiny in scale and nothing suggests these are ready for any sort of public use. The experiment MAY be scrapped if found to be inviable in the future. Relays are not deployed on any game server, beta or otherwise, at this time.*** + +Some background: All games on Nintendo Network which feature multiplayer are P2P ([peer-to-peer](https://en.wikipedia.org/wiki/Peer-to-peer)). Nintendo uses very little in terms of dedicated servers, opting to only use dedicated servers for features such as object storage and leaderboards. This means that rather than your console talking to a server the entire time, your console instead talks directly to other consoles in a [mesh](https://en.wikipedia.org/wiki/Mesh_networking). Our servers act as the middlemen, managing individual client connections and grouping them together in what's known as a "gathering", also called a "session". Once a gathering is created on the server, users may join it. The server then tells all the relevant clients in the session who each of the other players are (either directly on join or through live notifications after already joining), and then your consoles begin talking to each other after establishing connections following [NAT traversal](https://en.wikipedia.org/wiki/Hole_punching_(networking)). + +This architecture has several pros, including: + +1. Less strain on the servers +2. Potentially lower latency for clients geographically closer to each other +3. P2P networks tend to be very good at self-adjusting to account for dropped/new connections + +However it does come with some notable cons, such as: + +1. Connection issues due to incompatible networks, resulting in failed NAT traversal (very common cause of `118-XXXX` errors) +2. Potential security concerns over direct visibility of other clients IP addresses +3. Lack of server involvement makes cheating/hacking much easier +4. Potentially *higher* latency for clients geographically *farther* from each other or between those with slower home internet speeds + +Relays are designed to try and combat some of these cons. Rather than the matchmaking server telling each client the addresses of other players, the server would instead provide the address for a running relay server. Clients then connect to these relay servers as if they were other clients in the mesh. The server then accepts all incoming P2P packets and routes them to the other players also connected to the relay as needed. These relay servers effectively turn P2P games into client->server games. + +Routing this session traffic through our own relay servers could fix many of the cons associated with P2P networking, including: + +1. Removing the issue of incompatible networks, as now you are only talking to our server and not directly to another user +2. Effectively masking your IP address from other users, as now the only addresses being used would be ours +3. Logging of gameplay events to look for anomalies, and even logging entire sessions for later review in the style of [Hypixel Atlas "Replays"](https://support.hypixel.net/hc/en-us/articles/4411166834834-About-the-Hypixel-Replay-System-and-Atlas) to more easily track and report cheaters +4. More efficient player kicks on a per-session basis + +Early tests in Splatoon showed promising results, being able to complete several test matches while running through relays with no direct connections between users. However this system is still in it's infancy and many technical and design quirks have not been ironed out, including managing many relays at scale, increased cost estimations due to increased data usage on our servers, etc. We do not have an ETA for when this system will arrive or in what shape/form it would take. + +# New Games and Updated Matchmaking + +At the moment we are prioritizing improving our internal tooling, underlying networking libraries, game server protocol implementations, and more rather than prioritizing the total number of games we output. However we may decide to release new games if it relates to those efforts, such as games which use features which have yet to be tested, or simple games used to test large-scale changes just as reworks to common protocols. + +As of today we are releasing 2 new games into beta testing: + +- Monster Hunter 4 Ultimate +- Super Street Fighter IV + +These games had their servers created using some experimental internal tooling we are developing to help streamline to creation of simple game servers. In these cases, the backends for these servers were entirely generated automatically! These servers also serve as a test for the [large-scale matchmaking rework](https://github.com/PretendoNetwork/nex-protocols-common-go/pull/35) that [DaniElectra](https://github.com/DaniElectra) has been working on the past few months! + +These matchmaking reworks bring not only better matchmaking logic in general, but also more stable session tracking and creation. These changes give us more control over match management and can be used for more accurate player tracking/moderation, even in cases where players may try to anonymize themselves or mask their user information in local connections. + +Pending the results of the matchmaking tests, existing games may soon be getting the same matchmaking rework to try and improve the quality of matchmaking. Similarly, smaller/simple games may be released more often pending the results of our new internal tooling. + +Additionally, Minecraft: Wii U Edition has been upgraded with this matchmaking rework, fixing the bug where only 2 players can connect at a time. These changes are available to the public for more widespread testing. + +Finally, we have recently documented all the official names for `118-XXXX` error codes. Using this knowledge, we have begun to identify some potential causes for several of these errors. These are now also being looked into, in an effort to improve our matchmaking logic and reduce the number of incompatible clients being put in the same sessions. For details, see the [official feature enhancement request on GitHub](https://github.com/PretendoNetwork/nex-protocols-common-go/issues/43). + +# Conclusion + +While this month did not see much in the way of new public features, we've been hard at work on many internal affairs. We hope you enjoyed our first more "technical"/"behind the scenes" blog post, and we hope to add more updates like these to future blog posts, mixed in with actual content updates! diff --git a/blogposts/5-19-24.md b/blogposts/5-19-24.md new file mode 100644 index 0000000..c5e5706 --- /dev/null +++ b/blogposts/5-19-24.md @@ -0,0 +1,30 @@ +--- +title: "Exciting updates for the 3DS" +author: "Jon" +author_image: "https://www.github.com/jonbarrow.png" +date: "May 19, 2024" +caption: "StreetPass Relay and 3DS notifications" +cover_image: "/assets/images/blogposts/5-19-24.png" +--- + +Today we are releasing 2 big features for the 3DS: 3DS system notifications and StreetPass Relay! + +***(Do note that both features are currently in active development, and may not always function properly. A common solution is to remove and reinsert your system's battery, in order to load the latest policylist, however do note this will have side effects in time-based games! It is common for some users to have one, or both, features not function. These issues are being looked in to)*** + +# System Notifications +We can now send your 3DS systems notifications using the built-in notifications app! This allows us to deliver news updates right to your console, without needing to be in our Discord server, forum, or even following our social media. You can get all the latest news about the service, right from the console you're using it on! + +***Not all announcements may make it to the system notifications however, namely very long announcements or those which require rich media like links, images, videos, and more.*** + +![screenshot of the 3DS notifications app showing the release of SPR](/assets/images/blogposts/spr.png) + +# StreetPass Relay +StreetPass Relay was a feature built into the 3DS which allows users to gain "StreetPass'" from other users, even without physically being near them at the time. This worked by using a "StreetPass Relay Point", a wireless access point used by Nintendo Zone to store StreetPass data. When connecting to one of these relays, your console would upload your own StreetPass data as well as download the data of others from that relay. + +With our implementation, StreetPass Relay now works ***GLOBALLY***, removing the need to be at a physical access point! You can now passively gain passes with other Pretendo users simply by being online. There are 2 things note, however: + +1. ***You must be using the latest release of Nimbus for StreetPass Relay to function. Previous versions do not have the correct URL patches for StreetPass Relay. You can download the latest release here https://github.com/PretendoNetwork/Nimbus/releases/latest*** +2. ***Due to the [questionable quality](https://twitter.com/MrNbaYoh/status/1783912413068222477) of the StreetPass parsers inside games and the fact that StreetPass Relay happens automatically, you can ONLY gain passes with people who you are friends with on the 3DS friends server. You will NOT be able to gain passes from any other users through StreetPass Relay.*** + +![screenshot of the 3DS notifications app showing the notification list](/assets/images/blogposts/notification-list.png) +![screenshot of the 3DS notifications app showing the SPR notification body](/assets/images/blogposts/notification-body.png) diff --git a/blogposts/6-29-24.md b/blogposts/6-29-24.md new file mode 100644 index 0000000..16ab6a5 --- /dev/null +++ b/blogposts/6-29-24.md @@ -0,0 +1,98 @@ +--- +title: "June Progress Update" +author: "Jon" +author_image: "https://www.github.com/jonbarrow.png" +date: "June 29, 2024" +caption: "Updates on 6 games, including beta testing for Smash, Puyo Puyo Tetris, and more!" +cover_image: "/assets/images/blogposts/june-29-2024/preview.png" +--- + +*Credits for preview image:* + +- Toon Link - https://www.smashbros.com/wiiu-3ds/us/characters/toon_link.html + +As June comes to a close we'd like to take this time to welcome some new team members and give some updates on what work we've been doing, including beta testing for some brand new games! + +# New Teammates + +To kick things off I'd like to welcome 2 of our latest teammates [MatthewL246](https://github.com/MatthewL246) and [wolfendale](https://github.com/wolfendale)! Together they have been doing some fantastic work, some of which is still yet to be seen. + +[MatthewL246](https://github.com/MatthewL246) has been hard at work introducing Docker configurations to our servers, as well as working with [SuperMarioDaBom](https://github.com/SuperMarioDaBom) and 2 non-Pretendo developers [Jelle van Snik (mrjvs)](https://mrjvs.com) and [William Oldham (BinaryOverload)](https://williamoldham.co.uk), to prepare our services for their eventual move to our new infrastructure! While much of this work has not been deployed yet, it is vital for Pretendo moving forward as we transition to a containerized deployment on real hardware. These changes will make managing and deploying servers much simpler in the future. + +[wolfendale](https://github.com/wolfendale) has been working tirelessly with [DaniElectra](https://github.com/danielectra) and myself on [`nex-go`](https://github.com/PretendoNetwork/nex-go), and some related services. This library is the ***heart*** of our game servers, implementing the lower level transport protocols and tools/features needed to build *all* of our game servers, and is one of the more difficult areas to work in. The work done on this library is priceless, and will have positive effects on all games across the board. + +# General Server Updates + +Before talking about the new games joining our beta testing, we'd like to touch on some more general updates which apply to all games. As mentioned, [wolfendale](https://github.com/wolfendale) has been working almost exclusively on [`nex-go`](https://github.com/PretendoNetwork/nex-go) since joining the team. He, along with [DaniElectra](https://github.com/danielectra) and myself, has been doing fantastic work on debugging some long-standing issues, providing bug fixes and optimizations, introducing new unit testing, and implementing some key missing features. This work not only drastically improves stability, but brings our implementation closer to the original with more accurate emulation. + +He has also been tackling the task of [optimizing our database queries](https://github.com/PretendoNetwork/friends/pull/22) on the friends server. The friends server is one of the most important services of Nintendo Network. Without a stable connection to the friends server, the console will not attempt to connect to any individual game server, and is the cause of the common [X01-0502](https://forum.pretendo.network/t/error-code-101-0502-no-solution/1426/5?u=pn_jon) error. Optimizations and bug fixes like these to the friends server will ensure connections to game servers also remain stable. + +While most of these updates have not yet been deployed yet (a select few have been hot-patched into existing deployments), and some have not yet been merged at all, the changes that have been made recently should show very positive results once deployed (including tackling the common [X01-0502](https://forum.pretendo.network/t/error-code-101-0502-no-solution/1426/5?u=pn_jon) error). We hope to get all of these new updates out relatively soon, so that all games may benefit from the added stability. + +![Screenshot of shutter on Discord saying "@ashquarky @Jon @DaniElectra ok so! i can confirm 2 things: 1: Splatoon is now working on nex v2 (i was having @ashquarky [PN_quarky] change the wrong thing lol) 2: Splatoon did not work until I used the master version of nex-go, this means that the new changes to nex-go likely help a lot with stability 🎉"](/assets/images/blogposts/june-29-2024/shutter-nex-go.png) + +[DaniElectra](https://github.com/danielectra) has also been spending quite some time [reworking our matchmaking logic from scratch](https://github.com/PretendoNetwork/nex-protocols-common-go/pull/35). These updates should bring more stability when it comes to matchmaking, as well as better tooling for developers to work on new games. + +Similarly to [Dani's](https://github.com/danielectra) matchmaking rework, I have been [reworking our entire type system from scratch](https://github.com/PretendoNetwork/nex-go/pull/56). These changes should provide a much better development experience for us moving forward, streamlining many previously difficult to do tasks such as data storage and storing type data in databases. This should result in faster, and more reliable, server development moving forward. + +# New Games and Updates + +Now into what most of you came here for; new games and updates in beta testing! This blog post will cover a whopping ***ten*** games. Some games are receiving general updates, while others are joining us for the first time. We will also be aiming to release some smaller, simpler, games on a more frequent basis. Some games share much of their internals with existing games, making it trivial to get the basics up and running. We do not have an official release schedule, but we expect to release more simple games more often. + +*Most of the games mentioned here are only available for beta testers at the time of writing.* + +*All games begin their life in beta testing, only available to testers. Once more features have been added, and pending the evaluation of each game's stability, they will each become available to the general public on a game-by-game basis. Until then, consider [supporting the project](https://pretendo.network/account/upgrade) to gain early beta access* + +***BETA SERVERS ARE NOT CONSIDERED STABLE, AND OFTEN LACK MANY FEATURES. USE AT YOUR OWN RISK*** + +## 🥄 + +Thanks to work done by [wolfendale](https://github.com/wolfendale), [DaniElectra](https://github.com/danielectra) and myself on [`nex-go`](https://github.com/PretendoNetwork/nex-go), as well as work down by [Ash](https://github.com/ashquarky) and [shutterbug](https://github.com/shutterbug2000) on our [Splatoon netcode specifically](https://github.com/PretendoNetwork/splatoon/pull/2), Splatoon has ***officially*** begun its migration to our newest library versions. These changes have, so far, resulted in much more stable and reliable matchmaking across the board. These changes are available ***TODAY***, for ***everyone***! + +If you experience any issues with Splatoon still, feel free to reach out for support on our [support forum](https://forum.pretendo.network/c/support/6) and file bug reports on the [Splatoon GitHub repository](https://github.com/PretendoNetwork/splatoon). + +![Screenshot of a pending Splatoon lobby](/assets/images/blogposts/june-29-2024/splatoon-match.png) + +## A New Title Appears + +Thanks to work done by [SuperMarioDaBom](https://github.com/SuperMarioDaBom), **Super Smash Bros. 4 Wii U** is now ***officially*** available for beta testers! The 3DS version is not currently supported, though the controller app should work. Not everything is implemented, however matchmaking is working as expected. Spectating and sharing do not work, nor has Miiverse integration been tested. Attempting to share anything in game may cause the game to stop responding due to unimplemented methods. + +![Screenshot of Pikachu and Toon Link fighting in Smash 4 on the Wii U](/assets/images/blogposts/june-29-2024/smash4-wiiu-match.png) + +## Gotta Catch 'em All! + +Thanks to work done by [shutterbug](https://github.com/shutterbug2000), **Pokémon Generation 6 (X & Y, Omega Ruby & Alpha Sapphire)** is now ***officially*** available for beta testers! Not all features have been implemented. While still early in development, and missing some recent stability fixes, wonder trades have been fully implemented, and PSS is in active development! + +
+ +| | | +| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | +| ![Screenshot of Pokemon finding a trade](/assets/images/blogposts/june-29-2024/pokemon-partner-found.png) | ![Screenshot of Pokemon finishing a trade](/assets/images/blogposts/june-29-2024/pokemon-trade-complete.png) | + +
+ +## Puyo! + +Thanks to work done by [Ash](https://github.com/ashquarky), **Puyo Puyo Tetris** is now being worked on. Matchmaking and rankings are both working as expected. This game is not yet available for beta testing, as it relies on unreleased library changes, however it will be released for beta testers soon! + +| | | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- | +| ![Screenshot of Puyo Puyo Tetris in a match](/assets/images/blogposts/june-29-2024/puyo-puyo-wiiu-match.png) | ![Screenshot of Puyo Puyo Tetris rankings](/assets/images/blogposts/june-29-2024/puyo-puyo-wiiu-rankings.png) | + +## An Apple a Day + +Thanks to work done by [shutterbug](https://github.com/shutterbug2000), *both* **Dr. Luigi (Wii U) and Dr. Mario: Miracle Cure (3DS)** are now ***officially*** available for beta testers! Both games feature fully implemented matchmaking and rankings. + +| | | +| ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | +| Screenshot of Dr. Luigi in a match | ![Screenshot of Dr. Mario in a match](/assets/images/blogposts/june-29-2024/dr-mario-3ds-match.png) | + +## Minecraft + +Minecraft has been available for beta testers for some time now, and is now receiving some new updates! Thanks to work done by [Ash](https://github.com/ashquarky), Minecraft is being updated to the latest version of our libraries which should bring with it more stability and feature support! + +![Screenshot of Minecraft in a minigame lobby](/assets/images/blogposts/june-29-2024/minecraft-wiiu-minigame.png) + +# Conclusion + +![Screenshot of ACNL saying "Hello there, Mayor Pretendo" teasing ACNL being worked on](/assets/images/blogposts/june-29-2024/mayor-pretendo.png) diff --git a/blogposts/8-2-24.md b/blogposts/8-2-24.md new file mode 100644 index 0000000..ba145f1 --- /dev/null +++ b/blogposts/8-2-24.md @@ -0,0 +1,111 @@ +--- +title: "July Progress Update" +author: "Jon" +author_image: "https://www.github.com/jonbarrow.png" +date: "August 2, 2024" +caption: "News on AC:NL, general server improvements, Discord bot updates, and more!" +cover_image: "/assets/images/blogposts/august-2-2024/preview.png" +--- + +While July didn't see as many new games join our roster, we were all still hard at work. With a focus on enhancing performance and user experience, July brought crucial updates to our services. This blog post will cover many updates to our servers, patches, and go over some future plans we have for popular games like Animal Crossing: New Leaf! + +# General Server Updates + +As mentioned in [our last blog post](https://pretendo.network/blog/6-29-24), we had many pending server updates yet to be merged/released. While not all of them have been merged/released yet still, several have been! Our core game server library [`nex-go`](https://github.com/PretendoNetwork/nex-go) continued to get love last month, bringing it several new performance boosts. + +Together with [wolfendale](https://github.com/wolfendale), we spent much of July reverse engineering several core systems, including the entire packet retransmission system. Before now, this was a very basic, inaccurate, implementation of how [PRUDP](https://developer.pretendo.network/overview/prudp) handles dropped packets. With our implementation now more accurate, both clients and servers should be seeing substantially less dropped packets, resulting in better connection stability. + +Additionally some changes were made internally to address issues such as [goroutine](https://go.dev/tour/concurrency/1) overuse, poorly implemented hashing algorithms, and issues regarding the number of allocations each server performs. These issues all lead to degraded server performance and higher system resource usage. Addressing these issues has substantially dropped the libraries overall footprint (taking the average amount of memory used per server from \~300mb at the low end, to just barely \~50mb!) and increased general performance. + +For a full breakdown of last month's changes to `nex-go`, [see here](https://github.com/PretendoNetwork/nex-go/commits/master/?since=2024-07-01&until=2024-08-01). + +# Better Infrastructure + +As mentioned in [our last blog post](https://pretendo.network/blog/6-29-24), we have been working closely with 2 non-Pretendo developers [Jelle van Snik (mrjvs)](https://mrjvs.com) and [William Oldham (BinaryOverload)](https://williamoldham.co.uk). These are personal friends working in these fields professionally, who have graciously helped with restructuring our internal infrastructure. With their help, we have been making even more strides towards full containerization through [Docker](https://docker.com) and a deployment strategy built on top of [Kubernetes](https://kubernetes.io). + +Over the past month they have been making great strides towards this goal, completely redesigning our deployment strategy from the ground up. We have also begun releasing pre-built Docker containers for our servers to aid in this, which can be found on our [GitHub organization](https://github.com/orgs/PretendoNetwork/packages?visibility=public). + +Once complete, these changes should help dramatically increase our productivity by streamlining many of our more tedious workflows, leading to higher server output in the long run! They also should help increase overall stability through failsafes and rollovers in the event of a server failure! + +# New Games and Updates + +Last month saw less new games join our roster than June (hard to beat 10 new games!), but that doesn't mean games were not worked on. Last month saw the addition of two new games, as well as several existing games/services receiving new updates/features! + +***All games begin their life in beta testing, only available to testers. Once more features have been added, and pending the evaluation of each game's stability, they will each become available to the general public on a game-by-game basis. Until then, consider [supporting the project](https://pretendo.network/account/upgrade) to gain early beta access.*** + +***BETA SERVERS ARE NOT CONSIDERED STABLE, AND OFTEN LACK MANY FEATURES. USE AT YOUR OWN RISK*** + +## Smash 3DS + +Thanks to work done by [SuperMarioDaBom](https://github.com/SuperMarioDaBom), **Super Smash Bros. 4 3DS** is now ***officially*** available for beta testers! Just like the Wii U version, only matchmaking is implemented. All other features are still being worked on. Unlike the Wii U version, trying to use an unimplemented feature will not hang the game, however it is still not recommended to try anything besides matchmaking. + +![Screenshot of the Smash Bros. 3DS multiplayer menu](/assets/images/blogposts/august-2-2024/smash-3ds.png) + +## Game & WARIO + +Thanks to work done by [Jemma](https://github.com/CaramelKat) and [Trace](https://github.com/TraceEntertains), **Game & WARIO** is now ***officially*** available on Miiverse for beta testers! Most features have been tested, however as a beta title there may still be issues. + +
+ +| | | +| ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| ![Screenshot of the Game & WARIO online menu](/assets/images/blogposts/august-2-2024/game-and-wario-1.png) | ![Screenshot of Game & WARIO drawing Santa](/assets/images/blogposts/august-2-2024/game-and-wario-2.png) | + +
+ +## Minecraft + +Thanks to work done by [Ash](https://github.com/ashquarky), **Minecraft: Wii U Edition** is now ***officially*** available to the public! You can now play this LCE classic with friends again, in private worlds or in minigames. + +Due to safety concerns regarding the games lack of official anti-cheat, *public minigames* are currently disabled. For the time being, use the `Friends` tab on the far right to access games. We are interested in opening the game up fully in the future, so keep an eye out for more future updates! + +![Screenshot of the Minecraft: Wii U Edition online menu showing that only private matches are available](/assets/images/blogposts/august-2-2024/minecraft.png) + +## Inkay + +Thanks to work done by [Ash](https://github.com/ashquarky), [Inkay](https://github.com/PretendoNetwork/Inkay) has received a massive update last month! While the changes may be small, they have a huge impact; the additional patches provided by [Nimble](https://github.com/PretendoNetwork/Nimble) are being phased out! For those unaware, our Wii U patches come in a set: + +- [Inkay](https://github.com/PretendoNetwork/Inkay) - The main Pretendo Network patches connecting your Wii U to our servers. Standard Aroma plugin +- [Nimble](https://github.com/PretendoNetwork/Nimble) - Supplementary patches for patching the BOSS (SpotPass) policylist. Aroma setup module + +Historically [Nimble](https://github.com/PretendoNetwork/Nimble) has been required for games which make use of SpotPass features, such as Splatoon. Before the console enables SpotPass, it downloads what is called the "policylist". This tells the console which background tasks to enable and what their priorities are. After the Nintendo Network shutdown, Nintendo has changed the official policylist to disable all SpotPass features. The Wii U downloads this policylist extremely early in the boot process, earlier than standard Aroma plugins have access to. Setup modules *are* loaded early enough, however, thus [Nimble](https://github.com/PretendoNetwork/Nimble) was born. + +With the latest changes made to [Inkay](https://github.com/PretendoNetwork/Inkay), after the plugin is loaded it forces the console to refresh the policylist, which triggers a redownload using our patched URLs. This essentially removes the need for [Nimble](https://github.com/PretendoNetwork/Nimble) entirely, as well as dramatically increases SpotPass reliability in certain games (such as 104-2210 in Splatoon). To download the latest release, see the [Inkay releases page](https://github.com/PretendoNetwork/Inkay/releases/latest)! + +Additionally thanks to collaborations with [Maschell](https://github.com/Maschell) (the creator of the Aroma CFW), [Inkay](https://github.com/PretendoNetwork/Inkay) is now also available through https://aroma.foryour.cafe! Updates to [Inkay](https://github.com/PretendoNetwork/Inkay) can now be managed through the Aroma updater on-console! + +## Miiverse + +Thanks to work done by [Jemma](https://github.com/CaramelKat), Miiverse in general has received bug fixes and performance improvements last month. The biggest change was improved data/asset caching, which has dramatically improved the load times on Juxtaposition! These changes affect both the Wii U and 3DS versions, as well as the browser version. + + + +Additionally a long standing issue of friends not properly being handled in WaraWara Plaza has also been fixed! + +![Screenshot of WaraWara Plaza showing the Miis of friends being positioned correctly](/assets/images/blogposts/august-2-2024/wwp.png) + +## Animal Crossing: New Leaf + +As teased in [our last blog post](https://pretendo.network/blog/6-29-24), Animal Crossing: New Leaf has ***officially*** entered development! Features such as Tortimer Island are showing signs of life as this highly requested game starts to go online! + +
+ +| | | +| --------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| ![Screenshot of user "Pretendo" arriving in town "Rin" in Animal Crossing: New Leaf](/assets/images/blogposts/august-2-2024/acnl-1.png) | ![Screenshot of two players matched together in Tortimer Island in Animal Crossing: New Leaf](/assets/images/blogposts/august-2-2024/acnl-2.png) | + +
+ +Additionally, we have begun the process of processing the data from our Dream Suite archive. Prior to the Nintendo Network shutdown, our team spent a considerable amount of time archiving data from many games, including all available towns from Dream Suite. We collected over ***200GB*** of data from Dream Suite and a total of ***239,105*** towns! + +We plan to eventually publish the raw data on the [Internet Archive](https://archive.org/), as well as on our own website where you can view/download the pre-processed data. Currently the amount of data displayed is limited, and the website is still in development, so it's not yet ready for release. However we plan to look into extracting more data from the towns themselves, and possibly making them available as town backups that can be directly imported into save files! + +***Eventually we will process and release all the data (around 1.6TB) for all games/services we collected data for. Animal Crossing: New Leaf is the first of these to start it's processing.*** + +![Screenshot of the work in progress Animal Crossing: New Leaf archive website. Website contains a table of towns with information on their data ID, version, name, uploader name, creation and updated dates, the time the last person visited, the total number of visits, and the country of origin](/assets/images/blogposts/august-2-2024/acnl-site.png) + +# Conclusion + +Thank you everyone for your continued support of the project! We know this progress update may seem small, but we only go over the largest changes! Most of our work consists of small bug fixes, library development, and lots and lots of research time. We hope you all stay tuned for future updates! diff --git a/docs/common/error-page-template.md b/docs/common/error-page-template.md index ffeaae4..7928162 100644 --- a/docs/common/error-page-template.md +++ b/docs/common/error-page-template.md @@ -22,4 +22,4 @@ If you have not yet connected to Pretendo, please follow the instructions [here](/docs/install) to get started. -If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://invite.gg/pretendo). +If you are still unable to connect, please request to speak to a moderator in the [Discord server](https://discord.gg/pretendo). diff --git a/docs/en_US/install/3ds.md b/docs/en_US/install/3ds.md index 01e9e21..c1cf78c 100644 --- a/docs/en_US/install/3ds.md +++ b/docs/en_US/install/3ds.md @@ -34,7 +34,7 @@ Once inserted, download the latest [Nimbus release](https://github.com/PretendoN Nimbus is available as both a 3DSX app and an installable CIA. The releases page offers downloads for both. Select the version you would like to use, or select the `combined.[version].zip` archive to use both. - +Screenshot of a GitHub release page with the file combined.[version].zip highlighted Extract the contents of the zip archive to the root of your SD card. If you are asked to merge or overwrite files, accept the changes. diff --git a/docs/en_US/install/cemu.md b/docs/en_US/install/cemu.md index f00204e..dd0c8d2 100644 --- a/docs/en_US/install/cemu.md +++ b/docs/en_US/install/cemu.md @@ -20,7 +20,7 @@ Ensure you have followed [Cemu's guide](https://cemu.cfw.guide/online-play.html) ## Connecting to Pretendo Once you have Cemu setup for online play navigate to `Options > General settings > Account`. You should now see a section titled `Network Service`. Select your PNID from the `Active account` menu and select the `Pretendo` Network Service option. Cemu should now be connected to Pretendo's servers -
+
Screenshot of Cemu's Account Settings with different Network Service Options.
## Miiverse Cemu has limited to no Miiverse support as of now. Some in game features may work, but this is not guaranteed. The Miiverse applet does not work in official builds. diff --git a/docs/en_US/install/wiiu.md b/docs/en_US/install/wiiu.md index 09c9204..6813143 100644 --- a/docs/en_US/install/wiiu.md +++ b/docs/en_US/install/wiiu.md @@ -1,13 +1,64 @@ # Wii U -You can connect your Wii U to Pretendo using one of 2 methods. Each method has benefits and drawbacks, which will be described in their respective sections. +You can connect your Wii U to Pretendo using one of 2 methods. Inkay is recommended unless you have some reason to avoid modding your console (e.g. you live in Japan where is is legally gray). +- [Inkay (homebrew - recommended)](#inkay) - [SSSL (hackless)](#sssl) -- [Inkay (homebrew)](#inkay) -Once you have selected a connection method and set up your Wii U, see ["PNID Setup"](#pnid-setup). +# Inkay +**Pros:** +- All services supported +- Contains additional features and patches +- Works regardless of ISP +- Easy toggle on and off -If you have save data from a Nintendo Network ID you would like to move to your Pretendo Network ID, follow [this](#transferring-save-data-to-your-pretendo-network-account) section. +**Cons:** +- Requires homebrew + +## Installation +
+ ℹ️ This part of the guide assumes that you have a Homebrewed System using Aroma. + If you don't yet, you can follow this guide to set up homebrew on your Wii U. +
+ +Locate the `Aroma Updater` icon on your Wii U Menu and open it. + +Screenshot of Wii U Menu with the Aroma Updater icon highlighted + +On the welcome screen, press A to check for updates. + +Screenshot of white text. 'Welcome to the Aroma updater' - 'A - Check for updates' + +Wait for the update check to complete. Your screen may look slightly different to this image if newer updates have been released when you're reading this - that's okay. + +Aroma updater application displaying a list of payloads. + +Press R to move to Page 2. + +Aroma updater application displaying a list of additional plugins. + +Use the D-Pad to move the cursor down to Inkay, then press A to select it. + +Aroma updater application displaying a list of additional plugins with Inkay highlighted and selected. + +Press + to begin the installation, then press A to confirm the changes. You may have additional updates listed in addition to Inkay - that's okay. + +A confirmation dialog. Inkay will be updated or changed. + +
+ ℹ️ You may get a message stating "This version of this file is unknown!" in relation to Inkay - this means you have an old or beta version installed. + You should press A to confirm replacing it with the correct version. +
+ +Wait for the installation to complete, then press A to restart your console. + +A confirmation dialog. The console will now restart. + +Once the console restarts, you'll see a notification in the top-left informing you that Pretendo will be used. The notification disappears after a few moments. + +The Wii U user selection screen, with 'Using Pretendo Network' overlaid in the top-left + +Inkay is now installed and working. You can proceed to [PNID Setup](#pnid-setup) to create an account. # SSSL **Pros:** @@ -17,83 +68,69 @@ If you have save data from a Nintendo Network ID you would like to move to your **Cons:** - Only a subset of services are supported - Lacks additional features and patches -- May not function under certain ISP related conditions (self-hosted DNS tool is in development) -- Requires changing network settings to disconnect +- Does not work on some ISPs +- Hard to switch on or off SSSL is a (limited) hackless method of accessing most services by exploiting a bug in the Wii U's SSL module. All Nintendo Network games produced by Nintendo are supported by SSSL, as are the ***in-game*** Miiverse features. The main Miiverse app, in-game ***posting*** app, and any game which uses its own SSL stack (YouTube, WATCH_DOGS, etc.), are ***NOT*** supported by this method, as they are unaffected by the SSL exploit. -To connect using SSSL, open `System Settings > Internet > Connect to the Internet`. Open the settings for your network connection and open `DNS`. Select `Don't Auto-obtain`. Enter `88.198.140.154` as the `Primary DNS`. Enter another public DNS server address as the `Secondary DNS`, such as `8.8.8.8` (Google Public DNS) or `1.1.1.1` (Cloudflare-DNS). You should now be able to setup and login to your Pretendo Network ID as normal. - -To disconnect from Pretendo Network either remove the `Primary DNS` address or change back to `Auto-obtain`. - -# Inkay -**Pros:** -- All services supported -- Contains additional features and patches -- No ISP related issues -- Easy toggle on and off - -**Cons:** -- Requires homebrew -- Requires several steps to setup - +## Installation
- ℹ️ This part of the guide assumes that you have a Homebrewed System using Aroma. - You can follow this guide on how to homebrew your system first, then install - Aroma using this guide. + ℹ️ System Settings, and therefore SSSL, requires a Wii U GamePad to use on unmodified systems.
-The stable build is recommended for most users, however beta testers and others may be interested in the bleeding edge build. +Locate the `System Settings` icon on your Wii U Menu and open it. -## Stable -The stable builds have been widely tested to ensure everything works as intended. Navigate to [Inkay's latest release](https://github.com/PretendoNetwork/Inkay/releases/latest) on GitHub and download the `Inkay-pretendo.wps` file from the latest release. +The Wii U Menu, with the System Settings icon highlighted - +Open the Internet category. -## Bleeding Edge -Bleeding edge builds have not been widely tested, and do not guarantee any stability. Download the latest build from nightly. Extract `inkay.zip`. +The System Settings app, with the Internet category highlighted - +Select `Connect to the Internet`. -## Nimble -Nimble is an Aroma setup module that patches the request for the system `PolicyList`. This is used to enable background tasks for features such as Wara Wara Plaza. This is separate from the main Inkay patches as the `PolicyList` is downloaded earlier in the system boot process than Inkay has control over. +The System Settings app, with the Connect to the Internet button highlighted -Navigate to [the latest release](https://github.com/PretendoNetwork/Nimble/releases/latest) on GitHub and download the `30_nimble.rpx` file. +Select `Connection List` in the top-right. - +The Internet Connection Setup panel. In the top-right is a Connection List button (X) -## Installation -Place the downloaded `Inkay-pretendo.wps` file on your SD card at `sd:/wiiu/environments/aroma/plugins`. It's normal for other Aroma plugins to be in this folder too. +Locate the connection with a "Wii U" logo. This is the one your system will use by default. Press A to edit it. - +A list of internet connections. 'Wired Connection' is marked with a Wii U and Wii logo, and is highlighted. -Place the downloaded `30_nimble.rpx` file on your SD card at `sd:/wiiu/environments/aroma/modules/setup`. It's normal for other Aroma setup modules to be in this folder too. +Select `Change Settings`. - -Place your SD card back into your console and boot like normal. You should see a notification of your connection: +A list of options. 'Change Settings' is highlighted. - +Navigate to the right and down to the `DNS` button, and press A to edit. -You are now connected to Pretendo Network. +The second page of the Wii U connection editor. DNS is highlighted. -Press the button combo `L + Down + SELECT` on the Wii U GamePad to open the Aroma plugin menu. +Select `Do not auto-obtain`. We will provide our own DNS for SSSL to work. - +Two options for 'Automatically obtain DNS?' 'Do not auto-obtain' is highlighted. -Choose the plugin 'Inkay', then click A on 'BOSS settings' inside of Inkay, then click A on 'Unregister Wara Wara Plaza BOSS tasks' after that restart your console fully. +This brings up the DNS input. We will change both the Primary and Secondary DNS settings. -## Disconnecting -Press `L + Down + SELECT` on the Wii U GamePad to open the Aroma plugin menu. +Two input fields for Primary and Secondary DNS. - +For the Primary DNS, enter `88.198.140.154`. This is the SSSL server. -Locate and select 'Inkay', then choose 'Patching'. Now, set 'Connect to the Pretendo Network' to **false**. +'Enter the primary DNS' field, with 88.198.140.154 - the SSSL server - input. - +For the Secondary DNS, enter `9.9.9.9` (or another public DNS of your choice). This will serve as a fallback if Pretendo's SSSL server should go offline, allowing your console to still access the Internet. If Pretendo is offline and the fallback is used, however, the console will access Nintendo Network rather than Pretendo Network. If this is undesirable to you, leave this field blank. -Press `B` twice, followed by the `HOME` button. The console will reboot with Pretendo Network patches disabled, as confirmed by the 'Using Nintendo Network' message. +'Enter the secondary DNS' field, with 9.9.9.9 - a public DNS server - input. -To return to Pretendo Network, repeat the process ensuring 'Connect to the Pretendo Network' is set to **true**. +Review the final settings and ensure you typed them correctly. The Wii U will add leading zeroes to each number - this is okay. If they are correct, press Confirm. + + + +Press B to save the connection. You may perform a connection test and set the connection as default. Then, press B until System Settings exits. + +SSSL is now installed and working. You can proceed to [PNID Setup](#pnid-setup) to create an account. + +To disconnect from Pretendo Network (e.g. to access the Nintendo eShop) repeat this process, but select `Auto-obtain` for the DNS. # PNID Setup After installing Pretendo, you must register a Pretendo Network ID (PNID). There is currently two ways of creating a PNID: Creating an account with the website and linking it, or creating it on your Wii U. @@ -111,16 +148,67 @@ You will want to register an account from [here](/account) and click `Don't have Account settings cannot be modified at this time. Feature updates to the website have been paused as we migrate the codebase, and the account settings app on the Wii U requires additional patches. - +Screenshot of a web form to register an account Once your account is registered, link it to your console as you would a Nintendo Network ID. +Your PNID is now set up and ready to use. You may continue reading to learn about optional extras, like Inkay's features and transferring save data, or you can stop here. + ### Wii U Create the Pretendo Network ID as you would a Nintendo Network ID. +# Using Inkay +If you're using Inkay rather than SSSL, there are some additional features you may find helpful. + +
+Using Nintendo Network +You might need to switch back to Nintendo Network to access the Nintendo eShop or other services. + +Press `L + Down + SELECT` on the Wii U GamePad to open the Aroma plugin menu. Use the D-pad to highlight Inkay then press A to select. + +Screenshot of Aroma plugin menu with Inkay entry highlighted + +Press A to enter the `Network Selection` area. + +Screenshot of Inkay menu with Network Selection highlighted + +Press A on `Connect to Pretendo network` to toggle it to `false`. + +Screenshot of Inkay menu with Connect to Pretendo Network set to false + +Press `B` three times to exit the Aroma plugin menu. Your console will restart. Once it does, a notification will appear showing that you are now using Nintendo Network. + +The Wii U user selection screen, with 'Using Nintendo Network' overlaid in the top-left + +You may now use your NNID to access the eShop or other Nintendo services. To return to Pretendo Network, repeat the process and set `Connect to Pretendo network` to `true`. +
+ +
+Resetting WaraWara Plaza +If you're having issues with WaraWara Plaza (where the Miis run around on the TV), resetting it can help. + +Exit any games or software such that you're on the Wii U Menu, then press `L + Down + SELECT` on the Wii U GamePad to open the Aroma plugin menu. Use the D-pad to highlight Inkay then press A to select. + +Screenshot of Aroma plugin menu with Inkay entry highlighted + +Use the D-pad to select `Other Settings` and press A to enter it. + +Screenshot of Inkay menu with Other Settings highlighted + +Press A on `Reset Wara Wara Plaza` to perform the reset. + +Screenshot of Inkay menu with Reset Wara Wara Plaza highlighted + +The button will change to indicate the console must be restarted. + +Screenshot of Inkay menu with Reset Wara Wara Plaza highlighted. The entry now says 'Restart to apply' + +Press `B` three times to exit the Aroma plugin menu. Your console will restart. Once it does, the process is complete. +
+ # Transferring save data to your Pretendo Network account -Pretendo Network is not compatible with existing Nintendo Network IDs. This means you must create a new account. Because of this, you may want to move existing game save data to your new account. +Pretendo Network is not compatible with existing Nintendo Network IDs. This means you must create a new account. Because of this, you may want to move existing game save data to your new account. This is optional.
Note: @@ -129,17 +217,17 @@ Pretendo Network is not compatible with existing Nintendo Network IDs. This mean To move your save data, you will need a save data backup homebrew application. This guide will use the WUT port of SaveMii for Aroma. To begin, download the latest [GitHub release](https://github.com/Xpl0itU/savemii/releases) of SaveMii or download it from the [Homebrew App Store](https://hb-app.store). - +Screenshot of Homebrew App Store page of SaveMii Mod Once installed, open the application from the HOME Menu. You should see a menu for Wii U and vWii saves. - +SaveMii menu Select `Wii U Save Management`. You should now see a list of installed games. Find and select the game you would like to transfer the save data of. Select `Backup savedata`. - +SaveMii backup save data menu Select a new slot to backup the save data to. If you select a non-empty slot, the backup data in that slot will be overwritten. @@ -160,12 +248,12 @@ Select the backup slot you just backed the save data up to. Select the profile to restore the save data to. This should be your ***Pretendo*** Network ID. - +SaveMii restore save data menu When ready, press the `A` button to transfer your data. Press `A` again to confirm your actions. If you get a message about backing up your data on your Pretendo profile, ignore. Your screen may briefly flash as the data is copied over. Once completed, exit SaveMii and ensure the game you transferred works properly on your Pretendo profile. - +Screenshot of a game that loaded successfully Repeat this process for any other save data you'd like to transfer to your Pretendo profile. diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..3ad1db3 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,26 @@ +import eslintConfig from '@pretendonetwork/eslint-config'; +import globals from 'globals'; + +export default [ + ...eslintConfig, + { + files: ['public/**'], + languageOptions: { + globals: { + ...globals.browser, + ...globals.node + } + } + }, + { + files: ['src/**'], + languageOptions: { + globals: { + ...globals.node + } + } + }, + { + ignores: ['**/*.bundled.js'] + } +]; diff --git a/locales/ar_AR.json b/locales/ar_AR.json index c06cbf8..8563312 100644 --- a/locales/ar_AR.json +++ b/locales/ar_AR.json @@ -1,6 +1,6 @@ { "nav": { - "about": "عنا", + "about": "عن", "faq": "أسئلة", "docs": "دليل", "credits": "الفريق", @@ -137,8 +137,6 @@ }, "account": { "settings": { - "downloadFilesDescription": "(لن يعمل على شبكة نينتندو)", - "downloadFiles": "تحميل ملفات الحساب", "settingCards": { "profile": "الملف الشخصي", "nickname": "لقب", diff --git a/locales/ast.json b/locales/ast.json index 34b6c9d..597663d 100644 --- a/locales/ast.json +++ b/locales/ast.json @@ -148,8 +148,6 @@ "loginPrompt": "¿Xá tienes una cuenta?" }, "settings": { - "downloadFiles": "Baxar los ficheros de la cuenta", - "downloadFilesDescription": "(nun funciona na Nintendo Network)", "upgrade": "Anovar la cuenta", "unavailable": "Nun ta disponible", "settingCards": { diff --git a/locales/ca_ES.json b/locales/ca_ES.json index 6e3a97c..e960fbb 100644 --- a/locales/ca_ES.json +++ b/locales/ca_ES.json @@ -63,7 +63,7 @@ }, { "question": "Funciona el Pretendo al Cemu o als emuladors?", - "answer": "Pretendo està dissenyat en principi per al hardware original de Wii U i 3DS; ara mateix l'únic emulador d'aquestes consoles compatible amb la Nintendo Network és el Cemu. Cemu no és compatible oficialment amb servidors personalitzats, però encara hauria de ser possible fer servir el Pretendo al Cemu.
Pretendo actualment no és compatible amb el Cemu." + "answer": "Pretendo suporta qualsevol client que pugui interactuar amb Nintendo Network. Actualment, l'únic emulador amb aquesta funció és Cemu. Cemu 2.0 suporta oficialment Pretendo sota la teva configuració del compte de Nintendo Network. Per a més informació sobre com iniciar-se amb Cemu, mira't documentation.
Citra no suporta el joc en línia de veritat i, per tant, no funciona amb Pretendo i no mostra cap signe de que realment funcioni, el joc en línia. Mikage, un emulador de 3DS per a mòbils podria rebre suport en el futur, tot i que és lluny de ser cert.\n\nPretendo està dissenyat en principi per al hardware original de Wii U i 3DS; ara mateix l'únic emulador d'aquestes consoles compatible amb la Nintendo Network és el Cemu. Cemu no és compatible oficialment amb servidors personalitzats, però encara hauria de ser possible fer servir el Pretendo al Cemu.
Pretendo actualment no és compatible amb el Cemu." }, { "question": "Si se'm va prohibir l'accés a la Nintendo Network, continuarà prohibit al Pretendo?", @@ -125,7 +125,153 @@ }, "bandwidthRaccoonQuotes": [ "Soc Bandwith el zorro, m'agrada mossegar els cables que passen pels servidors de Pretendo Network. Nyam!", - "Moltes persones ens pregunten si ens podriem posar en problemes legals amb Nintendo pel projecte; estic feliç d'anunciar que la meva tieta treballa a Nintendo i ella em va dir que no hi havia cap problema." + "Moltes persones ens pregunten si ens podriem posar en problemes legals amb Nintendo pel projecte; estic feliç d'anunciar que la meva tieta treballa a Nintendo i ella em va dir que no hi havia cap problema.", + "Webkit v537 és la millor versió de Webkit per a Wii U. No, no anem a portar Chrome a la Wii U.", + "No puc esperar per que el rellotge arribi a 03:14:08 UTC el 19 de Gener a 2038!", + "Realment, la Wii U és un sistema infravalorat: els anuncis van ser dolents, però la consola és genial. Ah, un moment, no estic segur perquè, però el meu Gamepad no s'està connectant a la meva Wii.", + "El tema principal de Super Mario World 2 - Yoshi's Island és boníssim i no hi ha manera de fer-me canviar d'opinió.", + "Els meus llançaments de Nintendo Switch han sigut Nintendo Switch Online + Expansion Pack, Nintendo Switch Online + Rumble Pak, Nintendo Switch Online + Offline Play Pack , Nintendo Switch Online + Yet Another Port Pack i Nintendo Switch Online + Dr. Kawashima's Brain Training/Brain Age \"Et va gustar molt el títol de la consola virtual de Nintendo Wii U, així que la portem de volta\" Pack. Realment pots dir que a Nintendo li importa.", + null, + "El meu primer vídeo al canal! He volgut fer vídeos des de fa molt, però el meu portàtil no funcionava bé i no podia fer funcionar fraps, skype o minecraft tot a la vegada. Però això s'ha acabat! Amb l'ajuda del meu professor de TI el meu portàtil funciona molt millor i ara puc grabar! Desitjo que tots gaudiu i si ho feu deixeu m'agrada i subscriviu-vos!!!" ] + }, + "account": { + "loginForm": { + "username": "Usuari", + "login": "Iniciar sessió", + "detailsPrompt": "Posa l'informació de la teva compte abaix", + "password": "Contrasenya", + "confirmPassword": "Confirmar contrasenya", + "email": "Correu electrònic", + "miiName": "Nom de mii", + "forgotPassword": "T'has olvidat la teva contrasenya?", + "register": "Crear compte", + "registerPrompt": "No tens un compte?", + "loginPrompt": "Ja tens un compte?" + }, + "account": "Compte", + "settings": { + "upgrade": "Millora compte", + "unavailable": "No disponible", + "settingCards": { + "userSettings": "Configuració d'usuari", + "profile": "Perfil", + "beta": "Beta", + "email": "Correu electrònic", + "password": "Contrasenya", + "nickname": "Sobrenom", + "country": "País/regió", + "production": "Producció", + "hasAccessPrompt": "El teu nivell et dona accés als servidors beta. Genial!", + "timezone": "Zona horària", + "upgradePrompt": "Servidors beta exclusius dels beta testers.
Per a convertir-te en un, actualitza el teu compte.", + "linkDiscord": "Connecta el compte de Discord", + "no_signins_notice": "Historial d'inici de sessió sense registres. Comprova'l més tard!", + "passwordResetNotice": "Després de canviar la teva contrasenya, se't tancarà la sessió a tots els dispositius.", + "otherSettings": "Més configuració", + "discord": "Discord", + "removeDiscord": "Elimina el compte de Discord", + "newsletterPrompt": "Rep actualitzacions del projecte via correu (pots desfer en qualsevol moment)", + "passwordPrompt": "Entra la contrasenya del teu PNID per a descarregar els arxius de Cemu", + "no_newsletter_notice": "Butlletí no disponible. Comprova'l més tard", + "no_edit_from_dashboard": "Actualment no es pot editar la configuració del PNID des del panell de control. Si us plau, actualitza la configuració des de la consola vinculada", + "newsletter": "Notícies", + "signInHistory": "Historial d'inicis de sessió", + "noDiscordLinked": "Cap compte de Discord connectat.", + "fullSignInHistory": "Mira l'historial complet", + "connectedToDiscord": "Connectat a Discord com", + "gender": "Gènere", + "birthDate": "Dia de naixement", + "serverEnv": "Entorn del servidor", + "signInSecurity": "Inici de sessió i seguretat" + } + }, + "forgotPassword": { + "sub": "Posa el teu correu electrònic/PNID abaix", + "input": "Correu electrònic o PNID", + "submit": "Sotmetre" + }, + "resetPassword": { + "password": "Contrasenya", + "confirmPassword": "Confirma contrasenya", + "submit": "Sotmetre", + "header": "Restaurar contrasenya", + "sub": "Introdueix nova contrasenya abaix" + }, + "accountLevel": [ + "Estàndard", + "Tester", + "Moderador", + "Desenvolupador" + ], + "banned": "Expulsat" + }, + "blogPage": { + "published": "Publicat per", + "publishedOn": "al", + "title": "Blog", + "description": "Les últimes actualitzacions en petites quantitats. Si vols veure actualitzacions més freqüents, considera donar-nos suport." + }, + "upgrade": { + "tierSelectPrompt": "Selecciona un nivell", + "unsub": "Donar-se de baixa", + "unsubPrompt": "Estàs segur que vols donar-te de baixa de tiername? Perdràs l'accés a les avantatges associades a ell.", + "back": "Endarrere", + "month": "Mes", + "unsubConfirm": "Donar-se de baixa", + "changeTier": "Canvia el nivell", + "changeTierPrompt": "Estàs segur que vols donar-te de baixa de oldtiername i donar-te d'alta a newtiername?", + "changeTierConfirm": "Canvia de nivell", + "title": "Actualitza" + }, + "progressPage": { + "title": "El nostre progrés", + "description": "Comprova el progrés i els objectius del projecte! (S'actualitza cada hora, més o menys, no mostra TOTS els canvis i objectius)" + }, + "localizationPage": { + "title": "Localitzem-nos", + "instructions": "Mira les instruccions de localització", + "description": "Enganxa un enllaç a una localització JSON accesible públicament per a probar-la al lloc", + "button": "Arxiu de prova", + "fileInput": "Arxiu de prova", + "filePlaceholder": "https://a.link.to/l_arxiu.json" + }, + "modals": { + "close": "Tancar", + "cancel": "Cancel·lar", + "confirm": "Confirmar" + }, + "docs": { + "quickLinks": { + "header": "Enllaços d'accés ràpid", + "links": [ + { + "header": "Instal·lar Pretendo" + }, + { + "header": "Has tingut un error?", + "caption": "Cerca-ho aquí" + } + ] + }, + "search": { + "caption": "Escriu-lo al cuadre de baix per a obtindre informació del teu problema!", + "label": "Codi d'error", + "title": "Tens un codi d'error?", + "no_match": "No s’han trobat coincidències" + }, + "sidebar": { + "getting_started": "Per a començar", + "welcome": "Benvingut", + "search": "Cercar", + "juxt_err": "Codis d'error - Juxt", + "install_extended": "Instal·lar Pretendo", + "install": "Instal·lar" + }, + "missingInLocale": "Aquesta pàgina no està disponible al teu idioma. Si us plau, consulta la versió en anglès a sota." + }, + "donation": { + "upgradePush": "Per esdevenir suscriptor i guanyar accés a increïbles avantatges, vés a la pàgina de millores.", + "progress": "Objectiu mensual: $${totd} de $${goald}/al mes, ${perc}%." } } diff --git a/locales/cs_CZ.json b/locales/cs_CZ.json index c4c1ac1..4c0e663 100644 --- a/locales/cs_CZ.json +++ b/locales/cs_CZ.json @@ -33,54 +33,223 @@ "aboutUs": { "title": "O nás", "paragraphs": [ - "Pretendo je open-sourcový projekt, jehož cílem je reimplementovat Nintendo Network pro 3DS a Wii U pomocí pouze legálního reverse engineeringu.", - "Protože by naše služby byly jak svobodné, tak open source, můžou existovat dlouho po nevyhnutelném uzavření Nintendo Network." + "Pretendo je open-source projekt, jehož cílem je reimplementovat Nintendo Network pro 3DS a Wii U pomocí legálního reverse engineeringu.", + "Jelikož jsou naše služby svobodný a open-source software, nehrozí, že budou náhle ukončeny." ] }, "credits": { "title": "Náš tým", - "text": "Seznamte se s týmem, co za projektem stojí" + "text": "Seznamte se s týmem, co za projektem stojí", + "people": [ + { + "name": "Jonathan Barrow (jonbarrow)", + "picture": "https://github.com/jonbarrow.png", + "github": "https://github.com/jonbarrow", + "caption": "Vlastník projektu a vedoucí vývojář" + }, + { + "caption": "Výzkum a vývoj služby Miiverse", + "name": "Jemma (CaramelKat)", + "picture": "https://github.com/caramelkat.png", + "github": "https://github.com/CaramelKat" + }, + { + "picture": "https://github.com/ashquarky.png", + "github": "https://github.com/ashquarky", + "name": "quarky", + "caption": "Výzkum konzole Wii U a vývoj záplat" + }, + { + "name": "SuperMarioDaBom", + "caption": "Systémový výzkum a serverová architektura", + "picture": "https://github.com/supermariodabom.png", + "github": "https://github.com/SuperMarioDaBom" + }, + { + "name": "pinklimes", + "caption": "Webový vývoj", + "picture": "https://github.com/gitlimes.png", + "github": "https://github.com/gitlimes" + }, + { + "name": "Shutterbug2000", + "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", + "github": "https://github.com/shutterbug2000", + "caption": "Systémový výzkum a vývoj serverů" + }, + { + "name": "Billy", + "picture": "https://github.com/InternalLoss.png", + "github": "https://github.com/InternalLoss", + "caption": "Archivace dat a serverová architektura" + }, + { + "github": "https://github.com/DaniElectra", + "name": "DaniElectra", + "picture": "https://github.com/danielectra.png", + "caption": "Systémový výzkum a vývoj serverů" + }, + { + "name": "niko", + "caption": "Vývoj webu a serverů", + "picture": "https://github.com/hauntii.png", + "github": "https://github.com/hauntii" + }, + { + "caption": "DevOps a práce s komunitou", + "github": "https://github.com/MatthewL246", + "name": "MatthewL246", + "picture": "https://github.com/MatthewL246.png" + }, + { + "name": "wolfendale", + "caption": "Vývoj serverového softwaru a optimalizace", + "picture": "https://github.com/wolfendale.png", + "github": "https://github.com/wolfendale" + }, + { + "name": "TraceEntertains", + "picture": "https://github.com/TraceEntertains.png", + "github": "https://github.com/TraceEntertains", + "caption": "Vývoj 3DS záplat a výzkum" + } + ] }, "specialThanks": { "text": "Bez nich by Pretendo nebylo tam, kde je dnes.", - "title": "Zvláštní poděkování" + "title": "Zvláštní poděkování", + "people": [ + { + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", + "github": "https://github.com/PretendoNetwork", + "name": "Přispívající na GitHubu", + "caption": "Lokalizace a jiné příspěvky" + }, + { + "github": "https://github.com/superwhiskers", + "name": "superwhiskers", + "picture": "https://github.com/superwhiskers.png", + "caption": "vývoj knihovny crunch" + }, + { + "name": "Stary", + "picture": "https://github.com/Stary2001.png", + "github": "https://github.com/Stary2001", + "caption": "3DS vývoj a disektor NEX" + }, + { + "name": "rverse", + "caption": "Sdílení informací o Miiverse", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub" + }, + { + "name": "Kinnay", + "special": "Zvláštní poděkování", + "caption": "Výzkum datových struktur Nintenda", + "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", + "github": "https://github.com/Kinnay" + }, + { + "github": "https://github.com/ninstar", + "name": "NinStar", + "caption": "Ikony pro Mii Editor a Juxt reakce", + "picture": "https://github.com/ninstar.png" + }, + { + "name": "Rambo6Glaz", + "caption": "Konzolový výzkum a herní servery", + "picture": "https://github.com/EpicUsername12.png", + "github": "https://github.com/EpicUsername12" + }, + { + "picture": "https://github.com/GaryOderNichts.png", + "caption": "Vývoj Wii U záplat", + "github": "https://github.com/GaryOderNichts", + "name": "GaryOderNichts" + }, + { + "name": "zaksabeast", + "picture": "https://cdn.discordapp.com/avatars/219324395707957248/c62573fbd4d26c8b4724f54413df6960.png?size=128", + "github": "https://github.com/zaksabeast", + "caption": "Tvůrce 3DS záplat" + }, + { + "name": "mrjvs", + "caption": "Serverová architektura", + "picture": "https://github.com/mrjvs.png", + "github": "https://github.com/mrjvs" + }, + { + "name": "binaryoverload", + "caption": "Serverová architektura", + "picture": "https://github.com/binaryoverload.png", + "github": "https://github.com/binaryoverload" + }, + { + "caption": "Splatoon rotace a výzkum", + "picture": "https://github.com/Simonx22.png", + "github": "https://github.com/Simonx22", + "name": "Simonx22" + }, + { + "name": "OatmealDome", + "caption": "Splatoon rotace a výzkum", + "picture": "https://github.com/OatmealDome.png", + "github": "https://github.com/OatmealDome" + }, + { + "name": "GitHub přispěvovatelé", + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", + "github": "https://github.com/PretendoNetwork", + "caption": "Lokalizace a další příspěvky" + } + ] }, "faq": { "QAs": [ { "question": "Co je Pretendo?", - "answer": "Pretendo je open-sourcová náhrada za Nintendo Network, jejíž cílem je vytvořit vlastní servery pro rodinu konzolí Wii U a 3DS. Chceme zachovat online konektivitu těchto konzolí a umožnit tak hráčům dál hrát své oblíbené Wii U a 3DS tituly naplno." + "answer": "Pretendo je open-source náhrada za Nintendo Network, jejíž cílem je vytvořit vlastní servery pro rodinu konzolí Wii U a 3DS. Chceme zachovat online konektivitu těchto zařízení a umožnit tak hráčům nadále hrát své oblíbené Wii U a 3DS tituly." }, { "answer": "Bohužel ne. Již existující NNID na Pretendu nebudou fungovat, protože Vaše uživatelská data vlastní pouze Nintendo. Přestože by migrace účtů byla teoreticky možná, byla by riskantní a vyžadovala citlivé osobní údaje, které si nepřejeme držet.", "question": "Bude na Pretendu fungovat moje současné NNID?" }, { - "question": "Jak začít s Pretendem?", - "answer": "Pretendo v současné době není ve stavu, který by byl připraven pro veřejné použití. Nicméně, až nastane čas, Pretendo budete moct použít spuštěním našeho homebrew nástroje na Vašem zařízení." + "question": "Jak začnu s používáním Pretenda?", + "answer": "Pokud chcete začít používat Pretendo Network má 3DS, Wii U nebo jejich emulátorech, navštivte náš návod k nastavení!" }, { - "answer": "To nevíme. Mnohé služby a funkce Pretenda jsou vyvíjeny nezávisle na sobě (například, na Miiverse může pracovat jeden vývojář zatímco druhý pracuje na účtech a seznamu přátel) a proto nemůžeme poskytnout odhady, kdy bude něco hotové.", + "answer": "To nevíme. Mnohé služby a funkce Pretenda jsou vyvíjeny nezávisle na sobě (například, na Miiverse může pracovat jeden vývojář, zatímco druhý pracuje na účtech a seznamu přátel) a proto nemůžeme poskytnout odhady, kdy bude něco hotové.", "question": "Kdy bude [nějaká služba/funkce] hotová?" }, { - "question": "Funguje Pretendo na Cemu/emulátorech?", - "answer": "Pretendo podporuje jakýkoli klient který může interagovat s Nintendo Network. V současnosti je Cemu jediným emulátorem, který je tohoto schopen. Cemu 2.0 oficiálně podporuje Pretendo v nastavení Vašeho účtu. Pro bližší informace k Cemu můžete nahlédnout do dokumentace.
Citra nepodporuje skutečné online hraní a tudíž s Pretendem nefunguje a nezdá se, že by se toto v budoucnu změnilo. Mikage, emulátor 3DS pro mobilní zařízení, může podporu poskytnout v budoucnu, ale toto není jisté." + "question": "Kdy přidáte další hry?", + "answer": "Na nových hrách pracujeme, jakmile máme pocit, že na to jsou naše backendové knihovny dostatečně připraveny, a některý z vývojářů má čas se této hře věnovat. Mnoho naší práce připadá na stabilizaci a dokončování našich existujících her - chceme v nich nabídnout co nejlepší zážitek, než se přesuneme na nové tituly. Protože se nová práce objevuje neustále, nemůžeme poskytnout odhad, kdy se to stane." }, { - "question": "Pokud jsem zabanován(a) na Nintendo Network, přenese se můj ban do Pretenda?", - "answer": "Nemáme přístup k banům na Nintendo Network a tito uživatelé na naší službě zabanováni nebudou. Budeme mít ovšem pravidla k používání naší služby, jejichž porušení by mohlo vyústit v ban na Pretendu." + "question": "Funguje Pretendo na Cemu/emulátorech?", + "answer": "Cemu 2.1 oficiálně podporuje Pretendo v nastavení účtu. Pro informace jak začít s Cemu navštivte dokumentaci.
Některé 3DS emulátory můžou nabízet podporu, ale v současnosti nemáme oficiální doporučení ani návod k nastavení. Citra ve své poslední vydané verzi Pretendo nepodporuje." }, { "question": "Bude Pretendo podporovat Wii/Switch?", - "answer": "Pro Wii již existují vlastní servery, které poskytuje Wiimmfi. V současnosti neplánujeme cílit na Switch, protože online služby Switche jsou placené a od Nintendo Network se zásadně liší." + "answer": "Pro Wii již existují vlastní servery, které poskytuje Wiimmfi. V současnosti neplánujeme vyvíjet pro Switch, protože online služby Switche jsou placené a od Nintendo Network se zásadně liší." }, { "question": "Budu pro připojení potřebovat modifikovanou konzoli?", - "answer": "Ano, Vaše zařízení musí být modifikováno; na Wii U budete potřebovat pouze přístup k Homebrew Launcher (t.j. Haxchi, Coldboot Haxchi nebo exploit s webovým prohlížečem), informace pro připojení z 3DS jsou v přípravě." + "answer": "Pro nejlepší výsledek budete svou konzoli muset modifikovat; s Aroma na Wii U a Luma3DS na 3DS. Nicméně, na Wii U je dostupná metoda SSSL, která, byť s omezenou funkcionalitou, nabízí připojení bez modifikací. Pro podrobnosti navštivte návod k nastavení." + }, + { + "question": "Pokud jsem zabanován(a) na Nintendo Network, přenese se můj ban do Pretenda?", + "answer": "Nemáme přístup k banům na Nintendo Network a tito uživatelé na naší službě zabanováni nebudou. Máme však vlastní pravidla pro používání naší služby, jejichž porušení by mohlo vyústit v ban na Pretendu." + }, + { + "question": "Můžu na Pretendu používat mody a cheaty?", + "answer": "Pouze v soukromých zápasech - narušování online her lidem, kteří s tím nesouhlasili (tedy veřejné zápasy) je proti zásadám. Bany konzolím a účtům udělujeme pravidelně. Pretendo dále používá dodatečná bezpečnostní opatření, která brání v obcházení banů např. změnou sériového čísla." } ], - "text": "Zde jsou otázky, které jsou nám často kladeny, pro snadné informování.", + "text": "Zde je pár častých otázek, které často slyšíme, abyste byli v obraze.", "title": "Často kladené dotazy" }, "showcase": { @@ -118,13 +287,13 @@ "password": "Heslo", "gender": "Pohlaví", "discord": "Discord", - "newsletterPrompt": "Posílat aktualizace projektu emailem (Kdykoliv můžete posílání zrušit)", + "newsletterPrompt": "Posílat aktualizace projektu emailem (lze kdykoli zrušit)", "nickname": "Přezdívka", "signInHistory": "Historie přihlášení", "beta": "Beta", "serverEnv": "Prostředí serveru", "noDiscordLinked": "Není připojen žádný Discord účet.", - "fullSignInHistory": "Zobrazit celou historii přihlašování", + "fullSignInHistory": "Zobrazit celou historii přihlášení", "production": "Produkční", "linkDiscord": "Připojit Discord účet", "country": "Země/region", @@ -135,13 +304,11 @@ "connectedToDiscord": "Připojeno k Discordu jako", "newsletter": "Newsletter", "hasAccessPrompt": "Váš aktuální tier Vám dává přístup k beta serverům. Super!", - "passwordResetNotice": "Po změně hesla budete odhlášeni ze všech zařízení.", + "passwordResetNotice": "Po změně hesla budete odhlášen(a) ze všech zařízení.", "otherSettings": "Ostatní nastavení", "no_edit_from_dashboard": "Úprava PNID nastavení z uživatelského panelu není aktuálně dostupné. Změňte prosím Vaše uživatelské nastavení z připojené herní konzole." }, "unavailable": "Nedostupné", - "downloadFiles": "Stáhnout soubory účtu", - "downloadFilesDescription": "(Nebude fungovat na Nintendo Networku)", "upgrade": "Upgradovat účet" }, "accountLevel": [ @@ -209,7 +376,7 @@ "sidebar": { "getting_started": "Začínáme", "install_extended": "Nainstalovat Pretendo", - "install": "Nainstalovat", + "install": "Instalace", "welcome": "Vítejte", "search": "Hledat", "juxt_err": "Chybové kódy - Juxt" @@ -217,7 +384,7 @@ "search": { "no_match": "Nenalezeny žádné shody", "title": "Máte chybový kód?", - "caption": "Napište ho do políčka níže pro zobrazení informací k Vašemu problému!", + "caption": "Napište jej do políčka níže pro zobrazení informací k Vašemu problému!", "label": "Chybový kód" }, "missingInLocale": "Tato stránka je nedostupná ve Vaší lokalizaci. Podívejte se prosím na Anglickou verzi níže." @@ -255,15 +422,16 @@ "Úvodní hudba Super Mario World 2 - Yoshi's Island je slast pro moje uši a nikdo mě nepřesvědčí o opaku.", "Moje oblíbená vydání Switche byly Nintendo Switch Online + Expansion Pack, Nintendo Switch Online + Rumble Pak, Nintendo Switch Online + Offline Play Pack, Nintendo Switch Online + Yet Another Port Pack a Nintendo Switch Online + Dr. Kawashima's Brain Training / Brain Age \"Ten Virtual Console titul pro Wii U se ti fakt líbil, tak ho přinášíme zpátky\" Pack. Je fakt zřejmý, že nás má Nintendo rádo.", "Když moravák řekne \"Znáš přéce Ash, taký zlatíčko, je tak moc UwU\", snaží se neurážlivě říct \"Ash pořád UwUuje a je to fakt divný a hloupý, kéž by to nedělala\"", - "Muj prvni videjko na mem kanale!! Uz dlouho jsem si chtel delat videa, ale muj laptop byl docela spatni a nemohl jsem spustit fraps, skype a majnkraft najednou. Ale ted je to už minulost! S pomoci sveho ajty učitele mi notebuk beži lepe a ted muzu nahravat! Doufam, ze se vam to bude libit a pokud ano, tak prosim dejte lajk a odbjer!!!\"" + "Muj prvni videjko na mem kanale!! Uz dlouho jsem si chtel delat videa, ale muj laptop byl docela spatni a nemohl jsem spustit fraps, skype a majnkraft najednou. Ale ted je to už minulost! S pomoci sveho ajty učitele mi notebuk beži lepe a ted muzu nahravat! Doufam, ze se vam to bude libit a pokud ano, tak prosim dejte lajk a odbjer!!!\"", + "to vypadá mega vyfeleně" ], "usefulLinks": "Užitečné odkazy", "widget": { "captions": [ "Chcete být v obraze?", - "Připojte se do našeho Discord serveru!" + "Přidejte se k našemu Discord serveru!" ], - "button": "Připojit se nyní!" + "button": "Připojte se nyní!" }, "socials": "Sociální sítě" }, @@ -278,5 +446,8 @@ "donation": { "progress": "$${totd} z měsíčního cíle $${goald} vybráno (${perc}% měsíčního cíle)", "upgradePush": "Abyste se stal(a) předplatitelem a získal(a) přístup k zajímavým výhodám navštivte upgrade stránku." + }, + "notfound": { + "description": "Jejda! Tuto stránku jsme nenalezli." } } diff --git a/locales/cy_GB.json b/locales/cy_GB.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/locales/cy_GB.json @@ -0,0 +1 @@ +{} diff --git a/locales/da_DK.json b/locales/da_DK.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/locales/da_DK.json @@ -0,0 +1 @@ +{} diff --git a/locales/de_DE.json b/locales/de_DE.json index 2be6f31..8f8d941 100644 --- a/locales/de_DE.json +++ b/locales/de_DE.json @@ -23,7 +23,7 @@ } }, "hero": { - "subtitle": "Spiel-Server", + "subtitle": "Spielserver", "title": "Rekonstruiert", "text": "Pretendo ist ein kostenloser, Open-Source-Ersatz für Nintendo-Server für den 3DS und die Wii U, der die Onlineverbindung für alle, auch nach der Einstellung der offiziellen Server, ermöglicht", "buttons": { @@ -34,7 +34,7 @@ "title": "Über uns", "paragraphs": [ "Pretendo ist ein Open-Source-Projekt, welches das Nintendo Network für den 3DS und die Wii U durch Clean-Room-Reverse-Engineering rekonstruiert.", - "Da unsere Dienste kostenlos und Open-Source sind, können diese auch nach der offiziellen Schließung des Nintendo Networks weiter existieren." + "Da unsere Dienste kostenlos und Open-Source sind, werden diese auch zukünftig weiterhin existieren." ] }, "progress": { @@ -55,19 +55,19 @@ }, { "question": "Wie benutze ich Pretendo?", - "answer": "Pretendo ist aktuell nicht für die öffentliche Nutzung verfügbar. Sobald das Pretendo Network bereit ist, kannst du es einfach durch unseren Homebrew-Patcher auf deiner Konsole nutzen." + "answer": "Um Pretendo Network auf der 3DS-Familie, der Wii U oder Emulatoren zu nutzen, sollten sie den Installationsanweisungen folgen: setup instructions" }, { "question": "Weißt du, wann Funktion/Dienst bereit ist?", "answer": "Nein. Viele der Funktionen und Dienste von Pretendo werden unabhängig voneinander entwickelt (z. B., ein Entwickler arbeitet am Miiverse während ein anderer an Accounts und der Freundesliste arbeitet), deshalb können wir keine genauen Angaben zur jeweiligen Fertigstellung machen." }, { - "question": "Funktioniert Pretendo mit CEMU, oder anderen Emulatoren?", - "answer": "Pretendo unterstützt jeden Client, der mit dem Nintendo Network interagieren kann. Derzeit ist Cemu der einzige Emulator mit dieser Art von Funktionalität. Cemu 2.0 unterstützt Pretendo offiziell unter deinen Netzwerk-Kontooptionen im Emulator. Informationen zu den ersten Schritten mit Cemu findest du in der Dokumentation.
Citra unterstützt kein echtes Online-Spiel und funktioniert daher nicht mit Pretendo und zeigt überhaupt keine Anzeichen dafür, echtes Online-Spiel zu unterstützen. Mikage, ein 3DS-Emulator für mobile Geräte, könnte in Zukunft Unterstützung bieten, obwohl dieser alles andere als sicher ist." + "question": "Wann werdet ihr neue Spiele hinzufügen?", + "answer": "Wir arbeiten am Hinzufügen neuer Spiele, sobald unsere Backend-Libraries bereit dazu sind, diese zu unterstützen und sobald unsere Entwickler Zeit haben, diese instand zu halten. Eine Menge unserer Zeit fließt in die Stabilisierung und Abschließen der bereits existierenden Spiele. Wir möchten euch die besten Spielerfahrungen möglich machen, bevor wir uns neuen Spieltiteln widmen. Aufgrund von ständiger neu auftauchender Arbeit können wir keine Angaben machen, wann wir neue Spiele hinzufügen werden." }, { - "question": "Wenn ich im Nintendo Network gebannt wurde, bin ich dann in Pretendo auch gebannt?", - "answer": "Wir werden keinen Zugriff auf Nintendos Bannliste haben, weshalb kein Nutzer auf unserem Netzwerk gebannt sein wird. Trotzdem, wir haben Regeln für die Nutzung unserer Dienste und die Nichteinhaltung dieser kann zu einem Bann führen." + "question": "Funktioniert Pretendo auch auf Cemu oder anderen Emulatoren?", + "answer": "Cemu 2.1 ist von Pretendo unterstützt. Dies kann man unter den Netztwerk/Account Einstellungen in Cemu 2.1 einstellen. Für mehr Informationen, wie man Cemu mit Pretendo Network nutzt, schauen sie sich den Guidean.
Manche 3DS Emulatoren oder \"Forks\" unterstützen vielleicht Pretendo, es gibt aber momentan keine offiziellen Empfehlungen oder Setup Guides. Die finalen Builds von Citra werden nicht unterstützt." }, { "question": "Wird Pretendo die Wii/Switch unterstützen?", @@ -76,6 +76,13 @@ { "question": "Benötige ich einen Hack um Pretendo zu verwenden?", "answer": "Ja, du musst deine Konsole hacken, allerdings reicht auf der Wii U den Zugriff zum Homebrew-Launcher (z.B. über Haxchi, CBHC, oder den Browser-Exploit). Informationen, wie der 3DS verbunden wird, werden später noch veröffentlicht." + }, + { + "question": "Wenn ich auf dem Nintendo Network gebannt bin, heißt das auch das ich auf Pretendo gebannt bin?" + }, + { + "question": "Kann ich Cheats oder Mods online mit Pretendo verwenden?", + "answer": "Nur in privaten Matches – sich einen unfairen Vorteil zu verschaffen oder das Online-Erlebnis von Personen zu stören, die nicht zugestimmt haben (wie beispielsweise in öffentlichen Matches), ist ein bannbarer Verstoß. Wir verhängen regelmäßig Konto- und Konsolensperren sowohl für Wii U- als auch für 3DS-Systeme. Pretendo verwendet zusätzliche Sicherheitsmaßnahmen, die traditionelle ‘Entbannungs’-Methoden wie das Ändern der Seriennummer unwirksam machen." } ] }, @@ -85,7 +92,7 @@ "cards": [ { "title": "Spiel-Server", - "caption": "Bringt dir deine Lieblingsspiele und Inhale zurück, mithilfe eigener Server." + "caption": "Bringt dir deine Lieblingsspiele und Inhalte zurück, mithilfe eigener Server." }, { "title": "Juxtaposition", @@ -99,11 +106,171 @@ }, "credits": { "title": "Das Team", - "text": "Triff das Team hinter dem Projekt" + "text": "Lerne das Team hinter dem Projekt kennen", + "people": [ + { + "picture": "https://github.com/jonbarrow.png", + "github": "https://github.com/jonbarrow", + "name": "Jonathan Barrow (jonbarrow)", + "caption": "Projektleiter und leitender Entwickler" + }, + { + "name": "Jemma (CaramelKat)", + "picture": "https://github.com/caramelkat.png", + "caption": "Miiverse Analyse/Forschung und Entwicklung", + "github": "https://github.com/CaramelKat" + }, + { + "name": "quarky", + "picture": "https://github.com/ashquarky.png", + "github": "https://github.com/ashquarky", + "caption": "Wii U Forschung und Patch-Entwicklung" + }, + { + "picture": "https://github.com/supermariodabom.png", + "github": "https://github.com/SuperMarioDaBom", + "name": "SuperMarioDaBom", + "caption": "Systemforschung und Serverarchitektur" + }, + { + "picture": "https://github.com/gitlimes.png", + "name": "pinklimes", + "github": "https://github.com/gitlimes", + "caption": "Webentwicklung" + }, + { + "name": "Shutterbug2000", + "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", + "github": "https://github.com/shutterbug2000", + "caption": "Systemforschung und Server Entwicklung" + }, + { + "name": "Billy", + "picture": "https://github.com/InternalLoss.png", + "github": "https://github.com/InternalLoss", + "caption": "Erhaltung und Server-Architektur" + }, + { + "name": "DaniElectra", + "picture": "https://github.com/danielectra.png", + "github": "https://github.com/DaniElectra", + "caption": "Systemforschung und Server-Entwicklung" + }, + { + "name": "niko", + "picture": "https://github.com/hauntii.png", + "github": "https://github.com/hauntii", + "caption": "Web- und Serverentwicklung" + }, + { + "name": "MatthewL246", + "picture": "https://github.com/MatthewL246.png", + "github": "https://github.com/MatthewL246", + "caption": "DevOps und Community-Arbeit" + }, + { + "name": "wolfendale", + "picture": "https://github.com/wolfendale.png", + "github": "https://github.com/wolfendale", + "caption": "Server-Entwicklung und Optimierungen" + }, + { + "name": "TraceEntertains", + "picture": "https://github.com/TraceEntertains.png", + "caption": "3DS Patch-Entwicklung und Forschung", + "github": "https://github.com/TraceEntertains" + } + ] }, "specialThanks": { "title": "Besonderer Dank", - "text": "Ohne sie wäre Pretendo nicht, wo es heute ist." + "text": "Ohne sie wäre Pretendo nicht, wo es heute ist.", + "people": [ + { + "name": "GitHub-Mitwirkende", + "caption": "Übersetzungen und andere Beiträge", + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", + "github": "https://github.com/PretendoNetwork" + }, + { + "caption": "Crunch Library Entwicklung", + "picture": "https://github.com/superwhiskers.png", + "github": "https://github.com/superwhiskers", + "name": "superwhiskers" + }, + { + "name": "Stary", + "github": "https://github.com/Stary2001", + "picture": "https://github.com/Stary2001.png" + }, + { + "caption": "Miiverse-Informationsaustausch", + "github": "https://twitter.com/rverseClub", + "name": "rverse", + "picture": "https://github.com/rverseTeam.png" + }, + { + "special": "Besonderer Dank", + "caption": "Forschung zu Nintendo-Datenstrukturen", + "name": "Kinnay", + "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", + "github": "https://github.com/Kinnay" + }, + { + "name": "NinStar", + "caption": "Symbole für dem Mii-Editor und Juxt-Reaktionen", + "picture": "https://github.com/ninstar.png", + "github": "https://github.com/ninstar" + }, + { + "name": "Rambo6Glaz", + "caption": "Konsolenforschung und Spiele-Server", + "github": "https://github.com/EpicUsername12", + "picture": "https://github.com/EpicUsername12.png" + }, + { + "github": "https://github.com/GaryOderNichts", + "name": "GaryOderNichts", + "caption": "Wii U Patch-Entwicklung", + "picture": "https://github.com/GaryOderNichts.png" + }, + { + "name": "zaksabeast", + "caption": "3DS Patch-Ersteller", + "picture": "https://cdn.discordapp.com/avatars/219324395707957248/c62573fbd4d26c8b4724f54413df6960.png?size=128", + "github": "https://github.com/zaksabeast" + }, + { + "name": "mrjvs", + "caption": "Server-Architektur", + "picture": "https://github.com/mrjvs.png", + "github": "https://github.com/mrjvs" + }, + { + "name": "binaryoverload", + "caption": "Server-Architektur", + "picture": "https://github.com/binaryoverload.png", + "github": "https://github.com/binaryoverload" + }, + { + "name": "Simonx22", + "caption": "Spatoon-Rotations und Forschung", + "picture": "https://github.com/Simonx22.png", + "github": "https://github.com/Simonx22" + }, + { + "name": "OatmealDome", + "caption": "Splatoon-Rotations und Forschung", + "github": "https://github.com/OatmealDome", + "picture": "https://github.com/OatmealDome.png" + }, + { + "caption": "Lokalisierung und andere Beiträge", + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", + "name": "GitHub-Beiträger", + "github": "https://github.com/PretendoNetwork" + } + ] }, "discordJoin": { "title": "Bleib auf dem Laufenden", @@ -132,7 +299,8 @@ "Die Titelmusik von \"Super Mario World 2 - Yoshi's Island\" ist ein absoluter Hit und niemand kann mir das Gegenteil beweisen.", "Meine Lieblingsveröffentlichungen für die Nintendo Switch sind Nintendo Switch Online + Expansion Pack, Nintendo Switch Online + Rumble Pak, Nintendo Switch Online + Offline Play Pack, Nintendo Switch Online + Noch Ein Port Pack und Nintendo Switch Online + Dr. Kawashimas Gehirnjogging / Brain Age \"Ihr Mochtet Den Nintendo Wii U Virtual Console-Titel Sehr, Also Bringen Wir Ihn Zurück\" Pack. Man merkt, dass es Nintendo am Herzen liegt.", "So etwas wie \"Du kennst Ash, Gott segne ihr Herz, sie schreibt den ganzen Tag UwU\" ist die südländische Art zu sagen \"Ash schreibt die ganze Zeit UwU und es ist wirklich seltsam und dumm und ich wünschte, sie würde es nicht tun\"", - "Mein erstes Video auf meinem kanal!! Ich wolte schon lange viedeos machen, aber mein leptop wahr zu schwach um Fraps, Skipe und Minekraft gleichzeitieg laufen zu laßen. aber dass ist jetzt vorbei. mit etwas hilfe von meinen informatiklerer läüft mein leptop jetzt fiel besser und ich kan aufnemen. ich hoffe ihr alle mögt dass video und fals ihr das tut bite gebt einen daumen nach oben und aboniert!!!" + "Mein erstes Video auf meinem kanal!! Ich wolte schon lange viedeos machen, aber mein leptop wahr zu schwach um Fraps, Skipe und Minekraft gleichzeitieg laufen zu laßen. aber dass ist jetzt vorbei. mit etwas hilfe von meinen informatiklerer läüft mein leptop jetzt fiel besser und ich kan aufnemen. ich hoffe ihr alle mögt dass video und fals ihr das tut bite gebt einen daumen nach oben und aboniert!!!", + "Sieht gut für mich aus" ] }, "progressPage": { @@ -148,9 +316,9 @@ "account": { "accountLevel": [ "Standard", - "Tester*innen", - "Moderator*innen", - "Entwickler" + "Tester*in", + "Moderator*in", + "Entwickler*in" ], "loginForm": { "login": "Anmelden", @@ -198,8 +366,6 @@ "no_newsletter_notice": "Newsletter ist momentan nicht verfügbar. Schau später nochmal vorbei", "userSettings": "Nutzer-Einstellungen" }, - "downloadFiles": "Konto-Dateien herunterladen", - "downloadFilesDescription": "(funktioniert nicht im Nintendo Network)", "upgrade": "Konto upgraden", "unavailable": "Nicht verfügbar" }, @@ -225,7 +391,7 @@ "month": "Monat", "tierSelectPrompt": "Wähle eine Stufe", "unsub": "Deabonnieren", - "unsubPrompt": "Bist du dir sicher, dass du tiername deabonnieren möchtest? Du wirst den Zugang zu den Vorteilen verlieren, die mit dieser Stufe verbunden sind.", + "unsubPrompt": "Bist du dir wirklich sicher, dass du dich von tiername ablemden möchtest? Du wirst sofort den Zugriff auf die Vorteile dieser Stufe verlieren.", "unsubConfirm": "Deabonnieren", "changeTier": "Stufe ändern", "changeTierPrompt": "Bist du dir sicher, dass du oldtiername deabonnieren und newtiername abonnieren möchtest?", @@ -278,5 +444,8 @@ "cancel": "Abbrechen", "confirm": "Bestätigen", "close": "Schließen" + }, + "notfound": { + "description": "Woops! Diese Seite konnte nicht gefunden werden." } } diff --git a/locales/el_GR.json b/locales/el_GR.json index 692a84c..b90dc42 100644 --- a/locales/el_GR.json +++ b/locales/el_GR.json @@ -1,6 +1,6 @@ { "nav": { - "faq": "Συνηθησμένες Ερωτήσεις", + "faq": "Συχνές Ερωτήσεις", "accountWidget": { "settings": "Ρυθμίσεις", "logout": "Αποσύνδεση" @@ -8,33 +8,273 @@ "dropdown": { "captions": { "credits": "Γνώρισε την ομάδα", - "about": "Σχετικά με το έργο" + "about": "Σχετικά με το έργο μας", + "progress": "Κοίταξε την πρόοδο του έργου και τους στόχους του", + "blog": "Οι πιο πρόσφατες ενημερώσεις, συνοπτικά", + "faq": "Συχνές ερωτήσεις" } }, "about": "Πληροφορίες", "docs": "Έγγραφα", "progress": "Πρόοδος", "account": "Λογαριασμός", - "donate": "Κάνε δωρεά" + "donate": "Κάνε δωρεά", + "credits": "Συντελεστές", + "blog": "Blog" }, "hero": { "subtitle": "Servers παιχνιδιών", - "title": "Αναδημιουργημένο", + "title": "Αναδημιουργημένοι", "buttons": { "readMore": "Διαβάστε περισσότερα" }, - "text": "Το Pretendo είναι μία δωρεάν, με ανοιχτό κώδικα αντικατάσταση για τους Nintendo servers του 3DS και του Wii U, επιτρέποντας online σύνδεση για όλους, ακόμα και όταν οι αρχικοί servers διακοπούν" + "text": "Το Pretendo είναι ένας open source αντικαταστάτης των server της Nintendo τόσο για το 3DS όσο και για το Wii U, επιτρέποντας τη διαδικτυακή συνδεσιμότητα για όλους, ακόμη και μετά τη διακοπή της λειτουργίας των αρχικών server" }, "aboutUs": { "title": "Σχετικά με εμάς", "paragraphs": [ - "Το Pretendo είναι ένα έργο ανοιχτής πηγής που στοχεύει να αναδημιουργήσει το Nintendo Network για το 3DS και το Wii U χρησιμοποιώντας αντίστροφη μηχανική καθαρού δωματίου." + "Το Pretendo είναι ένα open source project που στοχεύει στην αναδημιουργία του Nintendo Network για το 3DS και το Wii U χρησιμοποιώντας clean-room reverse engineering.", + "Εφόσον οι υπηρεσίες μας είναι δωρεάν και ανοιχτού κώδικα, θα μπορούν να υπάρχουν για πολύ καιρό μετά το αναπόφευκτο κλείσιμο του Nintendo Network." ] }, "progress": { - "title": "Πρόοδος" + "title": "Πρόοδος", + "githubRepo": "Αποθετήριο Github" }, "faq": { - "text": "Ορίστε μερικές συνηθισμένες ερωτήσεις που μας ρωτάνε για εύκολη πληροφόρηση." + "text": "Εδώ βρίσκονται ορισμένες συνήθεις ερωτήσεις, για εύκολη πληροφόρηση.", + "QAs": [ + { + "question": "Τι είναι το Pretendo;", + "answer": "Το Pretendo είναι ένας open source αντικαταστάτης του Nintendo Network που στοχεύει στη δημιουργία custom server για την οικογένεια κονσολών Wii U και 3DS. Στόχος μας είναι η διατήρηση της online λειτουργικότητας των κονσολών αυτών, ώστε οι παίκτες να συνεχίσουν να απολαμβάνουν τα αγαπημένα τους Wii U και 3DS παιχνίδια στο έπακρο." + }, + { + "question": "Θα λειτουργούν τα υπάρχοντα NNIDs μου στο Pretendo;", + "answer": "Δυστυχώς, όχι. Τα υπάρχοντα NNID δεν θα λειτουργούν στο Pretendo, καθώς μόνο η Nintendo κρατάει τα δεδομένα του χρήστη. Παρότι είναι θεωρητικά δυνατόν μια μεταφορά NNID σε PNID, θα είναι ριψοκίνδυνο και θα χρειαστεί ευαίσθητα δεδομένα χρηστών που δεν επιθυμούμε να συλλέξουμε." + }, + { + "question": "Πώς χρησιμοποιώ το Pretendo;", + "answer": "Πρός το παρόν το Pretendo δεν είναι έτοιμο για χρήση. Όταν όμως είναι έτοιμο, θα μπορείς να το χρησιμοποιήσεις, τρέχοντας απλώς το Homebrew Patcher μας στη κονσόλα σου." + }, + { + "answer": "Όχι. Πολλές από τις λειτουργίες/υπηρεσίες της Pretendo αναπτύσονται ανεξάρτητα (για παράδειγμα, το Miiverse μπορεί να δουλεύεται από έναν προγραμματιστή, ενώ τα συστήματα Λογαριασμών και Φίλων να δουλεύεται από άλλον), άρα δεν μπορούμε να δώσουμε ένα ολικό εκτιμώμενο χρόνο στο ποσό θα χρειαστεί.", + "question": "Γνωρίζετε πότε θα είναι έτοιμη η λειτουργία/υπηρεσία;" + }, + { + "question": "Το Pretendo δουλεύει σε Cemu/emulators;", + "answer": "To Pretendo υποστηρίζει οποιονδήποτε client που μπορεί να αλληλεπιδράσει με το Nintendo Network. Αυτή τη στιγμή το μόνο emulator με αυτή τη λειτουργία είναι το Cemu. Το Cemu 2.0 υποστηρίζει το Pretendo μέσω των ρυθμίσεων του λογαριασμού δικτύου στο emulator. Για περαιτέρω πληροφορίες σχετικά με το Cemu, δες εδώ τις documentation.
Το Citra δεν υποστηρίζει online play και άρα δεν δουλέυει με το Pretendo, και πιθανώς δεν θα το υποστηρίξει ποτέ. To Mikage, ενα 3DS emulator για κινητά, ίσως το υποστηρίζει στο μέλλον, κάτι όμως το οποίο είναι αβέβαιο." + }, + { + "question": "Αν έχω αποκλειστεί στο Nintendo Network, θα παραμείνω αποκλεισμένος στο Pretendo;", + "answer": "Δεν έχουμε πρόσβαση στη λίστα αποκλεισμένων του Nintendo Network, άρα κανένας χρήστης δεν θα είναι αποκλεισμένος στην υπηρεσία μας. Παρ' όλα αυτά, θα υπάρχουν κανόνες κατά τη χρήση της υπηρεσίας μας και η μη τήρηση αυτών των κανόνων μπορεί να οδηγήσει σε αποκλεισμό." + }, + { + "answer": "Το Wii ήδη έχει custom servers παρεχόμενους από το Wiimmfi. Αυτή τη στιγμή το Switch δεν είναι στο στόχαστρο μας αφού είναι υπηρεσία επί πληρωμή και τελείως διαφορετικό από το Nintendo Network.", + "question": "Το Pretendo θα υποστηρίξει το Wii/Switch;" + }, + { + "answer": "Ναι, θα χρειαστείς να τροποποιήσεις τη συσκευή σου για να συνδεθείς. Όμως, χρειάζεσαι μόνο πρόσβαση στο Homebrew Launcher (π.χ Haxchi, Coldboot Haxchi, ή web browser exploit) στο Wii U, με πληροφορίες στο πως θα συνδεθείςστο 3DS να έρχονται σε μελλοντική ημερομηνία.", + "question": "Θα χρειαστώ hacks για να συνδεθώ;" + } + ], + "title": "Συχνές ερωτήσεις" + }, + "specialThanks": { + "title": "Ιδιαίτερα ευχαριστώ", + "text": "Χωρίς αυτά τα άτομα, το Pretendo δεν θα ήταν εδώ που είναι τώρα." + }, + "account": { + "settings": { + "settingCards": { + "userSettings": "Ρυθμίσεις χρήστη", + "serverEnv": "Περιβάλλον server", + "beta": "Beta", + "upgradePrompt": "Οι Beta servers είναι αποκλειστικά για beta testers.
Για να γίνεις beta tester, ανάβάθμισε το λογαριασμό σου.", + "hasAccessPrompt": "Η τρέχουσα κατηγορία λογαριασμού σου, σου δίνει πρόσβαση στον beta server. Τέλεια!", + "fullSignInHistory": "Δες ολόκληρο το ιστορικό σύνδεσης", + "discord": "Discord", + "newsletterPrompt": "Λάβε ενημερώσεις του project μέσω email (μπορείς να αποσυρθείς οποιαδήποτε στιγμή)", + "nickname": "Ψευδώνυμο", + "passwordPrompt": "Συμπλήρωσε τον κωδικό PNID για να κατεβάσεις τα αρχεία Cemu", + "no_signins_notice": "Το ιστορικό σύνδεσης δεν παρακολουθείται επί του παρόντος. Δες ξανά αργότερα!", + "no_newsletter_notice": "Το ενημερωτικό δελτίο δεν είναι διαθέσιμο επί του παρόντος. Δες ξανά αργότερα!", + "no_edit_from_dashboard": "Η επεξεργασία ρυθμίσεων PNID από το πίνακα ελέγχου χρήστη είναι προς το παρόν μη διαθέσιμη. Παρακαλώ ενημέρωσε τις ρυθμίσεις χρήστη από τη συνδεδεμένη σου κονσόλα", + "country": "Χώρα/Περιοχή", + "timezone": "Ζώνη ώρας", + "production": "Παραγωγή", + "signInSecurity": "Σύνδεση και ασφάλεια", + "password": "Κωδικός", + "signInHistory": "Ιστορικό σύνδεσης", + "otherSettings": "Λοιπές ρυθμίσεις", + "newsletter": "Ενημερωτικό δελτίο", + "birthDate": "Ημερομηνία γέννησης", + "gender": "Φύλο", + "profile": "Προφίλ", + "email": "Ηλεκτρονική διεύθυνση (E-Mail)", + "passwordResetNotice": "Μετά την αλλαγή του κωδικού σου, θα αποσυνδεθείς από όλες τις συσκευές.", + "removeDiscord": "Αφαίρεση λογαριασμού Discord", + "connectedToDiscord": "Συνδεδεμένος στο Discord ως", + "noDiscordLinked": "Δεν υπάρχει συνδεδεμένος λογαριασμός Discord", + "linkDiscord": "Σύνδεση λογαριασμού Discord" + }, + "unavailable": "Μη διαθέσιμο", + "upgrade": "Αναβάθμιση λογαριασμού" + }, + "loginForm": { + "detailsPrompt": "Συμπλήρωσε τα στοιχεία του λογαριασμού παρακάτω", + "forgotPassword": "Ξέχασες τον κωδικό σου;", + "login": "Σύνδεση", + "register": "Εγγραφή", + "username": "Όνομα χρήστη", + "password": "Κωδικός", + "confirmPassword": "Επιβεβαίωση κωδικού", + "email": "Ηλεκτρονική διέυθυνση (E-Mail)", + "registerPrompt": "Δεν έχεις λογαριασμό;", + "miiName": "Όνομα Mii", + "loginPrompt": "Έχεις ήδη λογαριασμό;" + }, + "resetPassword": { + "sub": "Συμπλήρωσε παρακάτω το νέο κωδικό σου", + "header": "Επαναφορά Κωδικού", + "password": "Κωδικός", + "confirmPassword": "Επιβεβαίωση κωδικού", + "submit": "Υποβολή" + }, + "forgotPassword": { + "input": "Ηλεκτρονική διεύθυνση (E-Mail) ή PNID", + "sub": "Συμπλήρωσε παρακάτω τη διεύθυνση Email/PNID", + "submit": "Υποβολή", + "header": "Ξέχασα τον κωδικό μου" + }, + "account": "Λογαριασμός", + "accountLevel": [ + "Τυπικό", + "Δοκιμαστής", + "Επόπτης", + "Προγραμματιστής" + ], + "banned": "Αποκλεισμένος" + }, + "credits": { + "text": "Γνώρισε την ομάδα που αναπτύσσει το project", + "title": "Η ομάδα" + }, + "discordJoin": { + "text": "Μπές στον Discord server μας για να λαμβάνεις τις νεότερες ενημερώσεις μας πάνω στο project.", + "widget": { + "text": "Λάβε ενημερώσεις ζωντανού χρόνου για την πρόοδο μας", + "button": "Μπες στο server" + }, + "title": "Μείνε ενήμερος" + }, + "footer": { + "widget": { + "captions": [ + "Θες να μένεις ενημερωμένος;", + "Γίνε μέλος του Discord server μας!" + ], + "button": "Γίνε μέλος!" + }, + "bandwidthRaccoonQuotes": [ + "Είμαι ο Bandwidth το ρακούν και μου αρέσει να δαγκώνω τα καλώδια που συνδέονται στους servers του Pretendo Network. Μιαμ!", + "Πολλοί μας ρωτούν αν θα έχουμε νομικά προβλήματα με τη Nintendo με όλο αυτό, οπότε είμαι στην ευχάριστη θέση να σας πω ότι η θεία μου εργάζεται στη Nintendo και λέει ότι δεν υπάρχει πρόβλημα.", + "Το Webkit v537 είναι η καλύτερη εκδοχή του Webkit για το Wii U. Όχι, δεν θα φέρουμε το Chrome στο Wii U.", + "Ανυπομονώ το ρολόι να πάει στις 03:14:08 Συντονισμένης Παγκόσμιας Ώρας στις 19 Ιανουαρίου του 2038!", + "Το Wii U είναι πραγματικά μια υποτιμημένη κονσόλα: Οι διαφημίσεις του ήταν πολύ κακές, αλλά η ίδια κονσόλα ήταν τέλεια. Χμ, περίμενε ένα δευτερόλεπτο, δεν είμαι σίγουρος γιατί, αλλά το Gamepad μου δεν συνδέεται στο Wii μου.", + "Το main theme του Super Mario World 2 - Yoshi's Island είναι ό,τι καλυτερο και δεν μεταπείθεις με την καμία.", + "Οι αγαπημένες μου κυκλοφορίες του Nintendo Switch είναι το Nintendo Switch Online + Expansion Pack, Nintendo Switch Online + Rumble Pak, Nintendo Switch Online + Offline Play Pack, Nintendo Switch Online + Yet Another Port Pack, και Nintendo Switch Online + Dr. Kawashima's Brain Training / Brain Age \"Σου Αρεσε Πολύ Το Χ Παιχνίδι Wii U Virtual Console , Οπότε Το Φέρνουμε Πίσω\" Pack. Είναι προφανές πως η Nintendo ενδιαφέρεται.", + "Ήξερες ότι το \"Ξέρεις ότι η Ash, νά' ναι καλά η ψυχούλα, κάνει όλη μέρα UwU\" είναι ο ευγενικός τρόπος να πείς \"Η Ash κάνει UwU συνέχεια και είναι περίεργο και χαζό και μακάρι να μην το έκανε;\"", + "Το πρώτο βίντεω στο κανάλι μου!! περίμενα να κάνω βίντεος για πολι καιρό αλλά το λαπτοπ μου ετρεθε πολυ κακά και δεν μπορουσα να τρεχω το fraps, skype κι minecraft ολα μαζι. αλλα αυτο τελιωσε! με λιγο βοηθεια απο το δασκαλο πληροφορικισ μου το λαπτ0π μου τρεχι πολυ καλυτερα και μπορο να καταγράψω τορα! ευχομαι να το απολαυσετε και αν ναι, παρ@καλο καντε λαεκ και σαμπσκραϊμπ!" + ], + "socials": "Κοινωνικά δίκτυα", + "usefulLinks": "Χρήσιμοι σύνδεσμοι" + }, + "blogPage": { + "title": "Blog", + "description": "Οι τελευταίες ενημερώσεις μας συνοπτικά. Αν επιθυμείς να βλέπεις συχνότερες ενημερώσεις, μπορείς να μας υποστηρίξεις.", + "published": "Δημοσιευμένο από", + "publishedOn": "στις" + }, + "upgrade": { + "description": "Η επίτευξη του μηνιαίου στόχου θα καταστήσει το Pretendo μια εργασία πλήρους απασχόλησης, παρέχοντας ενημερώσεις καλύτερης ποιότητας με ταχύτερο ρυθμό.", + "month": "μήνα", + "unsubConfirm": "Κατάργηση", + "changeTierConfirm": "Αλλαγή κατηγορίας", + "back": "Πίσω", + "tierSelectPrompt": "Διάλεξε μια κατηγορία", + "title": "Αναβάθμιση", + "unsub": "Κατάργηση συνδρομής", + "unsubPrompt": "Είσαι σίγουρος ότι θέλεις να καταργήσεις τη συνδρομή σου από tiername; Θα χάσεις πρόσβαση σε όλα τα οφέλη που προσφέρονται σε αυτή τη κατηγορία.", + "changeTier": "Αλλαγή κατηγορίας", + "changeTierPrompt": "Είσαι σίγουρος ότι θέλεις να καταργήσεις τη συνδρομή σου από oldtiername και να εγγραφείς στο newtiername;" + }, + "donation": { + "progress": "$${totd} από$${goald}/μήνα, ${perc}% του μηνιαίου στόχου.", + "upgradePush": "Για να γίνεις συνδρομητής και να αποκτήσεις πρόσβαση σε κούλ οφέλη, επισκέψου την σελίδα αναβάθμισης." + }, + "localizationPage": { + "description": "Επικόλλησε έναν σύνδεσμο σε μια δημόσια προσβάσιμη τοποθεσία JSON για να τη δοκιμάσεις στον ιστότοπο", + "fileInput": "Αρχείο προς δοκιμή", + "button": "Δοκιμαστικό αρχείο", + "filePlaceholder": "https://a.link.to/the_file.json", + "title": "Ας μεταφράσουμε", + "instructions": "Δες οδηγίες μετάφρασης" + }, + "docs": { + "quickLinks": { + "links": [ + { + "header": "Εγκατάσταση του Pretendo", + "caption": "Δες τις οδηγίες προετοιμασίας" + }, + { + "header": "Έλαβες σφάλμα;", + "caption": "Αναζήτησε το εδώ" + } + ], + "header": "Γρήγοροι σύνδεσμοι" + }, + "missingInLocale": "Η σελίδα είναι μη διαθέσιμη στη τοπική γλώσσα σου. Παρακαλώ δές την Αγγλική εκδοχή.", + "search": { + "caption": "Συμπλήρωσε το στο κουτί παρακάτω για να βρεις πληροφορίες για το πρόβλημα σου!", + "no_match": "Δεν βρέθηκαν αποτελέσματα", + "title": "Έλαβες κωδικό σφάλματος;", + "label": "Κωδικός σφάλματος" + }, + "sidebar": { + "install_extended": "Εγκατάσταση του Pretendo", + "install": "Εγκατάσταση", + "search": "Αναζήτηση", + "welcome": "Καλωσόρισες", + "getting_started": "Ξεκινώντας", + "juxt_err": "Κωδικοί σφάλματος - Juxt" + } + }, + "showcase": { + "text": "Το project μας έχει πολλές πτυχές. Εδώ είναι μερικές από αυτές.", + "cards": [ + { + "title": "Servers παιχνιδιών", + "caption": "Επαναφέρουμε τα αγαπημένα σου παιχνίδια και το περιεχόμενο τους μέσω custom servers." + }, + { + "title": "Juxtaposition", + "caption": "Μια μοντέρνα επανεφεύρεση του Miiverse" + }, + { + "caption": "Παίξε τα αγαπημένα σου παιχνίδια από το Wii U ακόμα και χωρίς κονσόλα!", + "title": "Υποστήριξη Cemu" + } + ], + "title": "Τι δημιουργούμε" + }, + "progressPage": { + "description": "Τσέκαρε την πρόοδο και τους στόχους του project! (Ενημερώνεται κάθε μία ώρα περίπου, δεν αντικατοπτρίζει ΟΛΟΥΣ τους στόχους ή την πρόοδο του έργου)", + "title": "Η πρόοδος μας" + }, + "modals": { + "cancel": "Ακύρωση", + "close": "Κλείσιμο", + "confirm": "Επιβεβαίωση" } } diff --git a/locales/en@uwu.json b/locales/en@uwu.json index 386a5fd..aae7742 100644 --- a/locales/en@uwu.json +++ b/locales/en@uwu.json @@ -14,7 +14,7 @@ "captions": { "credits": "see kittehs", "about": "seez infomations", - "faq": "frekuent questionz askd", + "faq": "frekuentwy askud kweshtunz", "progress": "see projekt progrez", "blog": "new thingzz, but smol" } @@ -31,9 +31,9 @@ "text": "pretender iz fre an sethru replazement 4 meanie netwrk's servrs for thre d s an wee yu, letin you plae gaems aftr dey leav" }, "aboutUs": { - "title": "whut doez it do?!!?!!?!", + "title": "whut doez whee due?!!?!!?!", "paragraphs": [ - "pretender iz a sethru projekt 4 makin zombiz of teh thre d s an wee yu onlien wif shinie lookinz", + "pretender iz a sethru projekt 4 makin zombiz of teh thre d s an wee yu onlien wif shinie lookinz.", "bcuz it iz fre an sethru, it livez forevahh!!" ] }, @@ -54,19 +54,19 @@ }, { "question": "how doez kitteh use pretender??", - "answer": "pretender iz only 4 kittehz wif subzcription!! soemtimez pretender haz open betaz 4 u tho! wil be fre latr." + "answer": "yey!! get startd wif pretender be readng instructionzzz!!" }, { "question": "eta wen 4 gaem??", "answer": "gud question. kitteh haz no idea!! multiple kittehs be workin on stuffs." }, { - "question": "doez pretender work on me faek gaemr!?", - "answer": "yez! anythin that workz wif meanie netwrk workz wif pretender. only cemu haz it tho rite now!" + "question": "eta wen 4 gaem??", + "answer": "pretender workz on gaem when librari cn hold it, w_w dey maek gaem STABEL b4 addin new gaem! nuu ETA!!!!" }, { - "question": "if kitteh ban'd from teh meanie netwrk, iz still ban'd on pretender?", - "answer": "no!! yu is not ban'd! ther is rulez tho, so yu can stil get bananad!!" + "question": "doez pretender work on me faek gaemr!?", + "answer": "yez! anythin that workz wif meanie netwrk workz wif pretender. only cemu haz it tho rite now!" }, { "question": "can kitteh gaem on othr kitteh gaemin??", @@ -74,7 +74,15 @@ }, { "question": "doez kitteh need hax to gaem?!", - "answer": "yez!! kitteh needz hax to gaem. mak sure kitteh press alt f4 4 epik gaemin!!" + "answer": "yez!! kitteh needz hax to gaem, exept wiiu wen SSSL. mak sure kitteh press alt f4 4 epik gaemin!!" + }, + { + "question": "if kitteh ban'd from teh meanie netwrk, iz still ban'd on pretender?", + "answer": "no!! yu is not ban'd! ther is rulez tho, so yu can stil get bananad!!" + }, + { + "question": "wat if wamt to be meanie kitteh? haxx??", + "answer": "only wif ur friendzzz ^.^ kitteh in normal match nu wamt hax. u ban!!" } ], "text": "herez sum questionz yu lik 2 ask!!" @@ -99,11 +107,96 @@ }, "credits": { "title": "dev kittehs", - "text": "see kittehz who maek pretender!!" + "text": "see kittehz who maek pretender!!", + "people": [ + { + "caption": "da big cheez" + }, + { + "caption": "miiveres kitteh!" + }, + { + "caption": "wii u foxish!!!!!" + }, + { + "caption": "rezearch kitteh" + }, + { + "caption": "onlien kitteh ^w^" + }, + { + "caption": "servah debeloper kitteh!!!" + }, + { + "caption": "gaem history saveh kiteh,," + }, + { + "caption": "server dev kitteh o.o" + }, + { + "caption": "website servah kitteh!! ^^" + }, + { + "caption": "deb..ops..? kitteh!" + }, + { + "caption": "servah kitteh n speedi kitteh!" + }, + { + "caption": "duel screeh reseacha!!" + } + ] }, "specialThanks": { "title": "speshul thx", - "text": "theze kittehs helpd!!" + "text": "theze kittehs helpd!!", + "people": [ + { + "name": "geethub contrwibutahs!!!!! uwu", + "caption": "wocawizawitwions n moar!!!!" + }, + { + "caption": "crunchii libwrary dev!!!" + }, + { + "caption": "duel scweeen debeprobah and pachket takher-apahter!" + }, + { + "caption": "we steal their code :3" + }, + { + "special": "speshul thx", + "caption": "gawd of meanine weseawch!!!!" + }, + { + "caption": "icwn designah!!!!" + }, + { + "caption": "gaem reseawchhh n dev!" + }, + { + "caption": "wiiuu pwatchy hacky! ^w^" + }, + { + "caption": "duaaalsccween haxorz!!!! owo" + }, + { + "caption": "servah maker!!! ^u^" + }, + { + "caption": "g-gopah??? gopah??????" + }, + { + "caption": "splooner!" + }, + { + "caption": "splooner,,," + }, + { + "name": "gwitwub fwends!!", + "caption": "dey maek langwage gud u.u" + } + ] }, "discordJoin": { "text": "entr de discord for new infoz from kittehs 4 pretender!!", @@ -132,7 +225,8 @@ "sooper maro wurld too - yoshees is land's theme is amazng!!", "meh favorit nontendo swatch releses hav ben nontendo swatch onlien + expanshun pak, nontendo swatch onlien + rumbly pak, nontendo swatch online + oflin pley pak, nontendo swatch onlin + yet anotha port pak, an nontendo swatch onlin + bren smert trainin pak. yu kan rely tel nontendo kares.", "liek, \"yu kno ash, bles her heawt, she uwus all day\" is the sothern nice wae of sayin \"ash uwus all teh tiem and its realy weird an stupid an i wish they didnt\"", - "Connection terminated. I'm sorry to interrupt you, Elizabeth, if you still even remember that name, But I'm afraid you've been misinformed. You are not here to receive a gift, nor have you been called here by the individual you assume, although, you have indeed been called. You have all been called here, into a labyrinth of sounds and smells, misdirection and misfortune. A labyrinth with no exit, a maze with no prize. You don't even realize that you are trapped. Your lust for blood has driven you in endless circles, chasing the cries of children in some unseen chamber, always seeming so near, yet somehow out of reach, but you will never find them. None of you will. This is where your story ends. And to you, my brave volunteer, who somehow found this job listing not intended for you, although there was a way out planned for you, I have a feeling that's not what you want. I have a feeling that you are right where you want to be. I am remaining as well. I am nearby. This place will not be remembered, and the memory of everything that started this can finally begin to fade away. As the agony of every tragedy should. And to you monsters trapped in the corridors, be still and give up your spirits. They don't belong to you. For most of you, I believe there is peace and perhaps more waiting for you after the smoke clears. Although, for one of you, the darkest pit of Hell has opened to swallow you whole, so don't keep the devil waiting, old friend. My daughter, if you can hear me, I knew you would return as well. It's in your nature to protect the innocent. I'm sorry that on that day, the day you were shut out and left to die, no one was there to lift you up into their arms the way you lifted others into yours, and then, what became of you. I should have known you wouldn't be content to disappear, not my daughter. I couldn't save you then, so let me save you now. It's time to rest - for you, and for those you have carried in your arms. This ends for all of us. End communication." + "Connection terminated. I'm sorry to interrupt you, Elizabeth, if you still even remember that name, But I'm afraid you've been misinformed. You are not here to receive a gift, nor have you been called here by the individual you assume, although, you have indeed been called. You have all been called here, into a labyrinth of sounds and smells, misdirection and misfortune. A labyrinth with no exit, a maze with no prize. You don't even realize that you are trapped. Your lust for blood has driven you in endless circles, chasing the cries of children in some unseen chamber, always seeming so near, yet somehow out of reach, but you will never find them. None of you will. This is where your story ends. And to you, my brave volunteer, who somehow found this job listing not intended for you, although there was a way out planned for you, I have a feeling that's not what you want. I have a feeling that you are right where you want to be. I am remaining as well. I am nearby. This place will not be remembered, and the memory of everything that started this can finally begin to fade away. As the agony of every tragedy should. And to you monsters trapped in the corridors, be still and give up your spirits. They don't belong to you. For most of you, I believe there is peace and perhaps more waiting for you after the smoke clears. Although, for one of you, the darkest pit of Hell has opened to swallow you whole, so don't keep the devil waiting, old friend. My daughter, if you can hear me, I knew you would return as well. It's in your nature to protect the innocent. I'm sorry that on that day, the day you were shut out and left to die, no one was there to lift you up into their arms the way you lifted others into yours, and then, what became of you. I should have known you wouldn't be content to disappear, not my daughter. I couldn't save you then, so let me save you now. It's time to rest - for you, and for those you have carried in your arms. This ends for all of us. End communication.", + "awooooooooooooooooooooooooooooooooooooooooooooo!" ] }, "progressPage": { @@ -186,8 +280,6 @@ "no_signins_notice": "kitteh is not watchin logins... i wil latr!!", "no_edit_from_dashboard": "changin yor kitteh opshuns from interwebs is nono!! do from yor konsole." }, - "downloadFiles": "downlod kitteh datas", - "downloadFilesDescription": "(kitteh datas wil not work on meanie netwrk!!)", "unavailable": "no :(", "upgrade": "become super kitteh" }, @@ -222,7 +314,7 @@ "unsub": "stop being super kitteh :(", "description": "reachin goal givez kittehz muns for devin, gettin better new stuffz fastr!!", "back": "bak", - "unsubPrompt": "are u sur u wanna stop bein tiername?! u will lose all kitteh perkz instantly!!", + "unsubPrompt": "are u sur u wanna stop bein tiername?! u will lose all kitteh perkz immediately!!", "changeTier": "change super kitteh level", "changeTierConfirm": "yezyez, change!!" }, @@ -278,5 +370,8 @@ "donation": { "progress": "$${totd} of $${goald}/munth, ${perc}% of teh monthly goal", "upgradePush": "u wanna become super kitteh and get kool perkz?? upgrade now!!" + }, + "notfound": { + "description": "uh oh! we did a widdle fucky wucky! oopsie daisie! oh noes!!!!!" } } diff --git a/locales/en_GB.json b/locales/en_GB.json index 53a7de2..53ea294 100644 --- a/locales/en_GB.json +++ b/locales/en_GB.json @@ -34,7 +34,7 @@ "title": "About us", "paragraphs": [ "Pretendo is an open-source project that aims to recreate Nintendo Network for the 3DS and Wii U using clean-room reverse engineering.", - "As our services would be both free and open source, they can exist long after the inevitable closure of Nintendo Network." + "Since our services are free and open source, they will exist long into the future." ] }, "progress": { @@ -62,12 +62,12 @@ "answer": "No. Lots of Pretendo's features/services are developed independently (for example, Miiverse may be worked on by one developer while Accounts and Friends is being worked on by another) and therefore we cannot give an overall ETA for how long this will take." }, { - "question": "Does Pretendo work on Cemu/emulators?", - "answer": "Pretendo supports any client that can interact with Nintendo Network. Currently, the only emulator with this kind of functionality is Cemu. Cemu 2.0 officially supports Pretendo under your network account options in the emulator. For information on how to get started with Cemu, check out the documentation.
Citra does not support true online play and thus does not work with Pretendo, and does not show signs of supporting true online play at all. Mikage, a 3DS emulator for PC and mobile devices, may provide support in the future, though this is far from certain." + "question": "When will you add more games?", + "answer": "We work on new games once we feel that our backend libraries are ready to support it, and there is developer time available to maintain it. A lot of our work goes into stabilising and completing our existing games - we want to get the best experience possible in those before we move on to new titles. Since new work comes up all the time, we cannot make any estimate of when that would be." }, { - "question": "If I am banned on Nintendo Network, will I stay banned when using Pretendo?", - "answer": "We will not have access to Nintendo Network's bans, and all users will not be banned on our service. However, we will have rules to follow when using the service and failing to follow these rules could result in a ban." + "question": "Does Pretendo work on Cemu/emulators?", + "answer": "Cemu 2.1 officially supports Pretendo under your network account options in the emulator. For information on how to get started with Cemu, check out the documentation.
Some 3DS emulators or forks might support us, but we do not have any official recommendation or setup instructions at this time. The final builds of Citra do not support Pretendo." }, { "question": "Will Pretendo support the Wii/Switch?", @@ -76,6 +76,14 @@ { "question": "Will I need hacks to connect?", "answer": "For the best experience on consoles, you will need to hack your system - specifially Aroma for Wii U and Luma3DS for 3DS. However, on Wii U, the hackless SSSL method is also available with limited functionality. See our setup instructions for details." + }, + { + "question": "If I am banned on Nintendo Network, will I stay banned when using Pretendo?", + "answer": "We do not have access to Nintendo Network's bans, so all Nintendo Network users are not banned. However, we have rules to follow when using the service and failing to follow these rules could result in a ban." + }, + { + "question": "Can I use cheats or mods online with Pretendo?", + "answer": "Only in private matches - gaining an unfair advantage or disrupting the online experience with people who didn't consent (as in public matches) is a bannable offence. We regularly apply account and console bans to both Wii U and 3DS systems. Pretendo uses extra security measures that make traditional 'unban' methods like changing your serial number ineffective." } ] }, @@ -99,11 +107,172 @@ }, "credits": { "title": "The team", - "text": "Meet the team behind the project" + "text": "Meet the team behind the project", + "people": [ + { + "name": "Jonathan Barrow (jonbarrow)", + "caption": "Project owner and lead developer", + "picture": "https://github.com/jonbarrow.png", + "github": "https://github.com/jonbarrow" + }, + { + "picture": "https://github.com/caramelkat.png", + "github": "https://github.com/CaramelKat", + "name": "Jemma (CaramelKat)", + "caption": "Miiverse research and development" + }, + { + "picture": "https://github.com/ashquarky.png", + "github": "https://github.com/ashquarky", + "caption": "Wii U research and patch development", + "name": "quarky" + }, + { + "name": "SuperMarioDaBom", + "github": "https://github.com/SuperMarioDaBom", + "caption": "Systems research and server architecture", + "picture": "https://github.com/supermariodabom.png" + }, + { + "name": "pinklimes", + "caption": "Web development", + "picture": "https://github.com/gitlimes.png", + "github": "https://github.com/gitlimes" + }, + { + "github": "https://github.com/shutterbug2000", + "name": "Shutterbug2000", + "caption": "Systems research and server development", + "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128" + }, + { + "name": "Billy", + "caption": "Preservationist and server architecture", + "picture": "https://github.com/InternalLoss.png", + "github": "https://github.com/InternalLoss" + }, + { + "caption": "Systems research and server development", + "picture": "https://github.com/danielectra.png", + "name": "DaniElectra", + "github": "https://github.com/DaniElectra" + }, + { + "name": "niko", + "caption": "Web and server development", + "picture": "https://github.com/hauntii.png", + "github": "https://github.com/hauntii" + }, + { + "picture": "https://github.com/MatthewL246.png", + "github": "https://github.com/MatthewL246", + "name": "MatthewL246", + "caption": "DevOps and community work" + }, + { + "name": "wolfendale", + "caption": "Server development and optimisation", + "picture": "https://github.com/wolfendale.png", + "github": "https://github.com/wolfendale" + }, + { + "name": "TraceEntertains", + "caption": "3DS patch development and research", + "picture": "https://github.com/TraceEntertains.png", + "github": "https://github.com/TraceEntertains" + } + ] }, "specialThanks": { "title": "Special thanks", - "text": "Without these people. Pretendo wouldn't be where it is today." + "text": "Without these people. Pretendo wouldn't be where it is today.", + "people": [ + { + "name": "GitHub contributors", + "caption": "Localisations and other contributions", + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", + "github": "https://github.com/PretendoNetwork" + }, + { + "github": "https://github.com/superwhiskers", + "name": "superwhiskers", + "caption": "crunch library development", + "picture": "https://github.com/superwhiskers.png" + }, + { + "caption": "3DS development and NEX dissector", + "picture": "https://github.com/Stary2001.png", + "github": "https://github.com/Stary2001", + "name": "Stary" + }, + { + "github": "https://twitter.com/rverseClub", + "name": "rverse", + "caption": "Miiverse information sharing", + "picture": "https://github.com/rverseTeam.png" + }, + { + "caption": "Research on Nintendo datastructures", + "name": "Kinnay", + "special": "Special thanks", + "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", + "github": "https://github.com/Kinnay" + }, + { + "name": "NinStar", + "caption": "Icons for the Mii Editor and Juxt reactions", + "picture": "https://github.com/ninstar.png", + "github": "https://github.com/ninstar" + }, + { + "name": "Rambo6Glaz", + "caption": "Console research and game servers", + "picture": "https://github.com/EpicUsername12.png", + "github": "https://github.com/EpicUsername12" + }, + { + "caption": "Wii U patch development", + "picture": "https://github.com/GaryOderNichts.png", + "name": "GaryOderNichts", + "github": "https://github.com/GaryOderNichts" + }, + { + "name": "zaksabeast", + "caption": "3DS patch creator", + "github": "https://github.com/zaksabeast", + "picture": "https://cdn.discordapp.com/avatars/219324395707957248/c62573fbd4d26c8b4724f54413df6960.png?size=128" + }, + { + "name": "mrjvs", + "caption": "Server architecture", + "picture": "https://github.com/mrjvs.png", + "github": "https://github.com/mrjvs" + }, + { + "caption": "Server architecture", + "picture": "https://github.com/binaryoverload.png", + "github": "https://github.com/binaryoverload", + "name": "binaryoverload" + }, + { + "name": "Simonx22", + "caption": "Splatoon rotations and research", + "picture": "https://github.com/Simonx22.png", + "github": "https://github.com/Simonx22" + }, + { + "caption": "Splatoon rotations and research", + "picture": "https://github.com/OatmealDome.png", + "name": "OatmealDome", + "github": "https://github.com/OatmealDome" + }, + { + "name": "GitHub contributors", + "caption": "Localizations and other contributions", + "github": "https://github.com/PretendoNetwork", + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png" + } + ] }, "discordJoin": { "title": "Stay up to date", @@ -132,7 +301,8 @@ "Super Mario World 2 - Yoshi's Island's main theme is an absolute bop and there's no way you're going to convince me otherwise.", "My favourite Nintendo Switch releases have been Nintendo Switch Online + Expansion Pack, Nintendo Switch Online + Rumble Pak, Nintendo Switch Online + Offline Play Pack, Nintendo Switch Online + Yet Another Port Pak, and Nintendo Switch Online + Dr. Kawashima's Brain Training / Brain Age \" You Really Liked The Nintendo Wii U Virtual Console Title, So We're Bringing It Back\" Pack. You can really tell Nintendo cares.", "Like \"You know Ash, bless their heart, they UwU all day\" is the southern nice way of saying \"Ash UwUs all the time and it's really weird and stupid and I wish they didn't\"", - "My first video on my channel!! iv been wanting to make videos for a long time now but my laptop ran pretty bad and i couldn't run fraps, skype and minecraft all at once. but now thats over! with some help from my IT teacher my laptop runs alot better and i can record now! i hope y'all enjoy and if you do please like and subscribe!!!" + "My first video on my channel!! iv been wanting to make videos for a long time now but my laptop ran pretty bad and i couldn't run fraps, skype and minecraft all at once. but now thats over! with some help from my IT teacher my laptop runs alot better and i can record now! i hope y'all enjoy and if you do please like and subscribe!!!", + "Looks Good To Me" ] }, "progressPage": { @@ -174,8 +344,6 @@ "password": "Password" }, "settings": { - "downloadFiles": "Download account files", - "downloadFilesDescription": "(will not work on Nintendo Network)", "upgrade": "Upgrade account", "unavailable": "Unavailable", "settingCards": { @@ -228,7 +396,7 @@ "description": "Reaching the monthly goal will make Pretendo a full time job, providing better quality updates at a faster rate.", "month": "month", "tierSelectPrompt": "Select a tier", - "unsubPrompt": "Are you sure you want to unsubscribe from tiername? You will lose access to the perks associated with that tier.", + "unsubPrompt": "Are you sure you want to unsubscribe from tiername? You will immediately lose access to the perks associated with that tier.", "changeTier": "Change tier", "changeTierPrompt": "Are you sure you want to unsubscribe from oldtiername and subscribe to newtiername?" }, @@ -278,5 +446,8 @@ "cancel": "Cancel", "confirm": "Confirm", "close": "Close" + }, + "notfound": { + "description": "Oops! We could not find this page." } } diff --git a/locales/en_US.json b/locales/en_US.json index 3c6cc8d..b8ea75d 100644 --- a/locales/en_US.json +++ b/locales/en_US.json @@ -34,7 +34,7 @@ "title": "About us", "paragraphs": [ "Pretendo is an open-source project that aims to recreate Nintendo Network for the 3DS and Wii U using clean-room reverse engineering.", - "As our services would be both free and open source, they can exist long after the inevitable closure of Nintendo Network." + "Since our services are free and open source, they will exist long into the future." ] }, "progress": { @@ -63,7 +63,11 @@ }, { "question": "When will you add more games?", - "answer": "We work on new games once we feel that our backend libraries are ready to support it, and there is developer time available to maintain it. A lot of our work goes into stabilising and completing our existing games - we want to get the best experience possible in those before we move on to new titles. Since new work comes up all the time, we cannot make any estimate of when that would be." + "answer": "We work on new games once we feel that our backend libraries are ready to support it, and there is developer time available to maintain it. A lot of our work goes into stabilizing and completing our existing games - we want to get the best experience possible in those before we move on to new titles. Since new work comes up all the time, we cannot make any estimate of when that would be." + }, + { + "question": "If I use an emulator, will that be enough to use Pretendo?", + "answer": "No. For purposes of security and moderation, if you are using an emulator, you still need a real console. This allows for improved security and more effective enforcement of rules in order to provide a safe and enjoyable experience with our service." }, { "question": "Does Pretendo work on Cemu/emulators?", @@ -79,11 +83,11 @@ }, { "question": "If I am banned on Nintendo Network, will I stay banned when using Pretendo?", - "answer": "We will not have access to Nintendo Network's bans, and all users will not be banned on our service. However, we will have rules to follow when using the service and failing to follow these rules could result in a ban." + "answer": "We do not have access to Nintendo Network's bans, so all Nintendo Network users are not banned. However, we have rules to follow when using the service and failing to follow these rules could result in a ban." }, { "question": "Can I use cheats or mods online with Pretendo?", - "answer": "Only in private matches - gaining an unfair advantage or distrupting the online experience with people who didn't consent (as in public matches) is a bannable offense. We regularly apply account and console bans to both Wii U and 3DS systems. Pretendo uses extra security measures that make traditional 'unban' methods like changing your serial number ineffective." + "answer": "Only in private matches - gaining an unfair advantage or disrupting the online experience with people who didn't consent (as in public matches) is a bannable offense. We regularly apply account and console bans to both Wii U and 3DS systems. Pretendo uses extra security measures that make traditional 'unban' methods like changing your serial number ineffective." } ] }, @@ -344,8 +348,6 @@ "submit": "Submit" }, "settings": { - "downloadFiles": "Download account files", - "downloadFilesDescription": "(will not work on Nintendo Network)", "upgrade": "Upgrade account", "unavailable": "Unavailable", "settingCards": { @@ -395,7 +397,7 @@ "month": "month", "tierSelectPrompt": "Select a tier", "unsub": "Unsubscribe", - "unsubPrompt": "Are you sure you want to unsubscribe from tiername? You will lose access to the perks associated with that tier.", + "unsubPrompt": "Are you sure you want to unsubscribe from tiername? You will immediately lose access to the perks associated with that tier.", "unsubConfirm": "Unsubscribe", "changeTier": "Change tier", "changeTierPrompt": "Are you sure you want to unsubscribe from oldtiername and subscribe to newtiername?", diff --git a/locales/eo_XX.json b/locales/eo_XX.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/locales/eo_XX.json @@ -0,0 +1 @@ +{} diff --git a/locales/es_ES.json b/locales/es_ES.json index e6d56f1..9d6a675 100644 --- a/locales/es_ES.json +++ b/locales/es_ES.json @@ -1,7 +1,7 @@ { "nav": { - "about": "Acerca de", - "faq": "FAQ", + "about": "Acerca de nosotros", + "faq": "Preguntas frecuentes", "docs": "Documentación", "credits": "Créditos", "progress": "Progreso", @@ -9,23 +9,23 @@ "account": "Cuenta", "accountWidget": { "settings": "Ajustes", - "logout": "Cerrar Sesión" + "logout": "Cerrar sesión" }, "donate": "Donar", "dropdown": { "captions": { "credits": "Conoce al equipo", - "about": "Sobre el projecto", - "blog": "Nuestras últimas actualizaciones, resumidas", + "about": "Sobre el proyecto", + "blog": "Un resumen de nuestras últimas actualizaciones", "progress": "Mira el progreso del proyecto y sus metas", - "faq": "Preguntas más preguntadas" + "faq": "Preguntas frecuentes" } } }, "hero": { "subtitle": "Servidores en línea", "title": "Recreados", - "text": "Pretendo es un reemplazamiento gratuito y de código abierto de los servidores de Nintendo para 3DS y Wii U que permite la comunicación en línea incluso después del cierre de los servidores oficiales", + "text": "Pretendo es un reemplazo gratuito y de código abierto de los servidores de Nintendo para 3DS y Wii U que permite la comunicación en línea incluso después del cierre de los servidores oficiales", "buttons": { "readMore": "Leer más" } @@ -55,33 +55,40 @@ }, { "question": "¿Cómo uso Pretendo?", - "answer": "Pretendo no está actualmente en un estado adecuado para el uso público. Sin embargo, en cuanto esté listo podrás usar Pretendo simplemente cargando nuestro parcheador homebrew en tu consola." + "answer": "Para comenzar a utilizar Pretendo Network en 3DS, Wii U o emuladores, consulta nuestras instrucciones de instalación." }, { "question": "¿Sabéis cuándo determinada función/servicio estará listo/a?", "answer": "No. Muchos/as funciones/servicios de Pretendo son desarrolladas independientemente (por ejemplo, un desarrollador puede estar trabajando en Miiverse mientras otro se encarga de las Cuentas y los Amigos) y, por lo tanto, no podemos dar una ETA exacta de cuánto puede tardar en estar listo." }, + { + "question": "¿Cuándo añadirán más juegos?", + "answer": "Trabajamos en nuevos juegos una vez que sentimos que nuestras bibliotecas de backend están listas para soportarlo, y hay tiempo disponible para mantenerlo. Gran parte de nuestro trabajo se dedica a estabilizar y completar nuestros juegos existentes - queremos obtener la mejor experiencia posible en los mismos antes de pasar a nuevos títulos. Dado que se presentan nuevos trabajos todo el tiempo, no podemos hacer ninguna estimación de cuándo sería esto." + }, { "question": "¿Pretendo funciona en Cemu/emuladores?", - "answer": "Pretendo soporta cualquier cliente que puede interactuar con el Nintendo Network. Hasta ahora, el único emulador con este tipo de funcionalidad es Cemu. Cemu 2.0 oficialmente soporta a Pretendo, en las opciones de cuenta en línea en el emulador . Para obtener más información de cómo empezar con Cemu, revisa la documentación.
Citra no soporta verdadero juego en línea, por eso no funciona con Pretendo, y no demuestra señales de que soportará verdadero juego en linea. Mikage, un emulador de 3DS para dispositivos móviles, podría proporcionar soporte en el futuro aunque esto esta lejos de ser cierto." + "answer": "Cemu 2.1 soporta oficialmente Pretendo bajo las opciones de su cuenta de red en el emulador. Para obtener información sobre cómo empezar con Cemu, consulte la documentación.
Algunos emuladores o bifurcaciones de 3DS podrían ser compatibles con nosotros, pero no tenemos ninguna recomendación oficial ni instrucciones de configuración en este momento. Las compilaciones finales de Citra no soportan Pretendo." }, { - "question": "Si estoy baneado en Nintendo Network, ¿seguiré baneado al usar Pretendo?", - "answer": "No tenemos acceso a los baneos de Nintendo Network motivo por el nadie estará baneado en nuestros servidores al principio. Sin embargo, tendremos reglas a seguir al acceder a nuestros servicios y no hacerlo resultará en un baneo." - }, - { - "question": "¿Pretendo soportará Wii/Switch?", - "answer": "La Wii ya tiene servidores en línea personalizados de parte de Wiimmfi. No tenemos planeado trabajar con Switch ya que sus servidores son de pago y completamente diferentes a los de Nintendo Network." + "question": "¿Pretendo será compatible con la Wii/Switch?", + "answer": "La Wii ya tiene servidores en línea personalizados por parte de Wiimmfi. No tenemos planeado trabajar con la Switch ya que sus servicios son de pago y completamente diferentes a los de Nintendo Network." }, { "question": "¿Necesitaré modificar mi consola para conectarme?", - "answer": "Sí, necesitas modificar tu consola para conectarte. Sin embargo, en Wii U solo necesitas acceso al Homebrew Launcher (p.e. Haxchi, Coldboot Haxchi, o el exploit web). La información sobre como conectarse con una 3DS llegará posteriormente." + "answer": "Para obtener la mejor experiencia en consolas necesitarás modificar tu sistema, especificamente Aroma en Wii U y Luma3DS en 3DS. No obstante, en Wii U, el metodo sin modificación SSSL también está disponible con funcionalidad limitada. Consulte nuestras instrucciones de instalación para más detalles." + }, + { + "question": "Si estoy baneado en Nintendo Network, ¿seguiré baneado al usar Pretendo?" + }, + { + "question": "¿Puedo usar trucos o mods en línea con Pretendo?", + "answer": "Solo en partidas privadas. Ganar una ventaja injusta o interrumpir la experiencia online de gente que no ha dado su consentimiento (como en partidas públicas) es una ofensa baneable. Aplicamos regularmente baneos tanto de cuentas como de consolas en Wii U y 3DS. Pretendo usa medidas de seguridad extra que hacen inefectivos los metodos tradicionales de esquivar el ban como cambiar tu número de serie." } ] }, "showcase": { "title": "Qué hacemos", - "text": "Nuestro proyecto se compone de muchas cosas. Estas son algunas de ellas.", + "text": "Nuestro proyecto tiene muchos componentes. Estos son algunos de ellos.", "cards": [ { "title": "Servidores de juegos", @@ -89,21 +96,174 @@ }, { "title": "Juxtaposition", - "caption": "Un version re-imaginada de Miiverse, como si hubiera sido creada en la era moderna." + "caption": "Un versión reimaginada de Miiverse, como si hubiera sido creado hoy en día." }, { - "title": "Soporte para Cemu", + "title": "Compatibilidad con Cemu", "caption": "¡Juega a tus títulos de Wii U favoritos incluso sin una consola!" } ] }, "credits": { "title": "Equipo", - "text": "Conoce al equipo tras el proyecto" + "text": "Conoce al equipo tras el proyecto", + "people": [ + { + "name": "Jonathan Barrow (jonbarrow)", + "caption": "Dueño del proyecto y desarrollador principal", + "picture": "https://github.com/jonbarrow.png", + "github": "https://github.com/jonbarrow" + }, + { + "github": "https://github.com/CaramelKat", + "name": "Jemma (CaramelKat)", + "caption": "Investigación y desarrollo de Miiverse", + "picture": "https://github.com/caramelkat.png" + }, + { + "picture": "https://github.com/ashquarky.png", + "github": "https://github.com/ashquarky", + "name": "quarky", + "caption": "Investigación de Wii U y desarrollo de parches" + }, + { + "picture": "https://github.com/supermariodabom.png", + "name": "SuperMarioDaBom", + "caption": "Investigación de sistemas y arquitectura del servidor", + "github": "https://github.com/SuperMarioDaBom" + }, + { + "name": "pinklimes", + "caption": "Desarrollo web", + "picture": "https://github.com/gitlimes.png", + "github": "https://github.com/gitlimes" + }, + { + "name": "Shutterbug2000", + "caption": "Investigación de sistemas y desarrollo del servidor", + "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", + "github": "https://github.com/shutterbug2000" + }, + { + "github": "https://github.com/InternalLoss", + "caption": "Conservacionista y arquitectura del servidor", + "picture": "https://github.com/InternalLoss.png", + "name": "Billy" + }, + { + "name": "DaniElectra", + "caption": "Investigación de sistemas y desarrollo del servidor", + "picture": "https://github.com/danielectra.png", + "github": "https://github.com/DaniElectra" + }, + { + "name": "niko", + "caption": "Desarrollo de web y servidor", + "picture": "https://github.com/hauntii.png", + "github": "https://github.com/hauntii" + }, + { + "name": "MatthewL246", + "caption": "DevOps y trabajo comunitario", + "picture": "https://github.com/MatthewL246.png", + "github": "https://github.com/MatthewL246" + }, + { + "caption": "Desarrollo y optimización de servidor", + "picture": "https://github.com/wolfendale.png", + "github": "https://github.com/wolfendale", + "name": "wolfendale" + }, + { + "name": "TraceEntertains", + "caption": "Desarrollo e investigación de parches en 3DS", + "github": "https://github.com/TraceEntertains", + "picture": "https://github.com/TraceEntertains.png" + } + ] }, "specialThanks": { "title": "Agradecimientos especiales", - "text": "Sin ellos, Pretendo no sería lo que es hoy." + "text": "Sin ellos, Pretendo no sería lo que es hoy.", + "people": [ + { + "name": "Contribuidores en GitHub", + "caption": "Traducciones y otras contribuciones", + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", + "github": "https://github.com/PretendoNetwork" + }, + { + "picture": "https://github.com/superwhiskers.png", + "name": "superwhiskers", + "github": "https://github.com/superwhiskers" + }, + { + "github": "https://github.com/Stary2001", + "caption": "Desarrollo en 3DS y disección en NEX", + "name": "Stary", + "picture": "https://github.com/Stary2001.png" + }, + { + "caption": "Intercambio de información de Miiverse", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub", + "name": "rverse" + }, + { + "name": "Kinnay", + "caption": "Investigación de estructuras de datos de Nintendo", + "special": "Agradecimientos especiales", + "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", + "github": "https://github.com/Kinnay" + }, + { + "name": "NinStar", + "caption": "Iconos del Editor Mii y reacciones de Juxt", + "picture": "https://github.com/ninstar.png", + "github": "https://github.com/ninstar" + }, + { + "name": "Rambo6Glaz", + "caption": "Investigación de consolas y servidores de juegos", + "picture": "https://github.com/EpicUsername12.png", + "github": "https://github.com/EpicUsername12" + }, + { + "name": "GaryOderNichts", + "caption": "Desarrollo de parches en Wii U", + "picture": "https://github.com/GaryOderNichts.png", + "github": "https://github.com/GaryOderNichts" + }, + { + "name": "zaksabeast", + "picture": "https://cdn.discordapp.com/avatars/219324395707957248/c62573fbd4d26c8b4724f54413df6960.png?size=128", + "github": "https://github.com/zaksabeast", + "caption": "Creador de parches 3DS" + }, + { + "name": "mrjvs", + "picture": "https://github.com/mrjvs.png", + "github": "https://github.com/mrjvs" + }, + { + "picture": "https://github.com/binaryoverload.png", + "github": "https://github.com/binaryoverload" + }, + { + "picture": "https://github.com/Simonx22.png", + "github": "https://github.com/Simonx22", + "name": "Simonx22" + }, + { + "name": "OatmealDome", + "picture": "https://github.com/OatmealDome.png", + "github": "https://github.com/OatmealDome" + }, + { + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", + "github": "https://github.com/PretendoNetwork" + } + ] }, "discordJoin": { "title": "Mantente al día", @@ -125,7 +285,7 @@ }, "bandwidthRaccoonQuotes": [ "Soy Bandwidth el Mapache y me encanta morder los cables que van a los servidores de Pretendo Network. ¡mmm!", - "Muchas personas nos preguntan si podríamos tener problemas legales con Nintendo por esto; pues me alegro de anunciar que mi tía trabaja en Nintendo y me dijo que no pasa nada.", + "Muchas personas nos preguntan si podríamos tener problemas legales con Nintendo por esto. Me alegra anunciar que mi tía trabaja en Nintendo y me dijo que no pasaba nada.", "Webkit v537 es la mejor versión de Webkit para la Wii U. No, no vamos a portear Chrome a la Wii U", "¡No puedo esperar a que el reloj llegue a la 03:14:08 UTC el 19 de enero de 2038!", "La Wii U es en realidad un sistema subestimado: los comerciales eran realmente malos, pero la consola es genial. Eh, espera un segundo, no estoy seguro de por qué, pero mi GamePad no se conecta a mi Wii.", @@ -136,7 +296,7 @@ ] }, "progressPage": { - "title": "Progreso", + "title": "Nuestro Progreso", "description": "¡Comprueba el progreso y las metas pendientes! (Se actualiza cada hora aproximadamente, así que no refleja TODAS nuestras metas o el progreso total)" }, "blogPage": { @@ -146,7 +306,7 @@ "publishedOn": "en" }, "localizationPage": { - "title": "Vamos a localizar", + "title": "Vamos a traducir", "description": "Pega un enlace a una localización JSON accesible pulicamente para probarla en el sitio", "instructions": "Ver instrucciones de localización", "fileInput": "Archivo a probar", @@ -171,11 +331,11 @@ "search": { "title": "¿Tienes un código de error?", "caption": "¡Escribe el código de error del cuadro para obtener información de tu problema!", - "label": "Codigo de error", + "label": "Código de error", "no_match": "No se encontraron coincidencias" }, "sidebar": { - "getting_started": "Empezando", + "getting_started": "Para empezar", "install_extended": "Instalar Pretendo", "search": "Buscar", "juxt_err": "Codigos de error - Juxt", @@ -207,7 +367,7 @@ "timezone": "Zona horaria", "serverEnv": "Entorno del servidor", "beta": "Beta", - "hasAccessPrompt": "Tu rango actual tiene acceso a los servidores beta. Cool!", + "hasAccessPrompt": "Tu rango actual tiene acceso a los servidores beta. ¡Genial!", "signInSecurity": "Inicio de sesión y seguridad", "email": "Correo electrónico", "password": "Contraseña", @@ -226,12 +386,10 @@ "nickname": "Apodo", "upgradePrompt": "Los servidores beta son exclusivos para los beta testers.
Para convertirte en un beta tester, actualiza a un nivel de cuenta superior.", "userSettings": "Ajustes de usuario", - "no_signins_notice": "El historial de inicios de sesión no es vigilado. Vuelve más tarde!", - "no_newsletter_notice": "Boletín no disponible actualmente. Vuelva a consultar más tarde", + "no_signins_notice": "El historial de inicios de sesión no es vigilado. ¡Vuelve más tarde!", + "no_newsletter_notice": "Boletín no disponible actualmente. Vuelve a intentarlo más tarde", "no_edit_from_dashboard": "La edición de la configuración de PNID desde el panel del usuario no está disponible actualmente. Actualice la configuración de usuario desde su consola de juegos vinculada" }, - "downloadFiles": "Descargar datos de cuenta", - "downloadFilesDescription": "(no funcionara en Nintendo Network)", "upgrade": "Subir de rango", "unavailable": "No disponible" }, @@ -262,7 +420,7 @@ "month": "mes", "tierSelectPrompt": "Selecciona un rango", "unsub": "Cancelar suscripción", - "unsubPrompt": "¿Está seguro de que desea darse de baja de tiername? Perderá el acceso a las ventajas asociadas con ese nivel.", + "unsubPrompt": "¿Está seguro de que desea darse de baja de tiername? Perderá inmediatamente el acceso a las ventajas asociadas con ese nivel.", "unsubConfirm": "Cancelar suscripción", "changeTier": "Cambiar rango", "changeTierPrompt": "¿Está seguro de que desea darse de baja de oldtiername y suscribirse a newtiername?", @@ -278,5 +436,8 @@ "cancel": "Cancelar", "confirm": "Confirmar", "close": "Cerrar" + }, + "notfound": { + "description": "¡Oops! No hemos podido encontrar esta página." } } diff --git a/locales/fi_FI.json b/locales/fi_FI.json index 40073bb..c413800 100644 --- a/locales/fi_FI.json +++ b/locales/fi_FI.json @@ -7,7 +7,7 @@ }, { "question": "Toimiiko olemassaoleva NNID:ni Pretendossa?", - "answer": "Ei, valitettavasti. Olemassa olevat NNID:t eivät tule toimimaan Pretendossa, sillä vain Nintendolla on tiedossaan käyttäjätietosi. Vaikka NNID-PNID tietojensiirto on teoriassa mahdollista, se on riskialtista ja vaatii arkaluonteisia käyttäjätietoja, joita emme halua haltuumme." + "answer": "Valitettavasti ei. Olemassa olevat NNID:t eivät tule toimimaan Pretendossa, sillä vain Nintendolla on tiedossaan käyttäjätietosi. Vaikka NNID-PNID tietojensiirto on teoriassa mahdollista, se on riskialtista ja vaatii arkaluonteisia käyttäjätietoja, joita emme halua haltuumme." }, { "question": "Kuinka käytän Pretendoa?", @@ -58,7 +58,7 @@ }, "donate": "Lahjoita", "blog": "Blogi", - "credits": "Krediitit" + "credits": "Tekijät" }, "hero": { "subtitle": "Pelipalvelimet", @@ -160,8 +160,6 @@ "registerPrompt": "Ei vielä tiliä?" }, "settings": { - "downloadFiles": "Lataa tilin tiedostot", - "downloadFilesDescription": "(ei toimi Nintendo Network:issa)", "upgrade": "Nosta tililuokkaa", "unavailable": "Ei saatavissa", "settingCards": { diff --git a/locales/fr_CA.json b/locales/fr_CA.json new file mode 100644 index 0000000..88192df --- /dev/null +++ b/locales/fr_CA.json @@ -0,0 +1,11 @@ +{ + "nav": { + "faq": "FAQ", + "about": "À propos", + "account": "Compte", + "blog": "Blogue", + "accountWidget": { + "settings": "Paramètres" + } + } +} diff --git a/locales/fr_FR.json b/locales/fr_FR.json index bfe5142..2f3213b 100644 --- a/locales/fr_FR.json +++ b/locales/fr_FR.json @@ -1,6 +1,6 @@ { "nav": { - "about": "À Propos", + "about": "À propos", "faq": "FAQ", "docs": "Documentation", "credits": "Crédits", @@ -16,7 +16,7 @@ "captions": { "about": "À propos du projet", "blog": "Nos dernières mises à jour, en condensé", - "progress": "Vérifier l'avancement et les objectifs du projet", + "progress": "Vérifiez l'avancement et les objectifs du projet", "credits": "Rencontrez l'équipe", "faq": "Questions fréquemment posées" } @@ -25,7 +25,7 @@ "hero": { "subtitle": "Serveurs de jeux", "title": "Recréés", - "text": "Pretendo est une alternative gratuite et open source des serveurs Nintendo pour la 3DS et la Wii U permettant la connectivité en ligne pour tous, y compris après l'arrêt des serveurs officiels", + "text": "Pretendo est une alternative gratuite et open source aux serveurs Nintendo pour la 3DS et la Wii U qui permet à tout utilisateur d'accéder aux services en ligne, y compris après l'arrêt des serveurs officiels", "buttons": { "readMore": "En savoir plus" } @@ -34,7 +34,7 @@ "title": "À propos de nous", "paragraphs": [ "Pretendo est un projet open source qui vise à recréer le Nintendo Network pour la 3DS et la Wii U en utilisant la rétro-ingénierie.", - "Puisque nos services seront à la fois gratuits et open source, ils pourront exister pendant longtemps après l'inévitable fermeture du Nintendo Network." + "Puisque nos services sont à la fois gratuits et open source, ils existeront longtemps." ] }, "progress": { @@ -50,24 +50,24 @@ "answer": "Pretendo est une alternative open source du service Nintendo Network qui vise à créer des serveurs personnalisés pour la famille des consoles Wii U et 3DS. Notre objectif est de préserver les fonctionnalités en ligne de ces consoles, afin de permettre aux joueurs de continuer à jouer à leurs jeux Wii U et 3DS favoris à leur plein potentiel." }, { - "question": "Mes Identifiants Réseau de Nintendo existants fonctionneront-ils sur Pretendo ?", - "answer": "Malheureusement, non. Les NNIDs existants ne fonctionneront pas sur Pretendo car seul Nintendo détient vos données utilisateur. Bien qu'une migration des NNID aux PNID soit théoriquement possible, elle serait risquée et nécessiterait des données personnelles sensibles que nous préférons ne pas stocker." + "question": "Préserverai-je mon identifiant Nintendo Network ?", + "answer": "Malheureusement, non. Les identifiants existants ne seront pas conservés, et Nintendo restera le seul détenteur de vos données personnelles. Bien qu'une extraction des informations soit théoriquement possible, cela reviendrait à récupérer des milliers de données sensibles : chose que nous désapprouvons." }, { "question": "Comment puis-je utiliser Pretendo ?", - "answer": "Pretendo n'est actuellement pas dans un état prêt à être utilisé par le public. Cependant, dès qu'il le sera, vous pourrez utiliser Pretendo en exécutant simplement notre logiciel Homebrew sur votre console." + "answer": "Afin de commencer le paramétrage de Pretendo sur 3DS, Wii U ou un émulateur, veuillez consulter notre guide d'installation !" }, { - "question": "Savez-vous quand fonctionnalité/service sera prêt ?", - "answer": "Non. De nombreuses fonctionnalités/services de Pretendo sont développés indépendamment (par exemple, un développeur peut travailler sur Miiverse tandis qu'un autre travaille sur Comptes et Amis) et nous ne pouvons donc pas donner d'estimation exacte du temps qu'il faudra pour que tout soit prêt." + "question": "Savez-vous quand tel service/fonctionnalité sera prêt ?", + "answer": "Pas du tout ! Si les grands axes du projet ont été fixés en début de développement, beaucoup de sous-objectifs restent indéfinis temporellement et chronologiquement. Le développement des fonctionnalités étant assez libre, nous ne sommes pas en mesure d'estimer l'heure à laquelle le projet intégral aboutira." }, { - "question": "Est-ce que Pretendo fonctionne sur Cemu/émulateurs ?", - "answer": "Pretendo supporte n'importe quel client qui peut interagir avec le Nintendo Network. Actuellement, le seul émulateur avec cette fonctionnalité est Cemu. Cemu 2.0 supporte officiellement Pretendo dans les paramètres de votre compte dans l'émulateur. Pour plus d'informations sur l'utilisation de Cemu, visitez la documentation.
Citra ne supporte pas véritablement le jeu en ligne et ne fonctionne donc pas Pretendo, et l'émulateur ne semble pas présenter de signes d'un support prochain. Mikage, un émulateur 3DS pour appareils mobiles, sera peut-être compatible dans le futur, néanmoins cela reste incertain." + "question": "Quand d'autres jeux seront-ils ajoutés ?", + "answer": "Nous travaillons sur de nouveaux jeux une fois que nous estimons que nos bibliothèques internes sont prêtes à les prendre en charge et que du temps de développement est disponible pour les maintenir. Une grande partie de notre travail consiste à stabiliser et finaliser nos jeux existants – nous voulons offrir la meilleure expérience possible avant de passer à de nouveaux titres. Comme de nouvelles tâches surgissent constamment, nous ne pouvons pas estimer quand cela se produira." }, { - "question": "Si je suis banni du Nintendo Network, resterai-je banni lorsque j'utiliserai Pretendo ?", - "answer": "Nous n'aurons pas accès aux bannissements du Nintendo Network, donc personne ne sera banni de nos serveurs dans un premier temps. En revanche, il y aura des règles à suivre lors de l'utilisation de nos services et le non-respect de ces règles pourrait entraîner des bannissements." + "question": "Pretendo fonctionne-t-il sur Cemu / émulateur ?", + "answer": "La version 2.1 de Cemu prend Pretendo en charge, via les paramètres de connexion de l'émulateur. Pour plus d'information sur comment s'y prendre, référez-vous à la documentation.
Certains émulateurs 3DS prennent charge Pretendo, nous n'avons pas de recommandations officielle ou de procédures d'installation pour l'instant. Le build le plus récent de Citra ne prend pas en charge Pretendo." }, { "question": "Est-ce que Pretendo sera compatible avec la Wii/Switch ?", @@ -75,17 +75,25 @@ }, { "question": "Aurais-je besoin de modifier ma console pour me connecter ?", - "answer": "Oui, vous devrez hack votre appareil afin de vous connecter ; cependant sur Wii U, un accès au Homebrew Launcher est suffisant (avec Haxchi, Coldboot Haxchi, ou même la faille du Navigateur Web). La démarche à suivre pour la 3DS sera fournie ultérieurement." + "answer": "Pour la meilleure expérience possible sur console, Vous aurez besoin de modifier le système de celle-ci — par exemple, grâce à Aroma pour la Wii U ou Luma3DS pour la 3DS. Cependant, avec la Wii U, il est possible d'accéder à Pretendo sans modification, mais avec des fonctionnalités limitées. Voir la documentation pour plus de détails." + }, + { + "answer": "Nous n'avons pas accès à la liste des bannissements du Nintendo Network, ce ne sera donc pas le cas. Il est cependant obligatoire de suivre les règles en vigueur sur notre réseau, sous peine de ban.", + "question": "Si je suis banni du Nintendo Network, est-ce que ce sera le cas avec Pretendo ?" + }, + { + "question": "Puis-je utiliser des cheats ou des mods en ligne avec Pretendo ?", + "answer": "Uniquement lors de parties privées. L'utilisation de triches en public afin d'obtenir (ou de conférer) un avantage déloyal ou de nuire à l'expérience de jeu des autres joueurs, sans leur consentement, est interdite sous peine de bannissement. Nous bannissons régulièrement certains comptes et consoles parmi les utilisateurs Wii U et 3DS. Pretendo emploie de nouvelles mesures de sécurité, de sorte à rendre inefficaces les tentatives d'évasion de ban par changement de numéro de série (ou par d'autres méthodes traditionnelles)." } ] }, "showcase": { "title": "Ce qu'on fait", - "text": "Notre projet comporte de nombreuses composantes. En voici quelques uns.", + "text": "Notre projet comporte de nombreuses composantes. En voici quelques-unes.", "cards": [ { "title": "Serveurs de jeu", - "caption": "Ramener vos jeux et contenus préférés à l'aide de serveurs personnalisés." + "caption": "Ramenez à la vie vos jeux et contenus favoris grâce à nos serveurs personnalisés." }, { "title": "Juxtaposition", @@ -99,14 +107,175 @@ }, "credits": { "title": "L'équipe", - "text": "Rencontrez l'équipe derrière le projet" + "text": "Rencontrez l'équipe derrière le projet", + "people": [ + { + "caption": "Maître du projet, développeur en chef", + "name": "Jonathan Barrow (jonbarrow)", + "picture": "https://github.com/jonbarrow.png", + "github": "https://github.com/jonbarrow" + }, + { + "caption": "Recherche et développement (Miiverse)", + "github": "https://github.com/CaramelKat", + "name": "Jemma (CaramelKat)", + "picture": "https://github.com/caramelkat.png" + }, + { + "caption": "Recherche et développement de patchs Wii U", + "github": "https://github.com/ashquarky", + "name": "quarky", + "picture": "https://github.com/ashquarky.png" + }, + { + "picture": "https://github.com/supermariodabom.png", + "github": "https://github.com/SuperMarioDaBom", + "caption": "Recherche sur les systèmes, architecture serveur", + "name": "SuperMarioDaBom" + }, + { + "name": "pinklimes", + "caption": "Développement web", + "picture": "https://github.com/gitlimes.png", + "github": "https://github.com/gitlimes.png" + }, + { + "caption": "Recherche sur les systèmes, développement serveur", + "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", + "name": "Shutterbug2000", + "github": "https://github.com/shutterbug2000" + }, + { + "caption": "Conservation, architecture serveur", + "name": "Billy", + "github": "https://github.com/InternalLoss", + "picture": "https://github.com/InternalLoss.png" + }, + { + "caption": "Recherche sur les systèmes, développement serveur", + "name": "DaniElectra", + "picture": "https://github.com/danielectra.png", + "github": "https://github.com/DaniElectra" + }, + { + "caption": "Développement serveur et web", + "name": "niko", + "picture": "https://github.com/hauntii.png", + "github": "https://github.com/hauntii" + }, + { + "caption": "DevOps et travail de la communauté", + "name": "MatthewL246", + "picture": "https://github.com/MatthewL246.png", + "github": "https://github.com/MatthewL246" + }, + { + "caption": "Développement serveur et optimisations", + "picture": "https://github.com/wolfendale.png", + "name": "wolfendale", + "github": "https://github.com/wolfendale" + }, + { + "caption": "Recherche et développement de patchs (3DS)", + "picture": "https://github.com/TraceEntertains.png", + "name": "TraceEntertains", + "github": "https://github.com/TraceEntertains" + } + ] }, "specialThanks": { "title": "Remerciements spéciaux", - "text": "Sans eux, Pretendo ne serait pas ce qu'il est aujourd'hui." + "text": "Sans eux, Pretendo ne serait pas ce qu'il est aujourd'hui.", + "people": [ + { + "name": "Contributeurs GitHub", + "caption": "Localisations et autres contributions", + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", + "github": "https://github.com/PretendoNetwork" + }, + { + "caption": "Développement de la bibliothèque crunch", + "name": "superwhiskers", + "picture": "https://github.com/superwhiskers.png", + "github": "https://github.com/superwhiskers" + }, + { + "caption": "Développement 3DS et du dissecteur NEX (nex-dissector)", + "github": "https://github.com/Stary2001", + "picture": "https://github.com/Stary2001.png", + "name": "Stary" + }, + { + "name": "rverse", + "picture": "https://github.com/rverseTeam.png", + "github": "https://twitter.com/rverseClub", + "caption": "Partage d'informations concernant Miiverse" + }, + { + "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", + "github": "https://github.com/Kinnay", + "name": "Kinnay", + "caption": "Recherche sur les structures de données Nintendo", + "special": "Remerciements spéciaux" + }, + { + "caption": "Icônes pour l'éditeur Mii et les réactions Juxt", + "name": "NinStar", + "picture": "https://github.com/ninstar.png", + "github": "https://github.com/ninstar" + }, + { + "name": "Rambo6Glaz", + "picture": "https://github.com/EpicUsername12.png", + "github": "https://github.com/EpicUsername12", + "caption": "Recherches consoles et serveurs de jeu" + }, + { + "caption": "Développement de patch Wii U", + "picture": "https://github.com/GaryOderNichts.png", + "github": "https://github.com/GaryOderNichts", + "name": "GaryOderNichts" + }, + { + "caption": "Créateur de patch 3DS", + "name": "zaksabeast", + "picture": "https://cdn.discordapp.com/avatars/219324395707957248/c62573fbd4d26c8b4724f54413df6960.png?size=128", + "github": "https://github.com/zaksabeast" + }, + { + "caption": "Architecture serveur", + "picture": "https://github.com/mrjvs.png", + "github": "https://github.com/mrjvs", + "name": "mrjvs" + }, + { + "caption": "Architecture serveur", + "name": "binaryoverload", + "picture": "https://github.com/binaryoverload.png", + "github": "https://github.com/binaryoverload" + }, + { + "caption": "Recherches sur Splatoon et rotations de stages", + "name": "Simonx22", + "picture": "https://github.com/Simonx22.png", + "github": "https://github.com/Simonx22" + }, + { + "caption": "Rotations Splatoon et recherches", + "name": "OatmealDome", + "github": "https://github.com/OatmealDome", + "picture": "https://github.com/OatmealDome.png" + }, + { + "name": "Contributeurs GitHub", + "caption": "Localisations et autres contributions", + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", + "github": "https://github.com/PretendoNetwork" + } + ] }, "discordJoin": { - "title": "Tiens-toi à jour", + "title": "Rejoignez-nous", "text": "Rejoignez notre serveur Discord pour obtenir les dernières mises à jour sur le projet.", "widget": { "text": "Recevez des mises à jour en temps réel", @@ -124,20 +293,21 @@ "button": "Rejoignez maintenant !" }, "bandwidthRaccoonQuotes": [ - "Je suis Bandwidth le Raton Laveur, j'adore mordiller les cables de Pretendo Network ! Miam !", - "Beaucoup de gens nous demandent si on aura de problèmes avec Nintendo ; Moi je leur réponds que ma tante qui travaille chez Nintendo a dit qu'elle était d'accord.", + "Je suis Bandwidth le Raton Laveur, un vrai glouton. Mon péché mignon ? Les câbles des serveurs Pretendo, pardi !... Miam !", + "Beaucoup de gens nous demandent si on aura des problèmes juridiques avec Nintendo... J'aime leur répondre que ma tante travaille chez Nintendo et qu'elle m'a dit que c'était OK.", "Webkit v537 est la meilleure version de Webkit pour la Wii U. Non, on ne portera pas Chrome sur la Wii U.", "J'ai hâte qu'on soit le 19 Janvier 2038 à 3h14 !", - "La Wii U n'était pas si nulle que ça, mais les pubs étaient vraiment mauvaises par contre. Ah, attends mon Gamepad n'arrive pas à se connecter à ma Wii.", + "La Wii U n'était pas si nulle que ça, en vrai, c'est juste que les pubs étaient vraiment désastreuses... Hum, c'est étrange, j'ai l'impression que mon Gamepad n'arrive pas à se connecter à ma Wii.", "La musique principale de Super Mario World 2 - Yoshi's Island est la meilleure musique du monde et tu ne peux pas changer mon avis.", "Mes dernières sorties préférée sont le Nintendo Switch Online + Expansion Pack, Nintendo Switch Online + Rumble Pak, Nintendo Switch Online + Offline Play Pack, Nintendo Switch Online + Un Port Sans Importance et Nintendo Switch Online + Dr. Kawashima's Brain Training / Brain Age \"Vous l'aimiez vraiment beaucoup sur la Console Virtuelle de la Wii U\" Pack. On voit que Nintendo a de la passion.", - "\"Tu vois Ash ? Ouais, bah elle fait UwU tout le temps\" est vraiment la façon la plus gentille possible de dire \"Ash fait UwU tout le temps et j'en ai marre\"", - "Ma premièr video ! ! ! !1 ! G toujour voulu en fair mais mon PC étè tou pouri alor ma maman ma aidé a améliorer ses performans et mintenan je peu fair dé vidéos ! alor aboné vou é liké SVP !11 ! !" + "\"Tu vois qui c'est Sasha ? C'est fou elle dit souvent UwU, tu trouves pas ?\" : c'est vraiment la plus douce des façons de dire \"Sasha dit H24 UwU, c'est trop chiant et chelou : à l'aide\". À tous ceux qui connaissent une Sasha... explicitez vos appels au secours, nan ?", + "Ma premièr video ! ! ! !1 ! G toujour voulu en fair mais mon PC étè tou pouri alor ma maman ma aidé a améliorer ses performans et mintenan je peu fair dé vidéos ! alor aboné vou é liké SVP !11 ! !", + "Cela me semble bon" ] }, "progressPage": { "title": "Notre progression", - "description": "Vérifiez l'avancement et les objectifs du projet ! (Mis à jour environ toute les heures, ne reflète pas TOUS nos objectifs et notre progression)" + "description": "Vérifiez l'avancement et les objectifs du projet ! (Fil mis à jour toutes les heures environ. Attention, cela ne reflète qu'un échantillon de notre travail : ce n'est que la partie émergée de l'iceberg dit-on !)" }, "blogPage": { "title": "Blog", @@ -154,25 +324,25 @@ "button": "Tester un fichier" }, "docs": { - "missingInLocale": "Cette page n'est pas disponible dans votre région. Veuillez essayer avec la version anglaise ci-dessous.", + "missingInLocale": "La page que vous consultez n'est pas encore traduite dans votre langue. Nous vous invitons à lire la version anglaise originale ci-dessous.", "quickLinks": { "header": "Liens rapides", "links": [ { "header": "Installer Pretendo", - "caption": "Afficher les instructions de configuration" + "caption": "Afficher les instructions d'installation" }, { "header": "Vous avez une erreur ?", - "caption": "Cherchez-la ici" + "caption": "Recherchez-la ici !" } ] }, "search": { "title": "Avez-vous un code d'erreur ?", "label": "Code d'erreur", - "caption": "Écrivez dans la case ci-dessous pour obtenir des informations sur votre problème !", - "no_match": "Aucun Résultat" + "caption": "Inscrivez-le ci-dessous pour de plus amples informations !", + "no_match": "Aucun résultat" }, "sidebar": { "search": "Recherche", @@ -185,55 +355,53 @@ }, "account": { "loginForm": { - "login": "Connexion", - "detailsPrompt": "Entrez les informations du compte ci-dessous", + "login": "Se connecter", + "detailsPrompt": "Saisissez vos informations de connexion", "password": "Mot de Passe", - "loginPrompt": "Déjà un Compte ?", - "username": "Pseudo", + "loginPrompt": "Compte déjà existant ?", + "username": "Nom d'utilisateur", "register": "S'inscrire", "confirmPassword": "Confirmez le Mot de Passe", "email": "Email", - "miiName": "Nom du Mii", + "miiName": "Surnom du Mii", "forgotPassword": "Mot de Passe oublié ?", - "registerPrompt": "Pas de Compte ?" + "registerPrompt": "Pas encore inscrit ?" }, "settings": { - "downloadFiles": "Télécharger fichiers du compte", "settingCards": { - "gender": "Genre", + "gender": "Sexe", "profile": "Profil", "nickname": "Surnom", "birthDate": "Date de Naissance", "country": "Pays/Région", - "timezone": "Décalage Horaire", + "timezone": "Fuseau horaire", "serverEnv": "Environment du Serveur", "production": "Production", "beta": "Beta", - "upgradePrompt": "Les Serveurs Beta sont exclusifs au Beta Testeurs.
Pour devenir un Beta Testeur, mettez à niveau votre compte à un niveau plus élevé.", + "upgradePrompt": "Les serveurs Beta sont exclusifs aux Beta Testeurs.
Pour devenir un Beta Testeur, mettez à niveau votre compte à un niveau plus élevé.", "hasAccessPrompt": "Votre niveau actuel vous donne accès au serveurs beta. Super !", - "newsletterPrompt": "Recevoir les mises à jour via email (vous pourrez toujours changer ça plus tard)", + "newsletterPrompt": "Recevoir les mises à jour par mail (vous pouvez vous désinscrire à tout moment)", "signInSecurity": "Inscription et sécurité", "email": "Email", "password": "Mot de Passe", "passwordResetNotice": "Une fois votre mot de passe changé, vous serez déconnecté de tous les appareils.", - "signInHistory": "Historique de Connexion", - "fullSignInHistory": "Voir l'historique de connexion complète", - "otherSettings": "Autres Paramètres", + "signInHistory": "Historique de connexion", + "fullSignInHistory": "Voir l'historique de connexion intégral", + "otherSettings": "Autres paramètres", "discord": "Discord", "connectedToDiscord": "Connecté à Discord en tant que", "removeDiscord": "Délier le compte Discord", "noDiscordLinked": "Pas de compte Discord associé.", "linkDiscord": "Associer un compte Discord", - "newsletter": "Nouveautés", + "newsletter": "Newsletter", "passwordPrompt": "Entrez votre mot de passe d'Identifiant Pretendo Network (PNID) pour télécharger les fichiers Cemu", - "no_edit_from_dashboard": "Le changement des préférences du IDNP dans le menu d'utilisateur n'est pas disponsible. Veuillez changer les préférences de profil sur votre console de jeu", + "no_edit_from_dashboard": "La configuration des paramètres PNID depuis le menu utilisateur est actuellement indisponible. Veuillez procéder aux changements depuis votre console.", "userSettings": "Paramètres du Compte", - "no_signins_notice": "L'historique de connexion n'est actuellement pas sauvegardé. Revenez plus tard !", + "no_signins_notice": "L'historique de connexion n'est pas encore établi. Réessayez ultérieurement.", "no_newsletter_notice": "Newsletter non disponible actuellement. Revenez plus tard" }, - "downloadFilesDescription": "(Ne fonctionnera pas avec le Nintendo Network)", "upgrade": "Mettre à Niveau le compte", - "unavailable": "Non disponible" + "unavailable": "Indisponible" }, "banned": "Banni", "accountLevel": [ @@ -264,7 +432,7 @@ "month": "mois", "tierSelectPrompt": "Sélectionnez un niveau", "unsub": "Se désabonner", - "unsubPrompt": "Êtes-vous sûr de vouloir vous désabonner du tiername ? Vous perdrez toutes les récompenses associées à ce niveau.", + "unsubPrompt": "Êtes-vous sûr de vouloir vous désabonner du tiername ? Vous perdrez toutes les récompenses associées à ce niveau immédiatement.", "unsubConfirm": "Se désabonner", "changeTier": "Changer de niveau", "changeTierConfirm": "Changer de niveau", @@ -278,5 +446,8 @@ "cancel": "Annuler", "confirm": "Confirmer", "close": "Fermer" + }, + "notfound": { + "description": "Oups ! Nous n'arrivons pas à trouver cette page." } } diff --git a/locales/ga_IE.json b/locales/ga_IE.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/locales/ga_IE.json @@ -0,0 +1 @@ +{} diff --git a/locales/gl_ES.json b/locales/gl_ES.json new file mode 100644 index 0000000..ddfe060 --- /dev/null +++ b/locales/gl_ES.json @@ -0,0 +1,280 @@ +{ + "nav": { + "credits": "Créditos", + "donate": "Doa", + "accountWidget": { + "settings": "Configuración", + "logout": "Acceder" + }, + "dropdown": { + "captions": { + "credits": "coñecer o equipo", + "blog": "As nosas últimas actualizacións, resumidas", + "progress": "Comproba o progreso e os obxectivos do proxecto", + "about": "Sobre o proxecto", + "faq": "Preguntas Frecuentes" + } + }, + "docs": "Documentos", + "faq": "Preguntas e respostas", + "about": "Sobre", + "progress": "Progreso", + "blog": "Blog", + "account": "Conta" + }, + "hero": { + "subtitle": "Servidores de xogos", + "title": "Recreado", + "text": "Pretendo é un substituto gratuíto e de código aberto para os servidores de Nintendo tanto para 3DS como para Wii U, que permite a conectividade en liña para todos incluso despois de que os servidores orixinais estean descontinuados", + "buttons": { + "readMore": "Le máis" + } + }, + "faq": { + "text": "Abaixo amósanse algunhas preguntas comúns que nos fan.", + "QAs": [ + { + "question": "Que é Pretendo?", + "answer": "Pretendo é un substituto de Nintendo Network de código aberto que ten como obxectivo crear servidores personalizados para a familia de consolas Wii U e 3DS. O noso obxectivo é preservar a funcionalidade en liña destas consolas, para permitir aos xogadores seguir xogando aos seus xogos favoritos de Wii U e 3DS ao máximo." + }, + { + "question": "O meu Nintendo Network ID existente funcionará é pretendo?", + "answer": "Por desgraza non. Os ID de Nintendo Network existentes non funcionarán é Pretendo, xa que só Nintendo conserva os datos dos usuarios. Aínda que unha migración de NNID a PNID é teoricamente posible, sería arriscado e requiriría datos confidenciais do usuario que non queremos conservar." + }, + { + "answer": "Para usar Pretendo siga as instrucións da sección Documentos na parte superior.", + "question": "Como empregar Pretendo?" + }, + { + "question": "Podo saber cando unha función/servizo que pretendo estará lista?", + "answer": "Non. Moitas das funcións e servizos de Pretendo desenvólvense de forma independente (por exemplo, un programador pode traballar en Miiverse mentres que outro pode traballar en Contas e Amigos) e, polo tanto, non podemos dar un prazo de entrega estimado." + }, + { + "question": "Pretendo funciona en emuladores como Cemu/Citra?", + "answer": "Pretendo é compatible con calquera cliente que poida interactuar coa Nintendo Network. Actualmente, o único emulador con este tipo de funcionalidades é Cemu. Cemu 2.0 é oficialmente compatible con Pretendo nas opcións de conta de rede do emulador. Para obter información sobre como comezar con Cemu, consulta a documentación.
Citra non admite o xogo real en liña e, polo tanto, non funciona con Pretendo e non mostra ningún signo de ser compatible co xogo real en liña. Mikage, un emulador de 3DS para dispositivos móbiles, pode ofrecer soporte no futuro, aínda que non é certo." + }, + { + "question": "Se me ban de Nintendo Network, tamén se me prohibirá de Pretendo?", + "answer": "Non temos acceso ás prohibicións de Nintendo Network, polo que tampouco se che prohibirá de Pretendo. Non obstante, teremos regras a seguir ao usar o servizo e o incumprimento destas regras pode resultar na prohibición." + }, + { + "question": "Terei a Pretendo de ter soporte é Wii/Switch?", + "answer": "A Wii xa ten servidores personalizados proporcionados por Wiimmfi. Actualmente non queremos apuntar ao Switch, xa que é de pago e completamente diferente da Nintendo Network." + }, + { + "answer": "Si, terás que cortar o teu dispositivo para conectarte; Non obstante, en Wii U só necesitarás acceso ao Homebrew Launcher (é dicir, Haxchi, Coldboot Haxchi ou mesmo o exploit do navegador web), e en 3DS necesitarás a última versión de Luma, máis información en Documentos.", + "question": "Necesito modificar para conectarme?" + } + ], + "title": "Preguntas máis frecuentes" + }, + "showcase": { + "cards": [ + { + "caption": "Traemos os teus xogos e contido favoritos a través de servidores personalizados", + "title": "Servidores de xogos" + }, + { + "title": "Juxtaposition", + "caption": "Unha nova versión de Miiverse, coma se fora creada na era moderna." + }, + { + "title": "Apoio con cemu", + "caption": "Xoga aos teus xogos favoritos de Wii U mesmo sen consola!" + } + ], + "title": "O que facemos", + "text": "O noso proxecto ten moitos compoñentes. Abaixo amósanse algúns deles." + }, + "credits": { + "title": "O equipo", + "text": "Coñece o equipo detrás do proxecto" + }, + "account": { + "settings": { + "settingCards": { + "production": "Produción", + "beta": "Proba", + "hasAccessPrompt": "O teu rango actual dáche acceso ao servidor beta. ¡Brillante!", + "signInHistory": "Historial de inicio de sesión", + "no_edit_from_dashboard": "A edición da configuración PNID desde o panel de usuario non está dispoñible actualmente. Actualiza a configuración do usuario desde a consola de xogos vinculada", + "nickname": "Alcume", + "passwordResetNotice": "Despois de cambiar o contrasinal, pecharase sesión en todos os dispositivos.", + "gender": "Xénero", + "country": "País/Rexión", + "password": "Contrasinal", + "otherSettings": "Outras configuracións", + "discord": "Discord", + "removeDiscord": "Desvincular a conta de Discord", + "noDiscordLinked": "Non tes unha conta de Discord vinculada", + "linkDiscord": "Vincular conta de Discord", + "passwordPrompt": "Introduza o seu contrasinal PNID para descargar ficheiros Cemu", + "no_newsletter_notice": "Newsletter non dispoñible actualmente. Volve consultar máis tarde", + "timezone": "Franxa horaria", + "serverEnv": "Escolle un servidor", + "upgradePrompt": "Os servidores de proba son exclusivos dos probadores.
Para converterse en probador, compra un rango de conta superior.", + "userSettings": "Configuración de usuario", + "profile": "Perfil", + "birthDate": "Aniversario", + "signInSecurity": "cantar e unha seguridade", + "email": "Correo electrónico", + "fullSignInHistory": "Ver historial de inicio de sesión completo", + "connectedToDiscord": "Conectado a Discord como", + "newsletter": "Boletín informativo", + "newsletterPrompt": "Recibe actualizacións do proxecto por correo electrónico (podes cancelar a subscrición en calquera momento)", + "no_signins_notice": "O historial de inicio de sesión non se segue actualmente. Volve comprobar máis tarde!" + }, + "upgrade": "Comprar Rank", + "unavailable": "Non dispoñible" + }, + "loginForm": { + "forgotPassword": "Esqueciches o teu contrasinal?", + "detailsPrompt": "Introduza a continuación os detalles da súa conta", + "confirmPassword": "confirma o contrasinal", + "login": "Acceder", + "username": "Nome de usuario", + "password": "Contrasinal", + "email": "Correo electrónico", + "registerPrompt": "Non tes unha conta?", + "loginPrompt": "Xa tes unha conta?", + "register": "Incribirse", + "miiName": "Nome Mii" + }, + "forgotPassword": { + "sub": "Introduce o teu enderezo de correo electrónico/PNID a continuación", + "submit": "Enviar", + "header": "Esqueceches o contrasinal", + "input": "Enderezo de correo electrónico ou PNID" + }, + "resetPassword": { + "submit": "Enviar", + "confirmPassword": "Confirme o contrasinal", + "header": "Cambie o contrasinal", + "sub": "Introduce o novo contrasinal a continuación", + "password": "contrasinal" + }, + "account": "Conta", + "accountLevel": [ + "Estándar", + "Provador", + "Moderador", + "Desenvolvedor" + ], + "banned": "Prohibido" + }, + "specialThanks": { + "title": "Grazas especiais", + "text": "Sen eles, Pretendo non estaría onde está agora." + }, + "aboutUs": { + "title": "Sobre nós", + "paragraphs": [ + "Pretendo é un proxecto de código aberto que ten como obxectivo recrear a Nintendo Network para 3DS e Wii U mediante enxeñería inversa en sala limpa.", + "Dado que os nosos servizos serían gratuítos e de código aberto, poderían existir mesmo despois do inevitable peche de Nintendo Network." + ] + }, + "progress": { + "githubRepo": "Repositorio de GitHub", + "title": "Progreso" + }, + "discordJoin": { + "title": "Mantéñase ao día", + "text": "Únete ao noso servidor Discord para obter as últimas actualizacións do proxecto.", + "widget": { + "button": "Únete ao servidor", + "text": "Recibe actualizacións en tempo real sobre o noso progreso." + } + }, + "donation": { + "upgradePush": "Para facerte un subscritor e acceder a grandes vantaxes, visita a páxina de actualización.", + "progress": "$${totd} de $${goald}/mes, ${perc}% do obxectivo mensual." + }, + "localizationPage": { + "description": "Pega unha ligazón a unha configuración rexional JSON de acceso público para probala no teu sitio web", + "title": "Localicemos", + "instructions": "Consulta as instrucións de localización", + "fileInput": "Arquivo para probar", + "filePlaceholder": "https://a.link.to/the_file.json", + "button": "Ficheiro de proba" + }, + "footer": { + "socials": "Sociais", + "usefulLinks": "Ligazóns útiles", + "widget": { + "captions": [ + "Queres estar ao día?", + "Únete ao noso servidor Discord!" + ], + "button": "Unirse agora" + }, + "bandwidthRaccoonQuotes": [ + "Son Bandwidth o mapache e encántame mastigar os cables do servidor de Pretendo Network. Yum Yum Yum Isto é xenial! (Mellor que o bocadillo de queixo manchego)", + "Moita xente pregúntanos se por isto imos ter problemas legais con Nintendo; Alégrome de dicir que a miña tía traballa en Nintendo e di que non os teremos.", + "Webkit v537 é a mellor versión de Webkit para Wii U. Non, non estamos portando Chrome a Wii U.", + "Non podo esperar a que o reloxo chegue ás 03:14:08 UTC o 19 de xaneiro de 2038!", + "A Wii U é en realidade unha consola infravalorada: os anuncios eran moi malos, pero a consola é xenial. Agarda, non sei por que, pero o meu controlador non se conectará á miña Wii.", + "O tema principal de Super Mario World 2 - Yoshi's Island é un bop absoluto e non hai forma de que me convenza do contrario.", + "Os meus lanzamentos favoritos de Nintendo Switch foron Nintendo Switch Online + Expansion Pack, Nintendo Switch Online + Rumble Pak, Nintendo Switch Online + Offline Play Pack, Nintendo Switch Online + Yet Another Port Pack e Nintendo Switch Online + Dr. Kawashima's Brain Training / Brain Age \"Gustouche moito o título da consola virtual de Nintendo Wii U, así que o traeremos de volta\". Realmente demostra que a Nintendo lle importa.", + "Como \"Xa sabes a Ash, bendí o seu corazón, ela está todo o día\" é a forma agradable do sur de dicir \"Ash uwus todo o tempo e é moi raro e estúpido e gustaríame que non o fixesen\".", + "O meu primeiro video na miña canle!!! Levo un tempo querendo facer vídeos, pero o meu portátil estaba actuando bastante mal e non podía executar Fraps, Skype e Minecraft ao mesmo tempo. Pero iso xa acabouse! Cun pouco de axuda do meu profesor de informática, o meu portátil funciona moito mellor e agora podo gravar! Espero que o disfrutedes e se o fas, dálle me gusta e subscríbete!" + ] + }, + "progressPage": { + "title": "O noso progreso", + "description": "Consulta o progreso e os obxectivos do proxecto! (Actualizado aproximadamente cada hora, non reflicte TODOS os obxectivos nin o progreso do proxecto)" + }, + "docs": { + "sidebar": { + "welcome": "Benvido", + "install_extended": "Instalalo pretendo", + "search": "Buscar", + "getting_started": "Comezando", + "install": "Instalar", + "juxt_err": "Código de erro - Juxt (Miiverse)" + }, + "search": { + "no_match": "Non se atoparon coincidencias", + "title": "Tes un código de erro?", + "caption": "Escríbeo no cadro de abaixo para obter información sobre o teu problema.", + "label": "Código de erro" + }, + "quickLinks": { + "header": "ligazóns rápidas", + "links": [ + { + "header": "Instalalo pretendo", + "caption": "Consulte as instrucións de configuración" + }, + { + "caption": "Buscalo aquí", + "header": "Tes algún erro?" + } + ] + }, + "missingInLocale": "Esta páxina non está dispoñible no teu idioma. Vexa a versión en inglés a continuación." + }, + "modals": { + "confirm": "Confirmar", + "cancel": "Cancelar", + "close": "Pechar" + }, + "blogPage": { + "title": "Blog", + "description": "As últimas actualizacións en fragmentos condensados. Se queres ver actualizacións máis frecuentes, considera Doar connosco.", + "published": "Publicado por", + "publishedOn": "é" + }, + "upgrade": { + "month": "Mes", + "back": "De volta", + "title": "Subscríbete", + "unsub": "Cancelar a subscrición", + "unsubPrompt": "Estás seguro de que queres cancelar a subscrición de tiername? Perderás o acceso aos beneficios asociados a ese rango.", + "unsubConfirm": "Cancelar a subscrición", + "description": "Alcanzar o obxectivo mensual fará de Pretendo un traballo a tempo completo, proporcionando actualizacións de mellor calidade a un ritmo máis rápido", + "tierSelectPrompt": "Seleccione un intervalo", + "changeTier": "Cambiar rango", + "changeTierPrompt": "Estás seguro de que queres cancelar a subscrición de oldtiername e subscribirte a newtiername?", + "changeTierConfirm": "Cambiar rango" + } +} diff --git a/locales/hr_HR.json b/locales/hr_HR.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/locales/hr_HR.json @@ -0,0 +1 @@ +{} diff --git a/locales/hu_HU.json b/locales/hu_HU.json new file mode 100644 index 0000000..f5ae6ce --- /dev/null +++ b/locales/hu_HU.json @@ -0,0 +1,453 @@ +{ + "nav": { + "docs": "Dokumentáció", + "credits": "Készítők", + "progress": "Előrehaladás", + "blog": "Blog", + "account": "Fiók", + "donate": "Adományozás", + "accountWidget": { + "settings": "Beállítások", + "logout": "Kijelentkezés" + }, + "dropdown": { + "captions": { + "about": "A projektről", + "faq": "Gyakran ismételt kérdések", + "blog": "A legutolsó frissítéseink, tömören", + "progress": "Ellenőrizd a projekt előrehaladást és célokat", + "credits": "Találkozz a team-mel" + } + }, + "about": "Névjegy", + "faq": "GYIK" + }, + "hero": { + "subtitle": "Játék szerverek", + "buttons": { + "readMore": "Olvass tovább" + }, + "title": "Újra létrehozva", + "text": "A Pretendo egy ingyenes nyílt forrású helyettesítője a Nintendo szervereinek mind a 3DS, mind a Wii U számára lehetővé téve az online kapcsolatot mindenki számára, még az eredeti szerverek leállítása után is" + }, + "aboutUs": { + "title": "Rólunk", + "paragraphs": [ + "A Pretendo egy nyílt forráskódú projekt, aminek célja újra előállítani a Nintendo Network-öt a 3DS és a Wii U számára tiszta visszafejtés technikát alkalmazva.", + "Mivel a szolgáltatásaink egyaránt ingyenesek és nyílt forráskódúak, sokáig léteznek a jövőben." + ] + }, + "progress": { + "title": "Előrehaladás", + "githubRepo": "Github repó" + }, + "faq": { + "title": "Gyakran Ismételt Kérdések", + "text": "Itt van néhány gyakori kérdés, amit tőlünk kérdeztek, a könnyű információhoz jutás érdekében.", + "QAs": [ + { + "question": "Mi a Pretendo?", + "answer": "A Pretendo egy nyílt forrású helyettesítője a Nintendo Network-nek aminek célja, hogy egyedi szervereket készítsen a Wii U és a 3DS család konzoljai számára. Célunk, hogy megőrizzük a funkcionalitását ezen konzoloknak, és lehetővé tegyük a játékosok számára, hogy folytathassák a játékot kedvenc Wii U és 3DS játékaikkal, azok teljes kapacitásával." + }, + { + "answer": "Sajnos nem. A létező NNID-k nem működnek a Pretendo-n, mert a Nintendo birtokolja a felhasználói adatot; habár egy NNID>PNID migráció elméletben lehetséges, kockázatos lenne és szenzitív felhasználói adatot igényel, amit nem szeretnénk birtokolni.", + "question": "Működik a mostani NNID-m a Pretendón?" + }, + { + "question": "Hogyan használhatom a Pretendo-t?", + "answer": "A Pretendo használatának elkezdéséhez 3DS-en, Wii U-n vagy emulátoron, kérjük tekintsd meg a telepítési útmutatónkat!" + }, + { + "question": "Tudjuk mikor lesz a funkció/szolgáltatás kész?", + "answer": "Nem. Sok funkciója/szolgáltatása a Pretendo-nak függetlenül fejlesztett (például a Miiverse-en egy fejlesztő dolgozik, míg a Accounts and Friends-en egy másik), és így nem tudunk egy általános becslést adni, hogy mikorra fog ez elkészülni." + }, + { + "question": "Mikor adtok hozzá további játékokat?", + "answer": "Akkor fogunk új játékokon dolgozni amikor azt érezzük hogy a backend könyvtárunk támogatja, és van egy fejlesztő aki karbantartja. Sok munka megy bele abba hogy stabilizáljuk és befejezzük a meglévő játékokat - Megakarjuk adni a legjobb élményt mielőtt egy új játékra megyünk. Mivel mindig jön új munka, ezért nem tudjuk megmondani mikor lesz ez." + }, + { + "question": "Működik a Pretendo Cemu-n vagy emulátorokon?", + "answer": "Cemu 2.1 teljeskörűen támogatja a Pretendo-t a hálózati profil fül alatt az emulátorban. Több információért hogyan kezdj bele a Cemu-val, nézd meg a dokumentációt.
Néhány 3DS emulátor vagy forkja is lehet hogy támogat minket, de nincs semmilyen hivatalos ajánlásunk vagy telepítési útmutatónk még. A Citra teljes verziója nem támogatja a Pretendo-t." + }, + { + "answer": "A Wii-nek már vannak saját szerverei, amit a Wiimmfi biztosít. Jelenleg nem célozzuk meg a Switch-et, mivel fizetős és teljesen más, mint a Nintendo Network.", + "question": "Fogja a Pretendo támogatni a Wii-t/Switch-et?" + }, + { + "answer": "A legjobb élményért a konzolokon, kell hackelned kell a konzolt - pontosan Aromával a Wii U-hoz és Luma3DS-el a 3DS-hez, de a Wii U-hoz van hackelés nélküli SSSL megoldás de limitált hozzáféréssel. Nézd meg a telepítési lépéseket a leírásért.", + "question": "Szükségem van hack-re a csatlakozáshoz?" + }, + { + "answer": "Nincs hozzáférésünk a Nintendo hálózat ban listájához, szóval nem fogsz az maradni. De vannak szabályok amiket ha nem követsz akkor az bannolást okozhat.", + "question": "Ha bannolva vagyok a Nintendo hálózaton, ugyanúgy bannolva maradok Pretendón?" + }, + { + "question": "Lehet-e csalásokat vagy mod-okat online használni a Pretendo-val?", + "answer": "Csak privát meccseken - a tisztességtelen előny megszerzése vagy az online élmény megzavarása olyan emberekkel, akik nem járultak hozzá (mint a nyilvános meccseken), tiltás alá esik. Rendszeresen alkalmazunk fiók- és konzoltiltiltásokat mind a Wii U, mind a 3DS rendszereken. A Pretendo olyan extra biztonsági intézkedéseket alkalmaz, amelyek hatástalanná teszik a hagyományos „unban” módszereket, mint például a sorozatszám megváltoztatása." + } + ] + }, + "showcase": { + "title": "Amit mi csinálunk", + "text": "A projektünk sok komponensből áll. Itt van néhány közülük.", + "cards": [ + { + "title": "Játék szerverek", + "caption": "A kedvenc játékaid és tartalmad visszahozása egyedi szerverek használatával." + }, + { + "title": "Juxtaposition", + "caption": "A Miiverse újragondolása, milyen lett volna, ha a modern érában készül." + }, + { + "title": "Cemu támogatás", + "caption": "Játssz a kedvenc Wii U játékaiddal akár konzol nélkül!" + } + ] + }, + "credits": { + "title": "A csapat", + "text": "Ismerd meg a csapatot a projekt mögött", + "people": [ + { + "name": "Jonathan Barrow (jonbarrow)", + "github": "https://github.com/jonbarrow", + "picture": "https://github.com/jonbarrow.png", + "caption": "Project tulajdonos és fő fejlesztő" + }, + { + "picture": "https://github.com/caramelkat.png", + "github": "https://github.com/CaramelKat", + "name": "Jemma (CaramelKat)", + "caption": "Miiverse kutató és fejlesztő" + }, + { + "name": "quarky", + "caption": "Wii U kutató és patch fejlesztő", + "picture": "https://github.com/ashquarky.png", + "github": "https://github.com/ashquarky" + }, + { + "caption": "Rendszer kutatás és szerver architektúra", + "github": "https://github.com/SuperMarioDaBom", + "name": "SuperMarioDaBom", + "picture": "https://github.com/supermariodabom.png" + }, + { + "picture": "https://github.com/gitlimes.png", + "name": "Pinklimes", + "caption": "Web fejlesztő", + "github": "https://github.com/gitlimes" + }, + { + "name": "Shutterbug2000", + "caption": "Rendszer kutató és szerver fejlesztő", + "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", + "github": "https://github.com/shutterbug2000" + }, + { + "github": "https://github.com/InternalLoss", + "picture": "https://github.com/InternalLoss.png", + "name": "Billy", + "caption": "Prezervácionista és szerver architektúra" + }, + { + "name": "DaniElectra", + "picture": "https://github.com/danielectra.png", + "github": "https://github.com/DaniElectra", + "caption": "Rendszer kutatás és szerver fejlesztés" + }, + { + "github": "https://github.com/hauntii", + "name": "niko", + "caption": "Web és szerver fejlesztés", + "picture": "https://github.com/hauntii.png" + }, + { + "name": "MatthewL246", + "caption": "DevOps és közösségi munka", + "picture": "https://github.com/MatthewL246.png", + "github": "https://github.com/MatthewL246" + }, + { + "name": "wolfendale", + "caption": "Szerver fejlesztés és optimalizáció", + "picture": "https://github.com/wolfendale.png", + "github": "https://github.com/wolfendale" + }, + { + "name": "TraceEntertains", + "caption": "3DS patch fejlesztés és kutatás", + "picture": "https://github.com/TraceEntertains.png", + "github": "https://github.com/TraceEntertains" + } + ] + }, + "footer": { + "bandwidthRaccoonQuotes": [ + "Én vagyok a Bandwidth mosómedve, szeretem rágcsálni a Pretendo Network szerverek kábeleit. Nyam-nyam!", + "Sokan kérdezik, hogy nem fogunk-e jogi problémába keveredni a Nintendo-val e miatt; Boldogan mondhatom, hogy a nénikém a Nintendo-nál dolgozik, és azt mondja, hogy szerinte ez rendben van.", + "A Webkit v537 a legjobb verziója a Webkit a Wii U-ra. Nem, nem fogjuk portolni a Chrome-ot a Wii U-ra.", + "Alig bírok várni arra, hogy az óra elérje a 2038 január 19-én a 03:14:08 UTC időpontot!", + "A Wii U tulajdonképpen egy alulértékelt rendszer: a reklámok nagyon rosszak voltak, de a konzol nem. Hú, várj egy percet, nem tudom miért nem csatlakozik a Gamepad-om a Wii-omhoz.", + "Super Mario World 2 - Yoshi's Island's főcím zenéje abszolút bop, és semmiképpen sem fogsz meggyőzni az ellenkezőjéről.", + "A kedvenc Nintendo Switch kiadásaim: a Nintendo Switch Online + Expansion Pack, a Nintendo Switch Online + Rumble Pak, a Nintendo Switch Online + Offline Play Pack, a Nintendo Switch Online + Yet Another Port Pack és a Nintendo Switch Online + Dr. Kawashima's Brain Training / Brain Age \"Nagyon szeretted a Nintendo Wii U Virtual Console-t szóval visszahozzuk\" Pack. Tényleg elmondhatod, hogy a Nintendo figyel rád.", + "Az \"Ismered Ash-t, áldd meg a szívét, egész nap UwUzik.\" a déli kedves módja annak, hogy \"Ash uwuzik minden alkalommal, és ez nagyon furcsa és hülye, és azt kívánom, bárcsak ne”", + "Első videóm a csatornámon!! Már régóta szertem volna videókat készíteni, de a laptopom elég rosszul ment, és nem tudtam egyszerre futtatni a fraps-t, a skype-ot és a minecraftot. de most vége! informatika tanárom segítségével a laptopom sokkal jobban működik, és már tudok rögzíteni! remélem tetszeni fog és ha igen nyomj egy like-ot és iratkozz fel!!!", + "Jónak tűnik nekem" + ], + "socials": "Szociális", + "usefulLinks": "Hasznos linkek", + "widget": { + "captions": [ + "Szeretnél naprakész lenni?", + "Csatlakozz a Discord szerverünkhöz." + ], + "button": "Csatlakozz most!" + } + }, + "account": { + "loginForm": { + "loginPrompt": "Rendelkezel már fiókkal?", + "username": "Felhasználónév", + "registerPrompt": "Nem rendelkezel fiókkal?", + "password": "Jelszó", + "forgotPassword": "Elfelejtetted a jelszavad?", + "login": "Belépés", + "register": "Regisztráció", + "detailsPrompt": "Add meg a fiók adataid alább", + "confirmPassword": "Jelszó megerősítése", + "email": "Email", + "miiName": "Mii név" + }, + "forgotPassword": { + "submit": "Elküld", + "input": "Email cím vagy PNID", + "header": "Elfelejtett jelszó", + "sub": "Add meg az email címed/PNID azonosítód alább" + }, + "resetPassword": { + "header": "Jelszó alaphelyzetbe állítása", + "sub": "Add meg az új jelszót alább", + "password": "Jelszó", + "confirmPassword": "Jelszó megerősítése", + "submit": "Elküld" + }, + "settings": { + "settingCards": { + "profile": "Profil", + "beta": "Béta", + "nickname": "Becenév", + "otherSettings": "Egyéb beállítások", + "upgradePrompt": "A béta szerverek exkluzívak a béta tesztelők számára.
Ahhoz, hogy béta tesztelővé válj, bővíts egy magasabb csomagra.", + "signInHistory": "Bejelentkezési előzmények", + "discord": "Discord", + "fullSignInHistory": "Teljes bejelentkezési előzmény megtekintése", + "newsletterPrompt": "A projekt frissítéseiről értesítés emailben (bármikor kikapcsolható)", + "userSettings": "Felhasználói beállítások", + "birthDate": "Születési dátum", + "gender": "Nem", + "country": "Ország/régió", + "timezone": "Időzóna", + "serverEnv": "Szerver környezet", + "production": "Éles", + "hasAccessPrompt": "A jelenlegi csomag hozzáférést at a béta szerverekhez. Király!", + "signInSecurity": "Bejelentkezés és biztonság", + "email": "Email", + "password": "Jelszó", + "passwordResetNotice": "A jelszavad módosítása után ki leszel jelentkezve minden eszközöddel.", + "connectedToDiscord": "Csatlakozva a Discordhoz, mint", + "removeDiscord": "Discord fiók eltávolítása", + "noDiscordLinked": "Nincs Discord fiók kapcsolva.", + "linkDiscord": "Discord fiók hozzákapcsolása", + "newsletter": "Hírlevél", + "passwordPrompt": "Add meg a PNID jelszavad, hogy letölthesd a Cemu fájlokat", + "no_signins_notice": "A bejelentkezési előzmények jelenleg nem követettek. Nézz vissza később!", + "no_newsletter_notice": "A hírlevél jelenleg nem elérhető. Nézz vissza később!", + "no_edit_from_dashboard": "A PNID beállítások szerkesztése a vezérlőpultról jelenleg nem elérhető. Kérjük módosítsd a felhasználói beállításaid a csatlakoztatott játék konzolodról" + }, + "upgrade": "Fiók bővítése", + "unavailable": "Nem elérhető" + }, + "accountLevel": [ + "Normál", + "Tesztelő", + "Moderátor", + "Fejlesztő" + ], + "banned": "Kitiltott", + "account": "Fiók" + }, + "blogPage": { + "title": "Blog", + "description": "A legutolsó frissítések tömören. Ha szeretnél sűrűbb frissítéseket látnit, gondolkozz el a támogatásunkon.", + "published": "Kiadta:", + "publishedOn": "ekkor:" + }, + "upgrade": { + "title": "Bővítés", + "unsubPrompt": "Biztos, hogy le szeretnél iratkozni a tiername csomagról? El fogod veszíteni a hozzáférést az ehhez a csomaghoz kapcsolódó cuccokhoz.", + "changeTier": "Csomag módosítása", + "description": "Ha havi cél elérése a Pretendo-t teljes munkaidős munkává teszi, ez jobb minőségű frissítéseket és nagyobb fejlesztési sebességet biztosít.", + "month": "hónap", + "tierSelectPrompt": "Válassz egy csomagot", + "unsub": "Leiratkozás", + "unsubConfirm": "Leiratkozás", + "changeTierPrompt": "Biztos, hogy le szeretnél iratkozni a(z) oldtiername csomagról és feliratkozni a(z) newtiernamecsomagra?", + "changeTierConfirm": "Csomag módosítása", + "back": "Vissza" + }, + "specialThanks": { + "title": "Külön köszönet", + "text": "Nélkülük a Pretendo nem lenne ott ahol ma van.", + "people": [ + { + "github": "https://github.com/PretendoNetwork", + "name": "GitHub hozzájárulók", + "caption": "Fordtások és egyéb hozzájárulások", + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png" + }, + { + "caption": "crunch library fejlesztés", + "name": "superwhiskers", + "picture": "https://github.com/superwhiskers.png", + "github": "https://github.com/superwhiskers" + }, + { + "name": "Stary", + "caption": "3DS fejlesztés és NEX darabokra szedés", + "picture": "https://github.com/Stary2001.png", + "github": "https://github.com/Stary2001" + }, + { + "caption": "Miiverse információ megosztás", + "picture": "https://github.com/rverseTeam.png", + "name": "rverse", + "github": "https://twitter.com/rverseClub" + }, + { + "name": "Kinnay", + "special": "Különleges köszönet", + "caption": "Kutatás a Nintendo adatstruktúrákról", + "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", + "github": "https://github.com/Kinnay" + }, + { + "name": "NinStar", + "caption": "Ikonok a Mii Editor-hoz és a Juxt reakciókhoz", + "picture": "https://github.com/ninstar.png", + "github": "https://github.com/ninstar" + }, + { + "picture": "https://github.com/EpicUsername12.png", + "github": "https://github.com/EpicUsername12", + "name": "Rambo6Glaz", + "caption": "Konzol kutatás és játék szerverek" + }, + { + "name": "GaryOderNichts", + "caption": "Wii U patch fejlesztés", + "picture": "https://github.com/GaryOderNichts.png", + "github": "https://github.com/GaryOderNichts" + }, + { + "name": "zaksabeast", + "caption": "3DS patch készítő", + "picture": "https://cdn.discordapp.com/avatars/219324395707957248/c62573fbd4d26c8b4724f54413df6960.png?size=128", + "github": "https://github.com/zaksabeast" + }, + { + "name": "mrjvs", + "caption": "Szerver architektúra", + "picture": "https://github.com/mrjvs.png", + "github": "https://github.com/mrjvs" + }, + { + "picture": "https://github.com/binaryoverload.png", + "github": "https://github.com/binaryoverload", + "name": "binaryoverload", + "caption": "Szerver architektúra" + }, + { + "caption": "Splatoon forgatások és kutatás", + "picture": "https://github.com/Simonx22.png", + "github": "https://github.com/Simonx22", + "name": "Simonx22" + }, + { + "name": "OatmealDome", + "caption": "Splatoon forgatások és kutatás", + "picture": "https://github.com/OatmealDome.png", + "github": "https://github.com/OatmealDome" + }, + { + "name": "GitHub hozzájárulók", + "caption": "Fordítások és egyéb hozzájárulások", + "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", + "github": "https://github.com/PretendoNetwork" + } + ] + }, + "discordJoin": { + "title": "Maradj napra kész", + "text": "Csatlakozz a Discord szerverünkhöz, hogy megszerezd a legutolsó frissítéseket a projektről.", + "widget": { + "text": "Kapj valós időben frissítéseket az előrehaladásunkról", + "button": "Csatlakozz a szerverhez" + } + }, + "progressPage": { + "title": "Előrehaladásunk", + "description": "Tekintsd meg a projekt előrehaladását és céljait! (Minden órában frissítve, így nem tükröz minden projekt célt vagy az előrehaladást." + }, + "donation": { + "progress": "$${totd} a $${goald}/hó, ${perc}% a havi célból.", + "upgradePush": "Hogy előfizetővé válhass, és hozzáférj király cuccokhoz, látogasd meg a bővítés oldalt." + }, + "localizationPage": { + "title": "Fordíts", + "description": "Illessz be egy linket egy publikusan elérhető JSON fordításra, hogy tesztelhesd a weboldalon", + "instructions": "Tekintsd meg a fordítási útmutatókat", + "fileInput": "Tesztelendő fájl", + "filePlaceholder": "https://a.link.to/the_file.json", + "button": "Teszt fájl" + }, + "docs": { + "missingInLocale": "Ez az oldal nem érhető el a nyelveden. Kérjük nézd meg az angol verziót alább.", + "quickLinks": { + "header": "Gyors linkek", + "links": [ + { + "header": "Pretendo telepítés", + "caption": "A telepítési lépések megtekintése" + }, + { + "header": "Hibát kaptál?", + "caption": "Keress rá itt" + } + ] + }, + "search": { + "title": "Hibakódot kaptál?", + "caption": "Írd be az a keretbe alább, hogy információt kapj a problémáról!", + "label": "Hiba kód", + "no_match": "Nem található egyezés" + }, + "sidebar": { + "getting_started": "Kezdeti lépések", + "welcome": "Köszöntjük", + "install_extended": "Pretendo telepítése", + "install": "Telepítés", + "search": "Keresés", + "juxt_err": "Hibakódok - Juxt" + } + }, + "modals": { + "cancel": "Mégsem", + "confirm": "Megerősít", + "close": "Bezár" + }, + "notfound": { + "description": "Hoppá! Nem találjuk ezt az oldalt." + } +} diff --git a/locales/id_ID.json b/locales/id_ID.json new file mode 100644 index 0000000..6c1eb65 --- /dev/null +++ b/locales/id_ID.json @@ -0,0 +1,38 @@ +{ + "nav": { + "about": "Tentang", + "docs": "Dokumentasi", + "credits": "Kredit", + "progress": "Kemajuan", + "account": "Akun", + "accountWidget": { + "settings": "Pengaturan", + "logout": "Keluar" + }, + "dropdown": { + "captions": { + "credits": "Berkenalan dengan Tim", + "progress": "Lihat kemajuan dan tujuan proyek" + } + } + }, + "hero": { + "title": "Dibuat ulang", + "subtitle": "Server gim", + "text": "Pretendo adalah sebuah pengganti server Nintendo yang gratis dan dengan sumber terbuka untuk 3DS dan Wii U, yang memungkinkan konektivitas online untuk semua, bahkan setelah server aslinya dihentikan", + "buttons": { + "readMore": "Baca lebih lanjut" + } + }, + "aboutUs": { + "title": "Tentang kami", + "paragraphs": [ + "Pretendo adalah proyek sumber terbuka dengan tujuan untuk membuat ulang Nintendo Network untuk 3DS dan Wii U menggunakan rekaya terbalik ruang bersih.", + "Karena layanan kami bersifat gratis dan sumber terbuka, layanan tersebut akan tetap bertahan lama setelah penutupan Nintendo Network yang pasti akan terjadi." + ] + }, + "progress": { + "title": "Perkembangan", + "githubRepo": "Repositori Github" + } +} diff --git a/locales/it_IT.json b/locales/it_IT.json index 4eb9614..53d99f2 100644 --- a/locales/it_IT.json +++ b/locales/it_IT.json @@ -1,12 +1,12 @@ { "nav": { - "about": "Info", + "about": "Informazioni", "faq": "FAQ", "docs": "Documentazione", "credits": "Riconoscimenti", "progress": "Progresso", "blog": "Blog", - "account": "Account", + "account": "Profilo", "accountWidget": { "settings": "Impostazioni", "logout": "Logout" @@ -16,7 +16,7 @@ "captions": { "credits": "Incontra il team", "about": "Riguardo al progetto", - "faq": "Domande chieste frequentemente", + "faq": "Domande frequenti", "blog": "I nostri ultimi aggiornamenti, sintetizzati", "progress": "Controlla lo stato di avanzamento del progetto e gli obiettivi" } @@ -76,6 +76,13 @@ { "question": "Dovrò modificare la mia console per connettermi?", "answer": "Sì, dovrai modificare il tuo dispositivo per connetterti; tuttavia, sulla Wii U è sufficiente poter accedere all'Homebrew Launcher (via Haxchi, Coldboot Haxchi, o anche solo l'exploit web per browser). Informazioni su come connettersi su 3DS saranno fornite in futuro." + }, + { + "question": "Se sono bannato su Nintendo Network, rimarrò bannato quando userò Pretendo?" + }, + { + "answer": "Solo in partite private - ottenere vantaggi sleali o compromettere l'esperienza di gioco online senza il permesso dei partecipanti (e in partite pubbliche) è sanzionabile con un ban. Banniamo regolarmente account e console su entrambe le piattaforme Wii U e 3DS. Pretendo usa misure di sicurezza aggiuntive con lo scopo di rendere i tradizionali metodi 'unban' inefficaci, ad esempio cambiando il codice seriale della console.", + "question": "Posso usare trucchi o mods online con Pretendo?" } ] }, @@ -167,8 +174,6 @@ "registerPrompt": "Non hai un account?" }, "settings": { - "downloadFilesDescription": "(non funzioneranno su Nintendo Network)", - "downloadFiles": "Scarica file dell'account", "settingCards": { "profile": "Profilo", "nickname": "Nickname", @@ -258,7 +263,7 @@ } }, "upgrade": { - "unsubPrompt": "Sei sicuro di voler annullare l'iscrizione a tiername? Perderai tutte le ricompense associate a quel livello.", + "unsubPrompt": "Sei sicuro di voler annullare l'iscrizione a tiername? Perderai tutte le ricompense immediatamente associate a quel livello.", "description": "Raggiungere il goal mensile renderà Pretendo un lavoro a tempo pieno, permettendo di fornire aggiornamenti di maggiore qualità in meno tempo.", "month": "mese", "tierSelectPrompt": "Seleziona un livello", diff --git a/locales/ja_JP.json b/locales/ja_JP.json index b8806b2..b81e939 100644 --- a/locales/ja_JP.json +++ b/locales/ja_JP.json @@ -1,8 +1,8 @@ { "nav": { "about": "Pretendoについて", - "faq": "FAQ", - "docs": "ドキュメント", + "faq": "よくある質問", + "docs": "Wiki", "credits": "クレジット", "progress": "進捗", "blog": "ブログ", @@ -14,27 +14,27 @@ }, "dropdown": { "captions": { - "credits": "チームの紹介", - "about": "プロジェクトについて", - "faq": "よくある質問 (FAQ)", - "blog": "凝縮した最新情報をお届けします", - "progress": "プロジェクトの進捗状況と目標を確認" + "credits": "チームをご紹介します", + "about": "このプロジェクトについて", + "blog": "最新のアップデート(簡易版)", + "progress": "プロジェクトの進行状況と目的を確認", + "faq": "よくある質問" } } }, "hero": { - "subtitle": "ゲームサーバーを", - "title": "再生させる", - "text": "Pretendoは、3DSとWii Uで使用できる無料でオープンソースな代替サーバーです。元となるサーバーが廃止した後でもすべてのユーザーがオンライン接続をできるようにします。", + "subtitle": "オンラインを", + "title": "取り戻す", + "text": "Pretendo(プリテンドー)は、ニンテンドー3DSとWii Uの無料かつオープンソースの代替サーバーです。公式サーバーが稼働停止したあとも、オンライン接続を実現します。", "buttons": { "readMore": "続きを読む" } }, "aboutUs": { - "title": "私たちについて", + "title": "Pretendo について", "paragraphs": [ - "Pretendoは、クリーンルームでのリバースエンジニアリングを用いて3DSとWii U用のニンテンドーネットワークを再現することを目的としたオープンソースプロジェクトです。", - "私たちのサービスは無料かつオープンソースのため、ニンテンドーネットワークの閉鎖が避けられなくなった後も長く存続することができます。" + "Pretendoは、公式のものに代わって3DSとWii Uのニンテンドーネットワークをつくることを目的としたオープンソースのプロジェクトです。", + "Pretendo のサービスは無料のオープンソースであり、ニンテンドーネットワークが終了してからも継続して利用することができます。" ] }, "progress": { @@ -42,188 +42,108 @@ "githubRepo": "GitHubリポジトリ" }, "faq": { - "title": "よくある質問 (FAQ)", - "text": "ここではよく寄せられる質問をいくつか紹介します。", + "title": "よくある質問", + "text": "よくある質問への回答一覧です。", "QAs": [ { - "question": "Pretendoとは何ですか?", - "answer": "Pretendoは、Wii Uおよび3DS用のカスタムサーバーを構築することを目的とした、オープンソースなニンテンドーネットワークの代替サーバーです。私たちの目標は、これらの機種のオンライン機能を維持しプレイヤーがお気に入りのWii Uおよび3DSのゲームを最大限にプレイし続けられるようにすることです。" + "question": "Pretendoって何?", + "answer": "Pretendoは Wii Uと3DSシリーズのカスタムサーバーを作ろうとしている、オープンソースのニンテンドーネットワーク代替プロジェクトです。私たちの目標はこれらのオンライン機能を維持させ、プレイヤーたちがお気に入りのゲームを全機能をもって長い間できるようにすることです。" }, { - "question": "NNIDはPretendoで使用できますか?", - "answer": "残念ですができません。Nintendoのみがユーザーデータを保持しているため、既存のNNIDはPretendoでは機能しません。NNIDからPNIDへの移行は理論的には可能ですがリスクがあり、保持をしたくない機密なユーザーデータが必要になります。" + "question": "ニンテンドーネットワーク ID(NNID)は Pretendoでもつかえる?", + "answer": "残念ながら不可能です。NNIDのデータは任天堂だけがアクセスできるため、Pretendoからは利用できません。理論上NNIDをプリテンドーネットワークID(PNID)への変換は可能ですが、リスクが高く機密情報を必要とします。" }, { - "question": "Pretendoの使い方は?", - "answer": "Pretendoは現在、一般公開ができる状態ではありません。準備が整い次第、パッチャーのHomebrewを実行するだけでPretendoを使うことができるようになります。" + "question": "Pretendoの使い方は?", + "answer": "Pretendoはまだ開発中です。将来的には、ゲーム機上で専用のhomebrewアプリを用いるだけでPretendoをつかえるようにする予定です。" }, { - "question": "機能やサービスがいつ完成するかわかりますか?", - "answer": "いいえ。Pretendoの多くの機能やサービスは独立して開発されています (例えばMiiverseはある開発者によって開発、アカウントとフレンド機能は他の開発者によって開発されています) 全体的な開発期間をお伝えすることはできません。" + "question": "機能やサービスが完成するのはいつ?", + "answer": "正確にはわかりません。Pretendoの機能は各々で開発が進んでいます。例として、ある人がMiiverseを開発しているとき、並行して別の開発者がアカウント/フレンド機能を開発しています。そのため、全体の完成予定時間の予測は困難です。" }, { - "question": "Cemuやエミュレーターで使えますか?", - "answer": "Pretendoはニンテンドーネットワークに接続できるクライアントならば何でもサポートしています。現在このような機能を持つエミュレーターはCemuだけです。Cemu 2.0では、エミュレーターのネットワークアカウントオプションでPretendoを正式にサポートしています。Cemuの使い方についてはドキュメントをご覧ください。
Citraは純粋なオンラインプレイをサポートしていないため、Pretendoは動作せず、純粋なオンラインプレイをサポートする兆候は全くありません。モバイルデバイス用の3DSエミュレーターである、Mikageは将来的にサポートを提供する可能性がありますが、確実ではありません。" + "question": "Cemuなどのエミュレーターでもつかえる?", + "answer": "Pretendoはニンテンドーネットワークに接続できるすべてのクライアントに対応しています。現在正式に対応しているエミュレーターはCemu 2.0です。ネットワークアカウント設定からPretendoを設定することができます。Cemuでの使用方法については このドキュメント を確認してください。
Citraにはニンテンドーネットワークへの接続機能がないため、Pretendoにアクセスすることもできません(Citraが今後対応することもありません)。3DSのモバイル向けエミュレーターであるMikageは、対応する可能性がありますがいまのところ予定はありません。" }, { - "question": "ニンテンドーネットワークでBANをされている場合、PretendoでもBANはされたままになりますか?", - "answer": "私たちはニンテンドーネットワークの禁止事項にアクセスすることはできません。すべてのユーザーが私たちのサービスで禁止されることもありません。ただし、サービスを利用する際には従うべきルールがあり、このルールに従わない場合はBANされる可能性があります。" + "question": "ニンテンドーネットワークでBANされたら、PretendoでもBANされるの?", + "answer": "PretendoはニンテンドーネットワークのBAN情報にアクセスすることができないため、PretendoへBANが引き継がれることはありません。ただし、Pretendoの定めたルールに違反するとBANされることがあります。" }, { - "question": "Pretendoは、WiiやSwitchに対応しますか?", - "answer": "WiiにはWiimmfiが提供する代替サーバーがあります。Switchは有料であり、ニンテンドーネットワークとは全く異なるため、現在のところは対象にしていません。" + "question": "WiiやNintendo Switchでもつかえる?", + "answer": "WiiにはWiimmfiという代替サーバーがあります。Switchのネットワーク機能は有料であること、またニンテンドーネットワークとは全く異なることから、対応することはありません。" }, { - "question": "接続するにはハックが必要ですか?", - "answer": "はい。接続をするにはデバイスをハックする必要があります。ただし、Wii UではHomebrew Launcher (Haxchi、Coldboot Haxchi、Web browser exploit) にアクセスするだけで済みます。3DSの接続方法に関する方法は後日公開します。" + "question": "つなげるには改造が必要?", + "answer": "はい、接続するにはゲーム機を改造する必要があります。Wii U では Homebrew Launcher へアクセスするだけで接続できます(Haxchi、Coldboot Haxchi、または Web ブラウザーのエクスプロイトなど)。3DS で接続する方法については後日公開します。" } ] }, "showcase": { - "title": "私たちが制作する物", - "text": "私たちのプロジェクトは多くのコンポーネントがあります。ここではその一部を紹介します。", + "title": "Pretendoがつくるもの", + "text": "Pretendoプロジェクトは多くの部品に分かれています。以下はその一部です。", "cards": [ { "title": "ゲームサーバー", - "caption": "代替サーバーを使用してお気に入りのゲームやコンテンツを復活。" + "caption": "カスタムサーバーによって、あのゲームやあのコンテンツを取り戻します。" }, { "title": "Juxtaposition", - "caption": "Miiverseを現代的な再現と構築を実現。" + "caption": "Miiverseが、現代に生まれ変わります。" }, { - "title": "Cemuのサポート", - "caption": "ゲーム機がなくてもお気に入りのWii Uタイトルをプレイ!" + "title": "Cemuサポート", + "caption": "本体なしでも、あのWii Uゲームをプレイしよう!" } ] }, "credits": { - "title": "チーム", + "title": "開発チーム", "text": "プロジェクトを支えるチームの紹介", "people": [ { - "name": "Jonathan Barrow (jonbarrow)", - "caption": "プロジェクトオーナー兼リードデベロッパー", - "picture": "https://github.com/jonbarrow.png", - "github": "https://github.com/jonbarrow" + "caption": "プロジェクトオーナーおよび主な開発者" }, + {}, { - "name": "Jemma (CaramelKat)", - "caption": "Miiverseの研究と開発", - "picture": "https://github.com/caramelkat.png", - "github": "https://github.com/CaramelKat" + "caption": "Wii Uの研究、パッチの開発" }, + {}, { - "name": "quarky", - "caption": "Wii Uの研究とパッチの開発", - "picture": "https://github.com/ashquarky.png", - "github": "https://github.com/ashquarky" - }, - { - "name": "SuperMarioDaBom", - "caption": "システムの研究とサーバー構成", - "picture": "https://github.com/supermariodabom.png", - "github": "https://github.com/SuperMarioDaBom" - }, - { - "name": "pinklimes", - "caption": "Web開発", - "picture": "https://github.com/gitlimes.png", - "github": "https://github.com/gitlimes" - }, - { - "name": "Shutterbug2000", - "caption": "システムの研究とサーバー開発", - "picture": "https://cdn.discordapp.com/avatars/191370953807233024/0311b61e2009c1576828dd2e9a59d72e.png?size=128", - "github": "https://github.com/shutterbug2000" - }, - { - "name": "Billy", - "caption": "プリザベーションサーバー構成", - "picture": "https://github.com/InternalLoss.png", - "github": "https://github.com/InternalLoss" - }, - { - "name": "DaniElectra", - "caption": "システム研究とサーバー開発", - "picture": "https://github.com/danielectra.png", - "github": "https://github.com/DaniElectra" - }, - { - "name": "niko", - "caption": "Webとサーバー開発", - "picture": "https://github.com/hauntii.png", - "github": "https://github.com/hauntii" + "caption": "Webの開発" } ] }, "specialThanks": { "title": "スペシャルサンクス", - "text": "彼らがいなければPretendoの現在はありませんでした。", + "text": "Pretendoのいまの姿を作り上げた方たちです。", "people": [ + {}, + {}, + {}, + {}, { - "name": "GitHubの貢献者", - "caption": "ローカライズとその他の貢献", - "picture": "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", - "github": "https://github.com/PretendoNetwork" + "special": "スペシャルサンクス" }, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, { - "name": "superwhiskers", - "caption": "Crunchライブラリの開発", - "picture": "https://github.com/superwhiskers.png", - "github": "https://github.com/superwhiskers" - }, - { - "name": "Stary", - "caption": "3DSの開発とNEXディセクタ", - "picture": "https://github.com/Stary2001.png", - "github": "https://github.com/Stary2001" - }, - { - "name": "rverse", - "caption": "Miiverseの情報共有", - "picture": "https://github.com/rverseTeam.png", - "github": "https://twitter.com/rverseClub" - }, - { - "name": "Kinnay", - "special": "スペシャルサンクス", - "caption": "Nintendoのデータ構造に関する研究", - "picture": "https://cdn.discordapp.com/avatars/186572995848830987/b55c0d4e7bfd792edf0689f83a25d8ea.png?size=128", - "github": "https://github.com/Kinnay" - }, - { - "name": "NinStar", - "caption": "MiiエディタおよびJuxtリアクション用アイコン", - "picture": "https://github.com/ninstar.png", - "github": "https://github.com/ninstar" - }, - { - "name": "Rambo6Glaz", - "caption": "ネットワークインストーラーとコンソールの研究", - "picture": "https://github.com/EpicUsername12.png", - "github": "https://github.com/EpicUsername12" - }, - { - "name": "GaryOderNichts", - "caption": "Wii Uパッチの開発", - "picture": "https://github.com/GaryOderNichts.png", - "github": "https://github.com/GaryOderNichts" - }, - { - "name": "zaksabeast", - "caption": "3DSパッチの開発", - "picture": "https://cdn.discordapp.com/avatars/219324395707957248/c62573fbd4d26c8b4724f54413df6960.png?size=128", - "github": "https://github.com/zaksabeast" + "caption": "翻訳とその他の貢献" } ] }, "discordJoin": { - "title": "最新情報の入手", - "text": "Discordサーバーに参加してプロジェクトの最新情報を入手しましょう。", + "title": "最新情報を入手する", + "text": "プロジェクトの最新情報を入手するには、Pretendo の Discord サーバーに参加してください。", "widget": { - "text": "進捗状況をリアルタイムで確認", - "button": "Discordサーバーに参加する" + "text": "進捗状況の最新情報を入手しましょう", + "button": "サーバーに参加" } }, "footer": { @@ -231,131 +151,40 @@ "usefulLinks": "役立つリンク", "widget": { "captions": [ - "最新情報を知りたいですか?", - "Discordサーバーに参加しよう!" + "最新情報を入手しますか?", + "Discordサーバーへ参加しよう!" ], - "button": "今すぐ参加する!" + "button": "参加する!" }, "bandwidthRaccoonQuotes": [ - "私はアライグマのBandwidthです。Pretendo Networkのサーバーに接続されているケーブルを噛むのが大好きなんです。うまい!", - "この件でNintendoと法的なトラブルに巻き込まれるのではないかと訊かれるけど、私の叔母がNintendoに勤めていて「問題ない」と言ってる。", - "Webkit v537はWii U向けのWebkitのベストなバージョンです。ChromeをWii Uに移植するつもりはありません。", - "時計の針が2038年1月19日 03:14:08 (UTC) になるのが待ち遠しい!", - "Wii Uは過小評価されているシステムだ。CMはヒドかったけどゲーム機としては素晴らしい。ちょっと待って、なぜかわからないけどGamePadがWiiに繋がらないんだ。", - "スーパーマリオ ヨッシーアイランドのメインテーマは絶対的な名曲。", - "私が好きなNintendo Switchのソフトは「Nintendo Switch Online + 拡張パック」「Nintendo Switch Online + 振動パック」「Nintendo Switch Online + オフラインプレイパック」「Nintendo Switch Online + さらに別の移植パック」「Nintendo Switch Online + 川島教授の脳トレ/脳年齢」です。「Wii Uバーチャルコンソールのタイトルがお気に召したようなので復活させますパック」...Nintendoの気遣いが伝わってくる。", - "「アッシュを知っているでしょう?彼女を心から祝福してください、彼女は一日中 UwU です」というのは南部の素敵な言い方で「アッシュはいつも UwU してるけど、本当に奇妙で愚かなことだからやめて欲しかった」と言うことと同じです。", - "僕のチャンネルで初めての動画だ!ずっと前から動画を作りたかったんだけど、ノートパソコンの動作が悪くてFrapsやSkype、Minecraftを一度に動かすことができなかったんだ。でもそれはもう終わった!ITの先生の助けもあって、僕のノートパソコンの動作はかなり良くなって録画もできるようになったんだ。みんなが楽しんでくれたら幸いです。もしよろしければ「高評価」と「チャンネル登録」をお願いします!!!" + "ボクはアライグマの Bandwidth だよ!Pretendo ネットワークのサーバーを繋いでいるケーブルを噛むのが好きなんだ!(´~`)モグモグ...", + "みんな「任天堂に怒られないの?」って質問してくるね。ボクのおばさんが任天堂で働いてるけど、大丈夫だって~!", + "Webkit v537がWii U用の最高のWebkitのバージョンだよ。いや、ChromeはWii Uに移さないよ。", + "2038年1月19日の12時14分08秒(日本時間) になるのが楽しみだな~!", + "Wii Uって人気なさすぎだよね~。たしかに、イメージは薄かったけど、遊んでみれば最高だったよ!あれ、ちょっとまって…なんかゲームパッドがWiiに繋がらないんだけど?", + "スーパーマリオ ヨッシーアイランドのメイン テーマはいい曲だよね~!", + "ボクのお気に入りのNintendo Switchの作品は、Nintendo Switch Online + 追加パック、Nintendo Switch Online + 振動パック、Nintendo Switch Online + Offlineパック、Nintendo Switch Online + 非公式ポートパック、Nintendo Switch Online + 脳を鍛える大人のトレーニング ~Wii Uバーチャルコンソールが本当に人気なので、復活させます~ パック。任天堂はよくわかってるよね~。", + "「あなたはアッシュを知っている、彼女の心を祝福しなさい、彼女は一日中UwUの」というように、南部の素敵な言い方です \"Ash uwusはいつも、それは本当に奇妙で愚かで、私は彼らがそうしなかったらいいのに\"", + "ボクのチャンネルで最初の動画を公開したよ!!前から動画を作りたいと思っていたけど、ボクのノートパソコンの調子が悪くってね、Fraps とか Skype とか Minecraft を同時に起動できなかったんだよね~。でも、もうだいじょうぶ!IT の先生に聞いてみたら、ノートパソコンの動作が良くなって、録音もできるようになったんだ!よかったら高評価とチャンネル登録してね!" ] }, "progressPage": { - "title": "進捗 (英語)", - "description": "プロジェクトの進捗状況と目標を確認しましょう! (約1時間おきに更新されるため、プロジェクトのすべての目標や進捗状況を反映しているわけではありません)" + "title": "進行状況(英語)", + "description": "プロジェクトの進行状況と目標を確認できます。 (およそ1時間ごとに更新 & すべての目標やプロジェクトが表示されているわけではありません)" }, "blogPage": { - "title": "ブログ (英語)", - "description": "凝縮した最新情報をお届けします。より頻繁なアップデートをご覧になりたい方は、支援をご検討ください。", - "published": "Published by", - "publishedOn": "on" - }, - "account": { - "account": "アカウント", - "loginForm": { - "login": "ログイン", - "register": "登録", - "detailsPrompt": "アカウント情報を入力してください", - "username": "ユーザー名", - "password": "パスワード", - "confirmPassword": "パスワードの確認", - "email": "メールアドレス", - "miiName": "Miiの名前", - "forgotPassword": "パスワードを忘れましたか?", - "registerPrompt": "アカウントは未登録ですか?", - "loginPrompt": "アカウントを登録していますか?" - }, - "forgotPassword": { - "header": "パスワードを忘れてしまいました", - "sub": "メールアドレスかPNIDを入力してください", - "input": "メールアドレスまたはPNID", - "submit": "送信" - }, - "resetPassword": { - "header": "パスワードのリセット", - "sub": "新しいパスワード入力してください", - "password": "パスワード", - "confirmPassword": "パスワードの確認", - "submit": "送信" - }, - "settings": { - "downloadFiles": "アカウントファイルをダウンロード", - "downloadFilesDescription": "(ニンテンドーネットワークでは動作しません)", - "upgrade": "アカウントをアップグレード", - "unavailable": "利用不可", - "settingCards": { - "userSettings": "ユーザーの設定", - "profile": "プロフィール", - "nickname": "ニックネーム", - "birthDate": "誕生日", - "gender": "性別", - "country": "国/地域", - "timezone": "タイムゾーン", - "serverEnv": "サーバー環境", - "production": "プロダクション", - "beta": "ベータ", - "upgradePrompt": "ベータサーバーはベータテスター専用です。
ベータテスターになるには上位Tierのアカウントにアップグレードしてください。", - "hasAccessPrompt": "アカウントはベータサーバーにアクセスできます。イカしてますね!", - "signInSecurity": "ログインとセキュリティ", - "email": "メールアドレス", - "password": "パスワード", - "passwordResetNotice": "パスワードを変更するとすべてのデバイスがログアウトされます。", - "signInHistory": "ログイン履歴", - "fullSignInHistory": "すべてのログイン履歴を表示", - "otherSettings": "その他の設定", - "discord": "Discord", - "connectedToDiscord": "リンク済みのDiscordアカウント:", - "removeDiscord": "Discordアカウントのリンクを解除", - "noDiscordLinked": "Discordアカウントはリンクされていません。", - "linkDiscord": "Discordアカウントをリンクする", - "newsletter": "ニュースレター", - "newsletterPrompt": "プロジェクトの最新情報をメールで受け取る (いつでも停止可能です)", - "passwordPrompt": "PNIDパスワードを入力でCemuファイルをダウンロードします", - "no_signins_notice": "ログイン履歴は現在追跡されていません。後でもう一度確認してください!", - "no_newsletter_notice": "ニュースレターは現在配信されていません。後でもう一度ご確認ください。", - "no_edit_from_dashboard": "現在、ユーザーダッシュボードからのPNID設定変更はできません。リンク先のゲーム機からユーザー設定を更新してください。" - } - }, - "accountLevel": [ - "スタンダード", - "テスター", - "モデレーター", - "デベロッパー" - ], - "banned": "BANされています" - }, - "upgrade": { - "title": "アップグレード", - "description": "毎月の目標を達成することで、Pretendoはフルタイムの仕事になりより質の高いアップデートをより迅速に提供できるようになります。", - "month": "月", - "tierSelectPrompt": "Tierを選択してください", - "unsub": "サブスクリプションを解除", - "unsubPrompt": "tiernameのサブスクリプションを解除してもよろしいですか?そのTierに関連付けられた特典にアクセスができなくなります。", - "unsubConfirm": "サブスクリプションを解除する", - "changeTier": "Tierを変更", - "changeTierPrompt": "oldtiernameのサブスクリプションを解除してnewtiernameにサブスクリプションをしてもよろしいですか?", - "changeTierConfirm": "Tierを変更する", - "back": "戻る" - }, - "donation": { - "progress": "$${goald}/月の$${totd}、月間目標の${perc}%。", - "upgradePush": "サブスクリプションをして素晴らしい特典にアクセスするにはアップグレードページにアクセスしてください。" + "title": "ブログ(英語)", + "description": "最新情報のまとめです。支援することで、より頻繁に情報を受け取れます。", + "publishedOn": "公開日時:", + "published": "執筆者:" }, "localizationPage": { - "title": "ローカライズをしましょう", - "description": "公開されているJSONロケールへのリンクを貼り付けて、Webサイトでテストをします。", - "instructions": "ローカライズの手順を表示する", - "fileInput": "テストをするファイル", + "title": "レッツローカライズ", + "description": "公開されているJSONへのリンクを貼り付けてこのサイトに試してみて下さい", + "instructions": "ローカライズ方法を開く", + "fileInput": "テスト用ファイル", "filePlaceholder": "https://a.link.to/the_file.json", - "button": "ファイルをテスト" + "button": "テストファイル" }, "docs": { "missingInLocale": "このページはお住まいの地域では利用できません。以下の英語版をご確認ください。", @@ -372,24 +201,116 @@ } ] }, - "search": { - "title": "エラーコードが出ましたか?", - "caption": "下のボックスに入力すると問題に関する情報が表示されます!", - "label": "エラーコード", - "no_match": "一致するものが見つかりません" - }, "sidebar": { - "getting_started": "スタート", - "welcome": "ようこそ", - "install_extended": "Pretendoのインストール", "install": "インストール", "search": "検索", - "juxt_err": "エラーコード - Juxt" + "juxt_err": "エラーコード - Juxt", + "getting_started": "入門", + "welcome": "ようこそ", + "install_extended": "Pretendo をインストールする" + }, + "search": { + "caption": "下にエラーコードを入力して、エラーを検索できます。", + "label": "エラーコード", + "no_match": "一致するものが見つかりませんでした", + "title": "エラーコードが表示されましたか?" } }, + "account": { + "settings": { + "upgrade": "アカウントのアップグレード", + "unavailable": "利用できません", + "settingCards": { + "userSettings": "ユーザー設定", + "profile": "プロフィール", + "nickname": "ニックネーム", + "timezone": "タイムゾーン", + "beta": "ベータ", + "upgradePrompt": "ベータ サーバーはベータ テスター専用です。
ベータ テスターになるには、より高いレベルのアカウントにアップグレードしてください。", + "signInSecurity": "ログインとセキュリティ", + "email": "メールアドレス", + "password": "パスワード", + "passwordResetNotice": "パスワードを変更すると、すべてのデバイスからログアウトされます。", + "signInHistory": "ログイン履歴", + "fullSignInHistory": "ログイン履歴をすべて表示する", + "connectedToDiscord": "Discord に連携済み:", + "newsletterPrompt": "プロジェクトの最新情報をメールで受け取る (いつでも配信停止できます)", + "passwordPrompt": "Cemu ファイルをダウンロードするには、PNID パスワードを入力してください", + "no_edit_from_dashboard": "現在、WebサイトからのPNID設定の編集には対応していません。ログインしているゲーム機から設定を編集してください。", + "gender": "性別", + "country": "国/地域", + "production": "本番環境", + "hasAccessPrompt": "現在のレベルでは、ベータ サーバーへアクセスできます。", + "newsletter": "ニュースレター", + "discord": "Discord", + "noDiscordLinked": "Discord アカウントが連携されていません。", + "birthDate": "生年月日", + "serverEnv": "サーバー環境", + "otherSettings": "その他の設定", + "removeDiscord": "Discord アカウントの連携を解除", + "linkDiscord": "Discordアカウントを連携する", + "no_signins_notice": "ログイン履歴は現在追跡されていません。後でもう一度ご確認ください。", + "no_newsletter_notice": "ニュースレターは現在利用できません。後でもう一度ご確認ください。" + } + }, + "accountLevel": [ + "スタンダード", + "テスター", + "モデレーター", + "デベロッパー" + ], + "banned": "BAN されました", + "loginForm": { + "register": "アカウントを作成", + "detailsPrompt": "ログイン情報を入力してください", + "username": "ユーザー名", + "password": "パスワード", + "email": "メールアドレス", + "miiName": "Mii の名前", + "loginPrompt": "すでにアカウントをお持ちの場合", + "login": "ログイン", + "confirmPassword": "パスワードの確認", + "forgotPassword": "パスワードを忘れた場合", + "registerPrompt": "アカウントをお持ちでない場合" + }, + "account": "アカウント", + "forgotPassword": { + "header": "パスワードを忘れた場合", + "sub": "以下にメールアドレスまたは PNID を入力してください。", + "input": "メールアドレスまたは PNID", + "submit": "送信" + }, + "resetPassword": { + "header": "パスワードのリセット", + "sub": "以下に新しいパスワードを入力してください", + "password": "パスワード", + "confirmPassword": "パスワードの確認", + "submit": "送信" + } + }, + "upgrade": { + "title": "アップグレード", + "description": "毎月の目標を達成すると、Pretendoを仕事にすることができ、より良いアップデートを高頻度で開発できるようになります。", + "month": "月", + "changeTier": "レベルを変更", + "changeTierPrompt": "oldtiername の登録を解除し、newtiername を登録しますか?", + "back": "戻る", + "changeTierConfirm": "レベルを変更", + "unsub": "登録を解除", + "unsubConfirm": "登録を解除", + "tierSelectPrompt": "レベルを選択", + "unsubPrompt": "tiername から退会しますか?そのレベルの特典にアクセスできなくなります。" + }, + "donation": { + "progress": "$${totd}/$${goald}(寄付額/目標) ー 月間目標の ${perc}%の寄付を頂いています。", + "upgradePush": "サブスクライバーになってクールな特典にアクセスするには、アップグレード ページにアクセスしてください。" + }, "modals": { "cancel": "キャンセル", "confirm": "確認", "close": "閉じる" + }, + "notfound": { + "description": "おっと!このページは見つかりません。" } } diff --git a/locales/kk_KZ.json b/locales/kk_KZ.json index 7512a74..6831744 100644 --- a/locales/kk_KZ.json +++ b/locales/kk_KZ.json @@ -161,8 +161,6 @@ "email": "Пошта" }, "settings": { - "downloadFiles": "Аккаунтының ақпаратты жүктеу", - "downloadFilesDescription": "(Nintendo Network-пен жұмыс істемейді)", "upgrade": "Аккаунтты жақсарту", "unavailable": "Қолжетімсіз", "settingCards": { diff --git a/locales/ko_KR.json b/locales/ko_KR.json index 95b7344..5b89f4b 100644 --- a/locales/ko_KR.json +++ b/locales/ko_KR.json @@ -1,6 +1,6 @@ { "nav": { - "about": "···에 대하여", + "about": "소개", "faq": "FAQ", "docs": "문서", "credits": "크레딧", @@ -24,7 +24,7 @@ }, "hero": { "subtitle": "게임 서버", - "title": "재창조", + "title": "게임 서버", "text": "Pretendo는 무료이며 3DS와 Wii U를 위한 Nintendo의 서버의 오픈 소스 대체제이고, 원래 서버가 닫힌 된 후에도 모두를 위해 온라인 연결을 제공합니다", "buttons": { "readMore": "더 읽어보기" @@ -99,11 +99,31 @@ }, "credits": { "title": "개발 팀", - "text": "이 프로젝트 뒤에 있는 팀을 만나보세요" + "text": "이 프로젝트 뒤에 있는 팀을 만나보세요", + "people": [ + {}, + { + "caption": "Miiverse 연구와 개발" + }, + { + "caption": "Wii U 연구 및 패치 개발" + } + ] }, "specialThanks": { "title": "Special Thanks", - "text": "이들이 없었으면, Pretendo는 이 자리에 없었을 겁니다." + "text": "이들이 없었으면, Pretendo는 이 자리에 없었을 겁니다.", + "people": [ + {}, + {}, + {}, + {}, + {}, + {}, + { + "caption": "게임기 연구 및 게임 서버" + } + ] }, "discordJoin": { "title": "최신 정보", @@ -141,7 +161,7 @@ }, "blogPage": { "title": "블로그", - "description": "", + "description": "최신 소식을 게시합니다. 만약 소식을 더 자주 보고 싶으시다면, 저희를 후원해 주세요..", "published": "게시자", "publishedOn": "켜기" }, @@ -167,23 +187,113 @@ "caption": "여기서 검색하기" } ] + }, + "search": { + "caption": "에러 코드를 아래 칸에 입력하여 문제에 대한 정보를 얻으세요!", + "label": "에러 코드", + "no_match": "일치하는 결과 없음", + "title": "에러 코드를 마주했나요?" + }, + "sidebar": { + "getting_started": "시작하기", + "install_extended": "Pretendo 설치", + "juxt_err": "에러 코드 - Juxt", + "search": "검색", + "welcome": "환영합니다", + "install": "설치" } }, "modals": { "close": "닫기", - "cancel": "취소" + "cancel": "취소", + "confirm": "승인" }, "account": { "loginForm": { "password": "비밀번호", "confirmPassword": "비밀번호 확인", "email": "이메일", - "miiName": "미이 이름", + "miiName": "Mii 이름", "detailsPrompt": "아래에 계정 정보를 입력하세요.", "login": "로그인", "register": "등록하기", - "username": "사용자 이름" + "username": "사용자 이름", + "forgotPassword": "비밀번호를 잊으셨나요?", + "registerPrompt": "계정이 없으신가요?", + "loginPrompt": "이미 계정을 가지고 계신가요?" }, - "account": "계정" + "account": "계정", + "settings": { + "settingCards": { + "profile": "프로필", + "nickname": "닉네임", + "gender": "성별", + "country": "국가/지역", + "timezone": "시간대", + "serverEnv": "서버 환경", + "userSettings": "사용자 설정", + "birthDate": "생일", + "beta": "베타", + "production": "프로덕션", + "passwordPrompt": "Cemu 파일을 다운받으려면 PNID 비밀번호를 입력하세요", + "upgradePrompt": "베타 서버는 베타 테스터에게만 제공됩니다.
베타 테스터가 되시려면, 계정을 더 높은 티어로 업그레이드하세요.", + "fullSignInHistory": "전체 로그인 기록 보기", + "otherSettings": "기타 설정", + "discord": "디스코드", + "connectedToDiscord": "디스코드에 연결된 계정:", + "removeDiscord": "디스코드 계정 삭제", + "noDiscordLinked": "연결된 디스코드 계정이 없습니다.", + "linkDiscord": "디스코드 계정 연결", + "newsletter": "뉴스레터", + "hasAccessPrompt": "당신의 현재 티어로 베타 서버에 접근할 수 있습니다. 멋지네요!", + "signInSecurity": "로그인 및 보안", + "email": "이메일", + "password": "비밀번호", + "passwordResetNotice": "비밀번호를 변경하고 나면, 모든 기기에서 로그아웃됩니다.", + "no_newsletter_notice": "현재 뉴스레터가 제공되지 않습니다. 나중에 다시 확인하세요", + "signInHistory": "로그인 기록", + "newsletterPrompt": "프로젝트 소식 업데이트를 이메일로 받기(언제든 취소할 수 있습니다)", + "no_edit_from_dashboard": "유저 대시보드에서 PNID 설정 변경은 현재 제공되지 않습니다. 계정을 연결한 게임 콘솔에서 변경하세요.", + "no_signins_notice": "현재 로그인 기록이 아직 기록되지 않았습니다. 나중에 다시 확인하세요!" + }, + "upgrade": "계정 업그레이드", + "unavailable": "이용 불가" + }, + "forgotPassword": { + "header": "비밀번호 찾기", + "input": "이메일 주소 또는 PNID", + "submit": "제출", + "sub": "아래에 이메일 주소/PNID를 입력해 주세요." + }, + "resetPassword": { + "header": "비밀번호 재설정", + "sub": "아래에 새 비밀번호를 입력하세요", + "password": "비밀번호", + "confirmPassword": "비밀번호 확인", + "submit": "제출" + }, + "accountLevel": [ + "일반", + "테스터", + "모더레이터", + "개발자" + ], + "banned": "이용 정지됨" + }, + "upgrade": { + "changeTierConfirm": "티어 변경", + "back": "뒤로", + "tierSelectPrompt": "티어 선택", + "unsub": "구독 취소", + "unsubPrompt": "정말로 tiername?을 구독 취소하시겠습니까? 해당 티어가 제공하는 혜택을 더 이상 받을 수 없을 것입니다.", + "unsubConfirm": "구독 취소", + "changeTier": "티어 변경", + "title": "업그레이드", + "changeTierPrompt": "정말로 oldtiername를 취소하고 newtiername를 구독하시겠습니까?", + "month": "개월" + }, + "donation": { + "progress": "$${goald}/월 중에서 $${totd} , 매달 목표의 ${perc}%.", + "upgradePush": "구독자가 되고 멋진 혜택을 받으시려면, 업그레이드 페이지를 방문하세요." } } diff --git a/locales/lt_LT.json b/locales/lt_LT.json index 0967ef4..1d1ae1b 100644 --- a/locales/lt_LT.json +++ b/locales/lt_LT.json @@ -1 +1,31 @@ -{} +{ + "nav": { + "about": "Apie", + "faq": "DUK", + "credits": "Kreditai", + "progress": "Progresas", + "blog": "Dienoraštis", + "account": "Paskyra", + "donate": "Dovanoti", + "accountWidget": { + "settings": "Nustatymai", + "logout": "Atsijungti" + }, + "dropdown": { + "captions": { + "credits": "Susipažink su komanda", + "blog": "Naujausi mūsų atnaujinimai, sutrumpinti", + "progress": "Patikrinkite projekto eigą ir tikslus", + "about": "Apie projektas", + "faq": "Klausimas" + } + } + }, + "hero": { + "title": "Atkurta", + "subtitle": "Žaidimo Serveris", + "buttons": { + "readMore": "Skaityti daugiau" + } + } +} diff --git a/locales/lv_LV.json b/locales/lv_LV.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/locales/lv_LV.json @@ -0,0 +1 @@ +{} diff --git a/locales/nl_NL.json b/locales/nl_NL.json index 2732493..3a2fbab 100644 --- a/locales/nl_NL.json +++ b/locales/nl_NL.json @@ -1,9 +1,9 @@ { "nav": { - "about": "Over", + "about": "Over ons", "faq": "FAQ", "docs": "Docs", - "credits": "Krediet", + "credits": "Bijdragers", "progress": "Vooruitgang", "blog": "Blog", "account": "Account", @@ -25,7 +25,7 @@ "hero": { "subtitle": "Spelservers", "title": "Nagemaakt", - "text": "Pretendo is een gratis en open source vervanger voor de servers van Nintendo voor de 3DS en de Wii U, zodat iedereen online kan spelen, zelfs als de Nintendo servers permanent gestopt worden", + "text": "Pretendo is een gratis en open source vervanger voor de servers van Nintendo voor de 3DS en Wii U, zodat iedereen online kan spelen, zelfs als de Nintendo-servers permanent gestopt worden", "buttons": { "readMore": "Lees meer" } @@ -33,13 +33,13 @@ "aboutUs": { "title": "Over ons", "paragraphs": [ - "Pretendo is een open source project met het doel om het Nintendo Network voor 3DS en Wii U na te maken met clean-room reverse engineering.", + "Pretendo is een open source project met het doel om het Nintendo Network voor de 3DS en Wii U na te maken met clean-room reverse engineering.", "Omdat onze diensten gratis en open source zijn, kunnen ze lang na het sluiten van Nintendo Network bestaan." ] }, "progress": { "title": "Vooruitgang", - "githubRepo": "GitHub repository" + "githubRepo": "GitHub-repository" }, "faq": { "title": "Veelgestelde vragen", @@ -66,8 +66,8 @@ "answer": "Pretendo wordt voornamelijk ontwikkeld voor de hardware van de Wii U en 3DS. Momenteel is de enige emulator met NN ondersteuning, Cemu. Cemu ondersteunt officieel geen custom servers, maar het zou alsnog mogelijk moeten zijn om Pretendo te gebruiken in Cemu. Momenteel ondersteunt Pretendo Cemu niet." }, { - "question": "Als ik van Nintendo Network gebanned ben, blijf ik dan gebanned op Pretendo?", - "answer": "Nee. We hebben geen toegang tot de bans van Nintendo Network, dus je zal niet direct gebanned zijn op onze dienst. Echter zullen wij wel regels hebben bij het gebruik van onze diensten. Als je deze breekt, zal je gebanned worden." + "question": "Werkt Pretendo op Cemu/emulators?", + "answer": "Cemu 2.1 ondersteunt Pretendo officieel onder uw netwerkaccountopties in de emulator. Voor informatie over hoe u aan de slag kunt met Cemu, bekijkt u de documentatie.
Sommige 3DS-emulators of forks ondersteunen ons mogelijk, maar we hebben op dit moment geen officiële aanbevelingen of installatie-instructies. De laatste builds van Citra ondersteunen Pretendo niet." }, { "question": "Gaat Pretendo ook de Wii of Switch ondersteunen?", @@ -75,13 +75,22 @@ }, { "question": "Heb ik hacks nodig om te verbinden met Pretendo?", - "answer": "ja, je zal inderdaad je apparaat moeten hacken. Op de Wii U heb je enkel de Homebrew launcher (d.m.v bijvoorbeeld Haxchi, Coldboot Haxchi, of zelfs de web browser exploit) nodig. Over de 3DS plaatsen we in de toekomst meer informatie." + "answer": "Voor de beste ervaring op consoles moet je je systeem hacken - specifiek Aroma voor Wii U en Luma3DS voor 3DS. Op Wii U is de hackless SSSL-methode echter ook beschikbaar met beperkte functionaliteit. Zie onze installatie-instructies voor meer informatie." + }, + { + "answer": "We hebben geen toegang tot de bans van Nintendo Network, dus niet alle Nintendo Network-gebruikers worden verbannen. We hebben echter regels die we moeten volgen bij het gebruik van de service en het niet naleven van deze regels kan resulteren in een ban.", + "question": "Als ik verbannen word op Nintendo Network, blijf ik dan verbannen als ik Pretendo gebruik?" } ] }, "credits": { "title": "Het team", - "text": "Ontmoet het team achter het project" + "text": "Ontmoet het team achter het project", + "people": [ + { + "caption": "Eigenaar en hoofdontwikkelaar" + } + ] }, "specialThanks": { "title": "Speciale dank", @@ -107,7 +116,7 @@ }, "donation": { "progress": "$${totd} van $${goald}/maand, ${perc}% van de maandelijkse doelstelling.", - "upgradePush": "Om een abonnee te worden en toegang te krijgen tot coole voordelen, bezoek je de upgrade page." + "upgradePush": "Om een abonnee te worden en toegang te krijgen tot coole voordelen, bezoek je de upgradepagina." }, "upgrade": { "changeTierPrompt": "Weet u zeker dat u zich wilt afmelden bij oldtiername en wilt abonneren op newtiername?", @@ -185,7 +194,6 @@ "loginPrompt": "Heb je al een account?" }, "settings": { - "downloadFiles": "Download account bestanden", "upgrade": "Account upgraden", "settingCards": { "nickname": "Bijnaam", @@ -219,7 +227,6 @@ "no_newsletter_notice": "Nieuwsbrief is momenteel niet beschikbaar. Kom later weer terug", "no_edit_from_dashboard": "Het aanpassen van PNID instellingen via het gebruikers dashboard is momenteel niet mogelijk. Pas de gebruikers instellingen aan via je gelinkte game console" }, - "downloadFilesDescription": "(werkt niet op Nintendo Network)", "unavailable": "Niet beschikbaar" }, "accountLevel": [ diff --git a/locales/pl_PL.json b/locales/pl_PL.json index be9e6fd..ff494d8 100644 --- a/locales/pl_PL.json +++ b/locales/pl_PL.json @@ -141,7 +141,7 @@ }, "blogPage": { "title": "Blog", - "description": "", + "description": "Najnowsze aktualizacje w skondensowanych fragmentach. Jeśli chcesz otrzymywać częstsze aktualizacje, rozważ wsparcie nas.", "published": "Opublikowany przez", "publishedOn": "dnia" }, @@ -232,8 +232,6 @@ "newsletterPrompt": "Otrzymuj aktualizacje o projekcie przez email (możesz zrezygnować w dowolnym momencie)", "passwordPrompt": "Wprowadź swoje hasło Pretendo Network ID, aby pobrać pliki Cemu" }, - "downloadFiles": "Pobierz pliki konta", - "downloadFilesDescription": "(nie będzie działać z Nintendo Network)", "upgrade": "Ulepsz konto" }, "accountLevel": [ diff --git a/locales/pt_BR.json b/locales/pt_BR.json index 5c1e6e2..af538c6 100644 --- a/locales/pt_BR.json +++ b/locales/pt_BR.json @@ -141,7 +141,7 @@ }, "blogPage": { "title": "Blog", - "description": "", + "description": "As últimas atualizações em partes condensadas. Se você quiser ver atualizações mais frequentes, considere nos apoiar.", "published": "Publicado por", "publishedOn": "em" }, @@ -200,8 +200,6 @@ "no_edit_from_dashboard": "A edição das configurações de PNID do painel do usuário não está disponível no momento. Atualize as configurações do usuário do seu console de jogos vinculado", "signInSecurity": "Acesso e segurança" }, - "downloadFiles": "Baixar arquivos de conta", - "downloadFilesDescription": "(não funcionará na Nintendo Network)", "unavailable": "Indisponível", "upgrade": "Aprimorar conta" }, diff --git a/locales/pt_PT.json b/locales/pt_PT.json index afc7006..a46bf3c 100644 --- a/locales/pt_PT.json +++ b/locales/pt_PT.json @@ -3,7 +3,7 @@ "faq": "Perguntas Frequentes", "accountWidget": { "logout": "Sair", - "settings": "Configurações" + "settings": "Definições" }, "donate": "Doar", "about": "Sobre", @@ -48,7 +48,6 @@ }, "settings": { "upgrade": "Aprimorar conta", - "downloadFiles": "Descarregarr ficheiros de conta", "settingCards": { "gender": "Gênero", "newsletterPrompt": "Receba atualizações do projeto via e-mail (pode desinscrever-se a qualquer momento)", @@ -81,7 +80,6 @@ "no_newsletter_notice": "Notícias não estão disponíveis no momento. Volte novamente depois", "no_edit_from_dashboard": "A edição das configurações de PNID do painel do utilizador não está disponível no momento. Atualize as configurações do utilizador do seu console de jogos vinculado" }, - "downloadFilesDescription": "(não funcionará na Nintendo Network)", "unavailable": "Indisponível" }, "banned": "Banido", @@ -146,7 +144,7 @@ "hero": { "subtitle": "Servidores de jogos", "title": "Recriados", - "text": "O Pretendo é uma reposição gratuíta e de código aberto para os servidores do Wii U e Nintendo 3DS, permitindo a conectividade online para todos, mesmo após o encerramento dos servidores originais", + "text": "A Pretendo é uma substituição gratuita e de código aberto para os servidores da Nintendo 3DS e da Wii U, permitindo uma conexão online para todos, mesmo depois dos servidores originais serem descontinuados.", "buttons": { "readMore": "Saiba mais" } @@ -154,8 +152,8 @@ "aboutUs": { "title": "Sobre nós", "paragraphs": [ - "Utilizando o design de sala limpa, Pretendo é um projeto de código aberto que visa recriar a Nintendo Network para o Wii U e para família de consoles Nintendo 3DS.", - "Como os nossos serviços serão gratuitos e de código aberto, eles podem continuar existindo por muito mais tempo após o inevitável encerramento da Nintendo Network." + "A Pretendo é um projeto open-source que pretende recriar a Nintendo Network para a 3DS e a Wii U, ao utilizar engenharia reversa \"clean-room\".", + "Sendo que os nossos serviços são grátis e de código-aberto, eles podem assim existir após o inevitável encerramento da Nintendo Network." ] }, "progress": { @@ -166,7 +164,7 @@ "QAs": [ { "question": "O que é Pretendo?", - "answer": "Pretendo é uma reposição de código aberto para a Nintendo Network que visa fornecer servidores personalizados para o Wii U e para a família de consoles Nintendo 3DS. Nosso objetivo é preservar as funcionalidades online desses consoles para permitir que os jogadores continuem experienciando os jogos favoritos na capacidade máxima deles." + "answer": "A Pretendo é uma substituição de código aberto à Nintendo Network que pretende criar servidores para a Wii U e a família de consolas 3DS. O nosso objetivo é preservar as capacidades online destas consolas, permitindo que os jogadores possam continuar a jogar os seus jogos favoritos da Wii U e da 3DS da melhor maneira possível." }, { "question": "Os meus NNIDs existentes funcionarão na Pretendo?", @@ -174,7 +172,7 @@ }, { "question": "Como uso a Pretendo?", - "answer": "Pretendo atualmente não está disponível para uso pelo público geral. No entanto, quando estiver pronto, poderá usar a Pretendo executando nosso patcher homebrew no seu console." + "answer": "A Pretendo não está atualmente num estado pronto para o uso público. No entanto, quando estiver, poderás usar a Pretendo apenas ao abrir o nosso patcher na tua consola." }, { "question": "Sabe quando recurso/serviço estará pronto?", diff --git a/locales/ro_RO.json b/locales/ro_RO.json index cfe1ed8..15d76a7 100644 --- a/locales/ro_RO.json +++ b/locales/ro_RO.json @@ -206,8 +206,6 @@ "no_newsletter_notice": "Buletin indisponibil. Reveniți mai târziu", "newsletter": "Buletin informativ" }, - "downloadFiles": "Descarcă fișierele contului", - "downloadFilesDescription": "(nu va funcționa pe Nintendo Network)", "unavailable": "Indisponibil" }, "accountLevel": [ diff --git a/locales/ru_RU.json b/locales/ru_RU.json index ba4d018..1bcfb54 100644 --- a/locales/ru_RU.json +++ b/locales/ru_RU.json @@ -149,7 +149,6 @@ "forgotPassword": "Забыли пароль?" }, "settings": { - "downloadFilesDescription": "(не будут работать в Nintendo Network)", "settingCards": { "profile": "Профиль", "timezone": "Часовой пояс", @@ -182,7 +181,6 @@ "no_edit_from_dashboard": "Изменение настроек PNID на данный момент невозможна. Пожалуйста, обновите данные о пользователе с привязанной игровой консоли", "newsletter": "Газета" }, - "downloadFiles": "Скачать данные учётной записи", "unavailable": "Недоступно", "upgrade": "Улучшить учётную запись" }, diff --git a/locales/sk_SK.json b/locales/sk_SK.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/locales/sk_SK.json @@ -0,0 +1 @@ +{} diff --git a/locales/sv_SE.json b/locales/sv_SE.json index 89470c3..bce0a4c 100644 --- a/locales/sv_SE.json +++ b/locales/sv_SE.json @@ -70,9 +70,7 @@ "loginPrompt": "Har redan ett konto?" }, "settings": { - "downloadFiles": "Ladda ner kontofiler", "upgrade": "Uppgradera konto", - "downloadFilesDescription": "(kommer inte att funka på Nintendo Nätverket)", "settingCards": { "userSettings": "Användarinställningar", "profile": "Profil", diff --git a/locales/tr_TR.json b/locales/tr_TR.json index b26e6ae..703cf9d 100644 --- a/locales/tr_TR.json +++ b/locales/tr_TR.json @@ -135,10 +135,8 @@ "connectedToDiscord": "Discord'a bu hesap ile bağlanıldı", "discord": "Discord" }, - "downloadFiles": "Hesap dosyalarını indir", "upgrade": "Hesabı yükselt", - "unavailable": "Mevcut değil", - "downloadFilesDescription": "(Nintendo Network'te çalışmayacak)" + "unavailable": "Mevcut değil" }, "loginForm": { "forgotPassword": "Şifreni mi unuttun?", diff --git a/locales/uk_UA.json b/locales/uk_UA.json index d1cd27d..e67094d 100644 --- a/locales/uk_UA.json +++ b/locales/uk_UA.json @@ -139,7 +139,7 @@ "title": "Блог", "publishedOn": "у", "published": "Опубліковано", - "description": "" + "description": "Останні оновлення у стислому вигляді. Якщо ви хочете бачити частіші оновлення, підтримайте нас." }, "account": { "loginForm": { @@ -189,8 +189,6 @@ "no_signins_notice": "Вхідна історія зараз не відстежується. Спробуйте пізніше!", "no_edit_from_dashboard": "Редагування налаштувань PNID з інформаційної панелі користувача зараз не доступна. Будь ласка, оновіть налаштування користувача з прив'язаної ігрової консолі" }, - "downloadFilesDescription": "(не працюватиме в Nintendo Network)", - "downloadFiles": "Завантажити файли облікового запису", "unavailable": "Не Доступно" }, "accountLevel": [ diff --git a/locales/zh_CN.json b/locales/zh_CN.json index 6c1280f..9fc13a6 100644 --- a/locales/zh_CN.json +++ b/locales/zh_CN.json @@ -2,11 +2,11 @@ "nav": { "about": "关于", "faq": "FAQ", - "docs": "文件", + "docs": "帮助文档", "credits": "贡献者", "progress": "进度", "blog": "博客", - "account": "用户", + "account": "账户", "accountWidget": { "settings": "设置", "logout": "登出" @@ -15,7 +15,7 @@ "dropdown": { "captions": { "about": "我们的项目", - "faq": "经常问到的问题", + "faq": "常见问题", "blog": "我们最近的更新(简化版)", "credits": "我们的团队", "progress": "查看目前的进度与目标" @@ -25,7 +25,7 @@ "hero": { "subtitle": "游戏服务器", "title": "重新创建", - "text": "Pretendo 是任天堂 3DS 和 Wii U 服务器的免费和开源替代品,允许所有人在线连接,即使在原始服务器已经关闭", + "text": "Pretendo 是任天堂 3DS 和 Wii U 服务器的免费和开源替代品,允许所有人在线连接,即使在任天堂官方服务器不再运行", "buttons": { "readMore": "更多" } @@ -39,49 +39,49 @@ }, "progress": { "title": "进度", - "githubRepo": "Github 信息库" + "githubRepo": "Github 存储库" }, "faq": { "title": "常见问题", - "text": "以下是我们被问到的一些常见问题,以获得简单的信息。", + "text": "以下是针对常见问题的简要的答案。", "QAs": [ { "question": "什么是 Pretendo?", "answer": "Pretendo 是一个开源的 Nintendo Network 替代品,旨在为 Wii U 和 3DS 系列游戏机构建自定义服务器。我们的目标是保留这些游戏机的在线功能,让玩家可以继续尽情畅玩他们最喜欢的 Wii U 和 3DS 游戏。" }, { - "question": "我现有的 NNID 可以在 Pretendo 上工作吗?", - "answer": "遗憾的是,不行。现有的 NNID 将无法在 Pretendo 上运行,因为只有任天堂拥有您的用户数据;虽然 NNID 到 PNID 的迁移在理论上是可能的,但它存在风险并且需要我们不希望持有的敏感用户数据。" + "question": "现有的 NNID 能用于 Pretendo 吗?", + "answer": "遗憾的是,不行。因为只有任天堂拥有您的用户数据,现有的 NNID 不可以用于 Pretendo ;虽然 NNID 到 PNID 的迁移在理论上是可能的,但它存在风险并且需要我们不希望持有的敏感用户数据。" }, { "question": "如何使用 Pretendo?", "answer": "Pretendo 目前尚未处于可供公众使用的状态。但是,一旦完成,您只需在系统上运行我们的自制补丁程序即可使用 Pretendo。" }, { - "question": "你知道 功能/服务 什么时候准备好吗?", + "question": "什么时候某某功能/服务能完成?", "answer": "不可以。许多 Pretendo 的功能/服务是独立开发的(例如,Miiverse 可能由一位开发人员构建,而 Accounts 和 Friends 正在由另一位开发人员构建),因此我们无法给出这需要多长时间的总体预计到达时间。" }, { "question": "Pretendo 是否适用于 Cemu/模拟器?", - "answer": "Pretendo 支持任何可以与任天堂网络交互的客户端。目前唯一具有这种功能的虚拟机是 Cemu。 Cemu 2.0 在模拟器中的网络帐户选项下正式官方支持 Pretendo。有关如何开始使用 Cemu 的信息,请查看文档
Citra 不支持真实在线多人联接,并且因此不适用于 Pretendo,并且根本没有显示出支持真正在线游戏的迹象。 Mikage,一种用于移动设备的 3DS 模拟器,可能会在未来提供支持,尽管这还远未确定。" + "answer": "Pretendo 支持任何可以与任天堂网络交互的客户端。目前唯一具有此功能的模拟器是 Cemu。 Cemu 2.0 在模拟器中的网络帐户选项下已正式支持了 Pretendo。有关开始使用 Cemu 的信息,请查阅文档
Citra 不支持真正意义上的在线多人联机,因此 Pretendo 在 Citra 上不可用,并且完全没有在未来支持在线多人联机的迹象。Mikage,一款用于移动设备的 3DS 模拟器,可能会在未来支持在线多人联机,尽管这尚不确定。" }, { "question": "如果我在 Nintendo Network 上被封账号,我在使用 Pretendo 时还会被禁吗?", - "answer": "我们将无法访问 Nintendo Network 的禁令,并且不会禁止所有用户使用我们的服务。但是,我们在使用服务时将遵守规则,不遵守这些规则可能会导致被禁止。" + "answer": "我们无法访问 Nintendo Network 的用户黑名单,因此不会禁止任何用户使用我们的服务。但是,使用本服务时也需要遵守规则,否则可能会导致被禁。" }, { "question": "Pretendo 会支持 Wii/Switch 吗?", - "answer": "Wii 已经有 Wiimmfi 提供的自定义服务器。我们目前不希望以 Switch 为目标,因为它既是付费的,又与 Nintendo Network 完全不同。" + "answer": "Wii 已经有 Wiimmfi 提供的自定义服务器。我们目前不以 Switch 为目标,因为它不仅付费而且与 Nintendo Network 的构造完全不同。" }, { - "question": "我需要黑客来连接吗?", + "question": "我需要一台破解过的机器才能连接吗?", "answer": "是的,您需要破解您的设备才能连接;但是,在 Wii U 上,您只需要访问 Homebrew Launcher(即 Haxchi、Coldboot Haxchi 甚至网络浏览器漏洞利用程序),稍后会提供有关 3DS 将如何连接的信息。" } ] }, "showcase": { "title": "我们做什么", - "text": "我们的项目有很多组件。这里是其中的一些。", + "text": "我们的项目包含很多组件。以下是其中一部分。", "cards": [ { "title": "游戏服务器", @@ -89,10 +89,10 @@ }, { "title": "Juxtaposition", - "caption": "对 Miiverse 的重新想象,仿佛它是在现代时代制造的。" + "caption": "对Miiverse的重新构想,让它在当代焕然一新。" }, { - "title": "支持 Cemu", + "title": "Cemu 支持", "caption": "即使没有硬件也能玩你最喜欢的 Wii U 游戏!" } ] @@ -141,7 +141,7 @@ }, "blogPage": { "title": "博客", - "description": "", + "description": "最新的更新都浓缩在这里。如果你需要更频繁的更新,请查看 捐赠.", "published": "作者", "publishedOn": "在" }, @@ -230,8 +230,6 @@ "no_signins_notice": "目前没有任何登录历史。请稍后再试!", "no_edit_from_dashboard": "目前无法编辑在此页面修改 PNID 设置。请通过你的游戏设备修改" }, - "downloadFiles": "下载账号文件", - "downloadFilesDescription": "(无法在任天堂网络上使用)", "upgrade": "升级账号", "unavailable": "无法获得" }, diff --git a/locales/zh_Hant.json b/locales/zh_Hant.json index 839f477..35dc244 100644 --- a/locales/zh_Hant.json +++ b/locales/zh_Hant.json @@ -59,7 +59,7 @@ }, { "question": "我現有的 NNID 可以用在 Pretendo 上嗎?", - "answer": "很抱歉,不行。你現有的 NNID 不能用於 Pretendo,你的帳號資料都在任天堂手上,雖然 NNID 到 PNID 的遷徙理論上是能做到的,但是存在風險並且會包含我們不想知道的個人隱私。" + "answer": "很抱歉,不行。你現有的 NNID 不能用於 Pretendo,你的帳號資料都在任天堂手上,雖然 NNID 到 PNID 的轉移理論上是能做到的,但是存在風險並且會包含我們不想知道的個人隱私。" }, { "question": "如何使用 Pretendo ?", diff --git a/package-lock.json b/package-lock.json index 081799b..f85aa3c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,7 +34,9 @@ "stripe": "^9.9.0" }, "devDependencies": { - "eslint": "^7.32.0" + "@pretendonetwork/eslint-config": "^0.0.3", + "eslint": "^9.18.0", + "globals": "^15.14.0" } }, "node_modules/@aws-crypto/crc32": { @@ -1185,109 +1187,6 @@ "tslib": "^2.3.1" } }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@discordjs/collection": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", @@ -1317,33 +1216,85 @@ "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz", "integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg==" }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "node_modules/@eslint-community/eslint-plugin-eslint-comments": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.4.1.tgz", + "integrity": "sha512-lb/Z/MzbTf7CaVYM9WCFNQZ4L1yi3ev2fsFPF99h31ljhSEyUoyEsKsNWiU+qD1glbYTDJdqgyaLKtyTkkqtuQ==", "dev": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" + "escape-string-regexp": "^4.0.0", + "ignore": "^5.2.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, "dependencies": { - "ms": "2.1.2" + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", + "dev": true, + "dependencies": { + "@eslint/object-schema": "^2.1.5", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -1354,12 +1305,131 @@ } } }, - "node_modules/@eslint/eslintrc/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/@eslint/config-array/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/@eslint/core": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/@eslint/js": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", + "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", + "dev": true, + "dependencies": { + "@eslint/core": "^0.10.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@fastify/busboy": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", @@ -1368,48 +1438,66 @@ "node": ">=14" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, "engines": { - "node": ">=10.10.0" + "node": ">=18.18.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, "dependencies": { - "ms": "2.1.2" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=18.18.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", - "dev": true + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@mongodb-js/saslprep": { "version": "1.1.1", @@ -1463,11 +1551,76 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "engines": { + "node": ">=12.4.0" + } + }, "node_modules/@pretendonetwork/error-codes": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@pretendonetwork/error-codes/-/error-codes-1.0.3.tgz", "integrity": "sha512-Kfj/WeaKLTQ8TJAGeTnMZVmGq3W6Ypzy383DITsVxVpViJY6e2fdtmXRoPhL5a/7UIR0HUJKGwPALEdLeNicAw==" }, + "node_modules/@pretendonetwork/eslint-config": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@pretendonetwork/eslint-config/-/eslint-config-0.0.3.tgz", + "integrity": "sha512-aV+TY4Bi4YaOc68x3Eq6y3zeDudQDfyQzLloRby011rMeTtKQWeK1YTVcBU72c6CvnSm5cAIHjFf1bZ7D3rGXw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-plugin-eslint-comments": "^4.4.1", + "@stylistic/eslint-plugin": "^2.12.1", + "@typescript-eslint/parser": "^8.20.0", + "eslint": "^9.17.0", + "eslint-import-resolver-typescript": "^3.7.0", + "eslint-plugin-import": "^2.31.0", + "typescript-eslint": "^8.19.1" + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, "node_modules/@sapphire/async-queue": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.1.tgz", @@ -2032,6 +2185,25 @@ "node": ">=14.0.0" } }, + "node_modules/@stylistic/eslint-plugin": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.13.0.tgz", + "integrity": "sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^8.13.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", @@ -2062,11 +2234,29 @@ "@types/ms": "*" } }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true + }, "node_modules/@types/http-cache-semantics": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, "node_modules/@types/keyv": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz", @@ -2128,6 +2318,271 @@ "@types/node": "*" } }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.20.0.tgz", + "integrity": "sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.20.0", + "@typescript-eslint/type-utils": "8.20.0", + "@typescript-eslint/utils": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.20.0.tgz", + "integrity": "sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.20.0", + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/typescript-estree": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz", + "integrity": "sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.20.0.tgz", + "integrity": "sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "8.20.0", + "@typescript-eslint/utils": "8.20.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/@typescript-eslint/types": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.20.0.tgz", + "integrity": "sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.20.0.tgz", + "integrity": "sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.20.0.tgz", + "integrity": "sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.20.0", + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/typescript-estree": "8.20.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.20.0.tgz", + "integrity": "sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.20.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@xmldom/is-dom-node": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@xmldom/is-dom-node/-/is-dom-node-1.0.1.tgz", @@ -2210,24 +2665,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -2256,11 +2693,124 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", @@ -2299,15 +2849,6 @@ "inherits": "2.0.1" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -2322,9 +2863,12 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2425,6 +2969,18 @@ "concat-map": "0.0.1" } }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -2719,12 +3275,44 @@ "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==" }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2984,9 +3572,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "dependencies": { "path-key": "^3.1.0", @@ -3023,6 +3611,57 @@ "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==" }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -3070,15 +3709,37 @@ "node": ">=10" } }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { - "object-keys": "^1.0.12" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/defined": { @@ -3177,15 +3838,15 @@ "license": "MIT" }, "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "dependencies": { "esutils": "^2.0.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" } }, "node_modules/domain-browser": { @@ -3197,6 +3858,19 @@ "npm": ">=1.2" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -3229,12 +3903,6 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -3251,43 +3919,76 @@ "once": "^1.4.0" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "node_modules/enhanced-resolve": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", + "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", "dev": true, "dependencies": { - "ansi-colors": "^4.1.1" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=8.6" + "node": ">=10.13.0" } }, "node_modules/es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -3296,14 +3997,66 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -3330,106 +4083,263 @@ } }, "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", + "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", "dev": true, "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.10.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.18.0", + "@eslint/plugin-kit": "^0.2.5", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.7.0.tgz", + "integrity": "sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==", + "dev": true, + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.7", + "enhanced-resolve": "^5.15.0", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", + "is-glob": "^4.0.3", + "stable-hash": "^0.0.4" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-typescript/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-typescript/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "dev": true, + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/debug": { @@ -3456,26 +4366,32 @@ "dev": true }, "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/espree/node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=4" + "node": ">=0.4.0" } }, "node_modules/esprima": { @@ -3491,9 +4407,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -3502,15 +4418,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -3523,19 +4430,10 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" @@ -3700,6 +4598,34 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -3709,7 +4635,7 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "node_modules/fast-safe-stringify": { @@ -3738,16 +4664,37 @@ "fxparser": "src/cli/cli.js" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/fastq": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", "dev": true, "dependencies": { - "flat-cache": "^3.0.4" + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "dependencies": { + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/finalhandler": { @@ -3778,29 +4725,48 @@ "node": ">= 0.8" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true }, - "node_modules/foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } }, "node_modules/form-data": { "version": "3.0.1", @@ -3851,15 +4817,41 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/get-assigned-identifiers": { "version": "1.2.0", @@ -3867,18 +4859,40 @@ "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==" }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -3894,12 +4908,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -3908,6 +4924,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.9.0.tgz", + "integrity": "sha512-52n24W52sIueosRe0XZ8Ex5Yle+WbhfCKnV/gWXpbVR8FXNTfqdKEKUSypKso66VRHTvvcQxL44UTZbJRlCTnw==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -3928,32 +4956,56 @@ } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/got": { "version": "11.8.5", "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", @@ -3983,6 +5035,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "node_modules/graphql": { "version": "16.8.1", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", @@ -4051,9 +5109,13 @@ } }, "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4067,10 +5129,36 @@ "node": ">=8" } }, - "node_modules/has-symbols": { + "node_modules/has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "engines": { "node": ">= 0.4" }, @@ -4079,11 +5167,11 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -4146,6 +5234,17 @@ "minimalistic-assert": "^1.0.1" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -4232,9 +5331,9 @@ ] }, "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" @@ -4316,13 +5415,14 @@ } }, "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -4356,24 +5456,64 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, "dependencies": { - "has-bigints": "^1.0.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.0.tgz", + "integrity": "sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4387,10 +5527,19 @@ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, + "node_modules/is-bun-module": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.3.0.tgz", + "integrity": "sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==", + "dev": true, + "dependencies": { + "semver": "^7.6.3" + } + }, "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "engines": { "node": ">= 0.4" }, @@ -4399,22 +5548,44 @@ } }, "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4434,19 +5605,25 @@ "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, + "dependencies": { + "call-bound": "^1.0.3" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-generator-function": { @@ -4464,9 +5641,9 @@ } }, "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { "is-extglob": "^2.1.1" @@ -4475,10 +5652,11 @@ "node": ">=0.10.0" } }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -4486,12 +5664,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4501,12 +5690,15 @@ } }, "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -4515,20 +5707,41 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4538,11 +5751,14 @@ } }, "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -4552,15 +5768,11 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", - "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -4569,12 +5781,44 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4588,13 +5832,7 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "node_modules/js-yaml": { @@ -4626,6 +5864,18 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -4669,9 +5919,9 @@ } }, "node_modules/keyv": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.4.tgz", - "integrity": "sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dependencies": { "json-buffer": "3.0.1" } @@ -4706,11 +5956,20 @@ "node": ">= 0.8.0" } }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/lodash.memoize": { "version": "3.0.4", @@ -4722,12 +5981,6 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -4736,18 +5989,6 @@ "node": ">=8" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/marked": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz", @@ -4759,6 +6000,14 @@ "node": ">= 12" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -4788,6 +6037,15 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -4796,6 +6054,31 @@ "node": ">= 0.6" } }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/mii-js": { "version": "1.0.4", "resolved": "git+ssh://git@github.com/PretendoNetwork/mii-js.git#5d8eb8013514a13b0df6eb4a5bfd8b5a63fb9861", @@ -5115,9 +6398,12 @@ } }, "node_modules/object-inspect": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", - "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5126,18 +6412,22 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -5147,6 +6437,56 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -5175,9 +6515,9 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { "deep-is": "^0.1.3", @@ -5185,7 +6525,7 @@ "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -5196,6 +6536,23 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-cancelable": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", @@ -5204,6 +6561,36 @@ "node": ">=8" } }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -5254,6 +6641,15 @@ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -5304,6 +6700,26 @@ "node": ">=0.12" } }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -5326,15 +6742,6 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -5413,6 +6820,26 @@ "node": ">=0.4.x" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -5493,34 +6920,62 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5540,6 +6995,15 @@ "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/responselike": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", @@ -5548,19 +7012,14 @@ "lowercase-keys": "^2.0.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, "node_modules/ripemd160": { @@ -5572,11 +7031,98 @@ "inherits": "^2.0.1" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -5600,13 +7146,10 @@ } }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -5667,6 +7210,51 @@ "node": ">= 0.8.0" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -5719,13 +7307,68 @@ "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5755,23 +7398,6 @@ } ] }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -5811,6 +7437,12 @@ "memory-pager": "^1.0.2" } }, + "node_modules/stable-hash": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.4.tgz", + "integrity": "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==", + "dev": true + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -5910,54 +7542,69 @@ } ] }, - "node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/strip-bom-string": { @@ -6017,6 +7664,17 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/syntax-error": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", @@ -6025,51 +7683,15 @@ "acorn-node": "^1.2.0" } }, - "node_modules/table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, "engines": { - "node": ">=10.0.0" + "node": ">=6" } }, - "node_modules/table/node_modules/ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -6095,6 +7717,18 @@ "node": ">=0.6.0" } }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -6114,6 +7748,30 @@ "node": ">=12" } }, + "node_modules/ts-api-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", + "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", + "dev": true, + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -6136,18 +7794,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -6160,11 +7806,121 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, + "node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.20.0.tgz", + "integrity": "sha512-Kxz2QRFsgbWj6Xcftlw3Dd154b3cEPFqQC+qMZrMypSijPd4UanKKvoKDrJ4o8AIfZFKAF+7sMaEIR8mTElozA==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.20.0", + "@typescript-eslint/parser": "8.20.0", + "@typescript-eslint/utils": "8.20.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, "node_modules/uglify-js": { "version": "3.9.2", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.2.tgz", @@ -6189,14 +7945,18 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6301,12 +8061,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -6356,31 +8110,86 @@ } }, "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-typed-array": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", - "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.7" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6494,11 +8303,17 @@ "node": ">=0.4" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } }, "dependencies": { @@ -7504,90 +9319,6 @@ "tslib": "^2.3.1" } }, - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", - "dev": true - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "@discordjs/collection": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", @@ -7613,77 +9344,192 @@ } } }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "@eslint-community/eslint-plugin-eslint-comments": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.4.1.tgz", + "integrity": "sha512-lb/Z/MzbTf7CaVYM9WCFNQZ4L1yi3ev2fsFPF99h31ljhSEyUoyEsKsNWiU+qD1glbYTDJdqgyaLKtyTkkqtuQ==", "dev": true, "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" + "escape-string-regexp": "^4.0.0", + "ignore": "^5.2.4" + } + }, + "@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.4.3" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + } + } + }, + "@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true + }, + "@eslint/config-array": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", + "dev": true, + "requires": { + "@eslint/object-schema": "^2.1.5", + "debug": "^4.3.1", + "minimatch": "^3.1.2" }, "dependencies": { "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.3" } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } }, + "@eslint/core": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.15" + } + }, + "@eslint/eslintrc": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, + "globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "@eslint/js": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", + "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", + "dev": true + }, + "@eslint/object-schema": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", + "dev": true + }, + "@eslint/plugin-kit": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", + "dev": true, + "requires": { + "@eslint/core": "^0.10.0", + "levn": "^0.4.1" + } + }, "@fastify/busboy": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", "integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==" }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true + }, + "@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true } } }, - "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true }, "@mongodb-js/saslprep": { @@ -7729,11 +9575,64 @@ } } }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true + }, "@pretendonetwork/error-codes": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@pretendonetwork/error-codes/-/error-codes-1.0.3.tgz", "integrity": "sha512-Kfj/WeaKLTQ8TJAGeTnMZVmGq3W6Ypzy383DITsVxVpViJY6e2fdtmXRoPhL5a/7UIR0HUJKGwPALEdLeNicAw==" }, + "@pretendonetwork/eslint-config": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@pretendonetwork/eslint-config/-/eslint-config-0.0.3.tgz", + "integrity": "sha512-aV+TY4Bi4YaOc68x3Eq6y3zeDudQDfyQzLloRby011rMeTtKQWeK1YTVcBU72c6CvnSm5cAIHjFf1bZ7D3rGXw==", + "dev": true, + "requires": { + "@eslint-community/eslint-plugin-eslint-comments": "^4.4.1", + "@stylistic/eslint-plugin": "^2.12.1", + "@typescript-eslint/parser": "^8.20.0", + "eslint": "^9.17.0", + "eslint-import-resolver-typescript": "^3.7.0", + "eslint-plugin-import": "^2.31.0", + "typescript-eslint": "^8.19.1" + } + }, + "@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, "@sapphire/async-queue": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.1.tgz", @@ -8176,6 +10075,19 @@ "tslib": "^2.5.0" } }, + "@stylistic/eslint-plugin": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.13.0.tgz", + "integrity": "sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "^8.13.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" + } + }, "@szmarczak/http-timer": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", @@ -8203,11 +10115,29 @@ "@types/ms": "*" } }, + "@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true + }, "@types/http-cache-semantics": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, "@types/keyv": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz", @@ -8269,6 +10199,171 @@ "@types/node": "*" } }, + "@typescript-eslint/eslint-plugin": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.20.0.tgz", + "integrity": "sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.20.0", + "@typescript-eslint/type-utils": "8.20.0", + "@typescript-eslint/utils": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.20.0.tgz", + "integrity": "sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "8.20.0", + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/typescript-estree": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0", + "debug": "^4.3.4" + }, + "dependencies": { + "debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "@typescript-eslint/scope-manager": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz", + "integrity": "sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.20.0.tgz", + "integrity": "sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "8.20.0", + "@typescript-eslint/utils": "8.20.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "@typescript-eslint/types": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.20.0.tgz", + "integrity": "sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.20.0.tgz", + "integrity": "sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "@typescript-eslint/utils": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.20.0.tgz", + "integrity": "sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.20.0", + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/typescript-estree": "8.20.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.20.0.tgz", + "integrity": "sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.20.0", + "eslint-visitor-keys": "^4.2.0" + } + }, "@xmldom/is-dom-node": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@xmldom/is-dom-node/-/is-dom-node-1.0.1.tgz", @@ -8327,18 +10422,6 @@ "uri-js": "^4.2.2" } }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -8363,11 +10446,88 @@ } } }, + "array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "requires": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + } + }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, + "array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + } + }, + "array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + } + }, + "array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + } + }, "asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", @@ -8410,12 +10570,6 @@ } } }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -8427,9 +10581,12 @@ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "requires": { + "possible-typed-array-names": "^1.0.0" + } }, "balanced-match": { "version": "1.0.0", @@ -8502,6 +10659,15 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -8747,12 +10913,32 @@ "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==" }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + } + }, + "call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + } + }, + "call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" } }, "callsites": { @@ -8965,9 +11151,9 @@ } }, "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -8998,6 +11184,39 @@ "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==" }, + "data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "requires": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + } + }, + "data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "requires": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + } + }, + "data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -9032,12 +11251,25 @@ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "requires": { - "object-keys": "^1.0.12" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "defined": { @@ -9118,9 +11350,9 @@ "from": "discord-oauth2@github:ryanblenis/discord-oauth2" }, "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -9131,6 +11363,16 @@ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } + }, "duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -9165,12 +11407,6 @@ } } }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -9184,50 +11420,123 @@ "once": "^1.4.0" } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "enhanced-resolve": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", + "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", "dev": true, "requires": { - "ansi-colors": "^4.1.1" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" } }, "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "dev": true, "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + } + }, + "es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "requires": { + "es-errors": "^1.3.0" + } + }, + "es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + } + }, + "es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" } }, "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" } }, "escape-html": { @@ -9242,51 +11551,45 @@ "dev": true }, "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", + "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", "dev": true, "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.10.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.18.0", + "@eslint/plugin-kit": "^0.2.5", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3" }, "dependencies": { "debug": { @@ -9306,54 +11609,174 @@ } } }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" }, "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } }, + "eslint-import-resolver-typescript": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.7.0.tgz", + "integrity": "sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==", + "dev": true, + "requires": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.7", + "enhanced-resolve": "^5.15.0", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", + "is-glob": "^4.0.3", + "stable-hash": "^0.0.4" + }, + "dependencies": { + "debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "dev": true, + "requires": { + "debug": "^3.2.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "dev": true, + "requires": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true }, "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" }, "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true } } @@ -9364,20 +11787,12 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "requires": { "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } } }, "esrecurse": { @@ -9387,20 +11802,12 @@ "dev": true, "requires": { "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } } }, "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, "esutils": { @@ -9520,6 +11927,30 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -9529,7 +11960,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "fast-safe-stringify": { @@ -9545,13 +11976,31 @@ "strnum": "^1.0.5" } }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "fastq": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", "dev": true, "requires": { - "flat-cache": "^3.0.4" + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "requires": { + "flat-cache": "^4.0.0" + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" } }, "finalhandler": { @@ -9578,26 +12027,39 @@ } } }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "requires": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" } }, "flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } }, "form-data": { "version": "3.0.1", @@ -9636,14 +12098,28 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, "get-assigned-identifiers": { @@ -9652,13 +12128,29 @@ "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==" }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + } + }, + "get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "requires": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" } }, "get-stream": { @@ -9670,12 +12162,23 @@ } }, "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + } + }, + "get-tsconfig": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.9.0.tgz", + "integrity": "sha512-52n24W52sIueosRe0XZ8Ex5Yle+WbhfCKnV/gWXpbVR8FXNTfqdKEKUSypKso66VRHTvvcQxL44UTZbJRlCTnw==", + "dev": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" } }, "glob": { @@ -9692,23 +12195,35 @@ } }, "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" } }, "globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", + "dev": true + }, + "globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "requires": { - "type-fest": "^0.20.2" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" } }, + "gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" + }, "got": { "version": "11.8.5", "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", @@ -9732,6 +12247,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "graphql": { "version": "16.8.1", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", @@ -9780,9 +12301,10 @@ } }, "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true }, "has-flag": { "version": "4.0.0", @@ -9790,17 +12312,34 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "has-symbols": { + "has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "requires": { + "dunder-proto": "^1.0.0" + } + }, + "has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" }, "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "requires": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" } }, "hash-base": { @@ -9839,6 +12378,14 @@ "minimalistic-assert": "^1.0.1" } }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -9899,9 +12446,9 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true }, "import-fresh": { @@ -9967,13 +12514,14 @@ } }, "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" } }, "ip": { @@ -9995,21 +12543,46 @@ "has-tostringtag": "^1.0.0" } }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, "requires": { - "has-bigints": "^1.0.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + } + }, + "is-async-function": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.0.tgz", + "integrity": "sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==", + "dev": true, + "requires": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + } + }, + "is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "requires": { + "has-bigints": "^1.0.2" } }, "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "dev": true, "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" } }, "is-buffer": { @@ -10017,25 +12590,47 @@ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, + "is-bun-module": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.3.0.tgz", + "integrity": "sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==", + "dev": true, + "requires": { + "semver": "^7.6.3" + } + }, "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" }, "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "requires": { - "has": "^1.0.3" + "hasown": "^2.0.2" + } + }, + "is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" } }, "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, "requires": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" } }, "is-extendable": { @@ -10046,14 +12641,17 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "requires": { + "call-bound": "^1.0.3" + } }, "is-generator-function": { "version": "1.0.10", @@ -10064,75 +12662,115 @@ } }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" } }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + "is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, "requires": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" } }, "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" } }, + "is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true + }, "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "requires": { + "call-bound": "^1.0.3" + } }, "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, "requires": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" } }, "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, "requires": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" } }, "is-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", - "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.16" } }, + "is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true + }, "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "dev": true, "requires": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.2" + } + }, + "is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "requires": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" } }, "isarray": { @@ -10143,13 +12781,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "js-yaml": { @@ -10178,6 +12810,15 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -10207,9 +12848,9 @@ "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==" }, "keyv": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.4.tgz", - "integrity": "sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "requires": { "json-buffer": "3.0.1" } @@ -10238,11 +12879,14 @@ "type-check": "~0.4.0" } }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } }, "lodash.memoize": { "version": "3.0.4", @@ -10254,31 +12898,21 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, "lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "marked": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz", "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==" }, + "math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -10305,11 +12939,35 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, + "micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "dependencies": { + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + } + } + }, "mii-js": { "version": "git+ssh://git@github.com/PretendoNetwork/mii-js.git#5d8eb8013514a13b0df6eb4a5bfd8b5a63fb9861", "from": "mii-js@github:PretendoNetwork/mii-js#v1.0.4", @@ -10554,26 +13212,65 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-inspect": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", - "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==" + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==" }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" } }, + "object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + } + }, + "object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + } + }, + "object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -10596,9 +13293,9 @@ } }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "requires": { "deep-is": "^0.1.3", @@ -10606,7 +13303,7 @@ "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "word-wrap": "^1.2.5" } }, "os-browserify": { @@ -10614,11 +13311,40 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, + "own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + } + }, "p-cancelable": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -10663,6 +13389,12 @@ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -10701,6 +13433,17 @@ "sha.js": "^2.4.8" } }, + "picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true + }, + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -10717,12 +13460,6 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -10784,6 +13521,12 @@ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, "quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -10854,25 +13597,44 @@ } } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true + "reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + } }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true + "regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + } }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-alpn": { @@ -10886,6 +13648,12 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true + }, "responselike": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", @@ -10894,14 +13662,11 @@ "lowercase-keys": "^2.0.0" } }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true }, "ripemd160": { "version": "2.0.2", @@ -10912,11 +13677,70 @@ "inherits": "^2.0.1" } }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -10937,13 +13761,10 @@ } }, "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true }, "send": { "version": "0.18.0", @@ -10991,6 +13812,42 @@ "send": "0.18.0" } }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + } + }, + "set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "requires": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + } + }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -11034,13 +13891,47 @@ "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + } + }, + "side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "requires": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + } + }, + "side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + } + }, + "side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" } }, "sift": { @@ -11053,17 +13944,6 @@ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -11092,6 +13972,12 @@ "memory-pager": "^1.0.2" } }, + "stable-hash": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.4.tgz", + "integrity": "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==", + "dev": true + }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -11174,44 +14060,50 @@ } } }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" } }, "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, "strip-bom-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", @@ -11254,6 +14146,11 @@ "has-flag": "^4.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, "syntax-error": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", @@ -11262,44 +14159,10 @@ "acorn-node": "^1.2.0" } }, - "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true }, "through": { @@ -11324,6 +14187,15 @@ "process": "~0.11.0" } }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, "toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -11337,6 +14209,25 @@ "punycode": "^2.1.1" } }, + "ts-api-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", + "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", + "dev": true, + "requires": {} + }, + "tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, "tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -11356,12 +14247,6 @@ "prelude-ls": "^1.2.1" } }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -11371,11 +14256,82 @@ "mime-types": "~2.1.24" } }, + "typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "requires": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + } + }, + "typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + } + }, + "typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + } + }, + "typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + } + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, + "typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, + "peer": true + }, + "typescript-eslint": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.20.0.tgz", + "integrity": "sha512-Kxz2QRFsgbWj6Xcftlw3Dd154b3cEPFqQC+qMZrMypSijPd4UanKKvoKDrJ4o8AIfZFKAF+7sMaEIR8mTElozA==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "8.20.0", + "@typescript-eslint/parser": "8.20.0", + "@typescript-eslint/utils": "8.20.0" + } + }, "uglify-js": { "version": "3.9.2", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.2.tgz", @@ -11391,14 +14347,15 @@ "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==" }, "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" } }, "undeclared-identifiers": { @@ -11484,12 +14441,6 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -11524,28 +14475,70 @@ } }, "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + } + }, + "which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "requires": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" } }, "which-typed-array": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", - "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.7" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" } }, "word-wrap": { @@ -11629,10 +14622,10 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true } } diff --git a/package.json b/package.json index d48a71d..ea4090c 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,10 @@ "scripts": { "start": "node src/server.js", "build": "npm run browserify", - "browserify": "npm run browserify-miieditor && npm run browserify-forgot-password && npm run browserify-reset-password", + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "browserify": "npm run browserify-miieditor && npm run browserify-reset-password", "browserify-miieditor": "browserify ./public/assets/js/miieditor.js -o ./public/assets/js/miieditor.bundled.js", - "browserify-forgot-password": "browserify ./public/assets/js/forgot-password.js -o ./public/assets/js/forgot-password.bundled.js", "browserify-reset-password": "browserify ./public/assets/js/reset-password.js -o ./public/assets/js/reset-password.bundled.js" }, "repository": { @@ -47,6 +48,8 @@ "stripe": "^9.9.0" }, "devDependencies": { - "eslint": "^7.32.0" + "@pretendonetwork/eslint-config": "^0.0.3", + "eslint": "^9.18.0", + "globals": "^15.14.0" } -} +} \ No newline at end of file diff --git a/public/assets/css/forgot-password.css b/public/assets/css/forgot-password.css index 1a0572a..0432025 100644 --- a/public/assets/css/forgot-password.css +++ b/public/assets/css/forgot-password.css @@ -100,6 +100,9 @@ form.account a.register { .banner-notice.success div { background: var(--green-shade-0); } +.banner-notice.error div { + background: var(--red-shade-1); +} form.account.register { display: grid; @@ -108,7 +111,7 @@ form.account.register { column-gap: 24px; margin-bottom: 48px; } -form.account.register div.h-captcha { +form.account.forgot-password div.h-captcha { grid-column: 1 / span 2; display: flex; justify-content: center; diff --git a/public/assets/images/blogposts/11-1-24.png b/public/assets/images/blogposts/11-1-24.png new file mode 100644 index 0000000..ce1d48c Binary files /dev/null and b/public/assets/images/blogposts/11-1-24.png differ diff --git a/public/assets/images/blogposts/5-19-24.png b/public/assets/images/blogposts/5-19-24.png new file mode 100644 index 0000000..cdf0439 Binary files /dev/null and b/public/assets/images/blogposts/5-19-24.png differ diff --git a/public/assets/images/blogposts/august-2-2024/acnl-1.png b/public/assets/images/blogposts/august-2-2024/acnl-1.png new file mode 100644 index 0000000..8460e72 Binary files /dev/null and b/public/assets/images/blogposts/august-2-2024/acnl-1.png differ diff --git a/public/assets/images/blogposts/august-2-2024/acnl-2.png b/public/assets/images/blogposts/august-2-2024/acnl-2.png new file mode 100644 index 0000000..73ec07b Binary files /dev/null and b/public/assets/images/blogposts/august-2-2024/acnl-2.png differ diff --git a/public/assets/images/blogposts/august-2-2024/acnl-site.png b/public/assets/images/blogposts/august-2-2024/acnl-site.png new file mode 100644 index 0000000..309617e Binary files /dev/null and b/public/assets/images/blogposts/august-2-2024/acnl-site.png differ diff --git a/public/assets/images/blogposts/august-2-2024/game-and-wario-1.png b/public/assets/images/blogposts/august-2-2024/game-and-wario-1.png new file mode 100644 index 0000000..8f11545 Binary files /dev/null and b/public/assets/images/blogposts/august-2-2024/game-and-wario-1.png differ diff --git a/public/assets/images/blogposts/august-2-2024/game-and-wario-2.png b/public/assets/images/blogposts/august-2-2024/game-and-wario-2.png new file mode 100644 index 0000000..d10a04f Binary files /dev/null and b/public/assets/images/blogposts/august-2-2024/game-and-wario-2.png differ diff --git a/public/assets/images/blogposts/august-2-2024/miiverse-side-by-side.mp4 b/public/assets/images/blogposts/august-2-2024/miiverse-side-by-side.mp4 new file mode 100644 index 0000000..3818a64 Binary files /dev/null and b/public/assets/images/blogposts/august-2-2024/miiverse-side-by-side.mp4 differ diff --git a/public/assets/images/blogposts/august-2-2024/minecraft.png b/public/assets/images/blogposts/august-2-2024/minecraft.png new file mode 100644 index 0000000..d397e9f Binary files /dev/null and b/public/assets/images/blogposts/august-2-2024/minecraft.png differ diff --git a/public/assets/images/blogposts/august-2-2024/preview.png b/public/assets/images/blogposts/august-2-2024/preview.png new file mode 100644 index 0000000..73ec07b Binary files /dev/null and b/public/assets/images/blogposts/august-2-2024/preview.png differ diff --git a/public/assets/images/blogposts/august-2-2024/smash-3ds.png b/public/assets/images/blogposts/august-2-2024/smash-3ds.png new file mode 100644 index 0000000..a298e5a Binary files /dev/null and b/public/assets/images/blogposts/august-2-2024/smash-3ds.png differ diff --git a/public/assets/images/blogposts/august-2-2024/wwp.png b/public/assets/images/blogposts/august-2-2024/wwp.png new file mode 100644 index 0000000..6d4347b Binary files /dev/null and b/public/assets/images/blogposts/august-2-2024/wwp.png differ diff --git a/public/assets/images/blogposts/june-29-2024/dr-luigi-wiiu-match.png b/public/assets/images/blogposts/june-29-2024/dr-luigi-wiiu-match.png new file mode 100644 index 0000000..2e3a0be Binary files /dev/null and b/public/assets/images/blogposts/june-29-2024/dr-luigi-wiiu-match.png differ diff --git a/public/assets/images/blogposts/june-29-2024/dr-mario-3ds-match.png b/public/assets/images/blogposts/june-29-2024/dr-mario-3ds-match.png new file mode 100644 index 0000000..d0f3b56 Binary files /dev/null and b/public/assets/images/blogposts/june-29-2024/dr-mario-3ds-match.png differ diff --git a/public/assets/images/blogposts/june-29-2024/mayor-pretendo.png b/public/assets/images/blogposts/june-29-2024/mayor-pretendo.png new file mode 100644 index 0000000..8c47d5a Binary files /dev/null and b/public/assets/images/blogposts/june-29-2024/mayor-pretendo.png differ diff --git a/public/assets/images/blogposts/june-29-2024/minecraft-wiiu-minigame.png b/public/assets/images/blogposts/june-29-2024/minecraft-wiiu-minigame.png new file mode 100644 index 0000000..fb76c60 Binary files /dev/null and b/public/assets/images/blogposts/june-29-2024/minecraft-wiiu-minigame.png differ diff --git a/public/assets/images/blogposts/june-29-2024/pokemon-partner-found.png b/public/assets/images/blogposts/june-29-2024/pokemon-partner-found.png new file mode 100644 index 0000000..dbef73c Binary files /dev/null and b/public/assets/images/blogposts/june-29-2024/pokemon-partner-found.png differ diff --git a/public/assets/images/blogposts/june-29-2024/pokemon-trade-complete.png b/public/assets/images/blogposts/june-29-2024/pokemon-trade-complete.png new file mode 100644 index 0000000..8681019 Binary files /dev/null and b/public/assets/images/blogposts/june-29-2024/pokemon-trade-complete.png differ diff --git a/public/assets/images/blogposts/june-29-2024/preview.png b/public/assets/images/blogposts/june-29-2024/preview.png new file mode 100644 index 0000000..2e8df0f Binary files /dev/null and b/public/assets/images/blogposts/june-29-2024/preview.png differ diff --git a/public/assets/images/blogposts/june-29-2024/puyo-puyo-wiiu-match.png b/public/assets/images/blogposts/june-29-2024/puyo-puyo-wiiu-match.png new file mode 100644 index 0000000..1c0c9ab Binary files /dev/null and b/public/assets/images/blogposts/june-29-2024/puyo-puyo-wiiu-match.png differ diff --git a/public/assets/images/blogposts/june-29-2024/puyo-puyo-wiiu-rankings.png b/public/assets/images/blogposts/june-29-2024/puyo-puyo-wiiu-rankings.png new file mode 100644 index 0000000..79e2db0 Binary files /dev/null and b/public/assets/images/blogposts/june-29-2024/puyo-puyo-wiiu-rankings.png differ diff --git a/public/assets/images/blogposts/june-29-2024/shutter-acnl.png b/public/assets/images/blogposts/june-29-2024/shutter-acnl.png new file mode 100644 index 0000000..29580a4 Binary files /dev/null and b/public/assets/images/blogposts/june-29-2024/shutter-acnl.png differ diff --git a/public/assets/images/blogposts/june-29-2024/shutter-nex-go.png b/public/assets/images/blogposts/june-29-2024/shutter-nex-go.png new file mode 100644 index 0000000..04d8d1b Binary files /dev/null and b/public/assets/images/blogposts/june-29-2024/shutter-nex-go.png differ diff --git a/public/assets/images/blogposts/june-29-2024/smash4-wiiu-match.png b/public/assets/images/blogposts/june-29-2024/smash4-wiiu-match.png new file mode 100644 index 0000000..13d38c9 Binary files /dev/null and b/public/assets/images/blogposts/june-29-2024/smash4-wiiu-match.png differ diff --git a/public/assets/images/blogposts/june-29-2024/splatoon-match.png b/public/assets/images/blogposts/june-29-2024/splatoon-match.png new file mode 100644 index 0000000..0668dc7 Binary files /dev/null and b/public/assets/images/blogposts/june-29-2024/splatoon-match.png differ diff --git a/public/assets/images/blogposts/notification-body.png b/public/assets/images/blogposts/notification-body.png new file mode 100644 index 0000000..1f816bd Binary files /dev/null and b/public/assets/images/blogposts/notification-body.png differ diff --git a/public/assets/images/blogposts/notification-list.png b/public/assets/images/blogposts/notification-list.png new file mode 100644 index 0000000..0e1f022 Binary files /dev/null and b/public/assets/images/blogposts/notification-list.png differ diff --git a/public/assets/images/blogposts/spr.png b/public/assets/images/blogposts/spr.png new file mode 100644 index 0000000..3274f09 Binary files /dev/null and b/public/assets/images/blogposts/spr.png differ diff --git a/public/assets/images/docs/install/wiiu/aroma/aroma-updater-confirm.png b/public/assets/images/docs/install/wiiu/aroma/aroma-updater-confirm.png new file mode 100644 index 0000000..b79e4f8 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/aroma/aroma-updater-confirm.png differ diff --git a/public/assets/images/docs/install/wiiu/aroma/aroma-updater-done.png b/public/assets/images/docs/install/wiiu/aroma/aroma-updater-done.png new file mode 100644 index 0000000..7a3909a Binary files /dev/null and b/public/assets/images/docs/install/wiiu/aroma/aroma-updater-done.png differ diff --git a/public/assets/images/docs/install/wiiu/aroma/aroma-updater-icon.jpg b/public/assets/images/docs/install/wiiu/aroma/aroma-updater-icon.jpg new file mode 100644 index 0000000..4691250 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/aroma/aroma-updater-icon.jpg differ diff --git a/public/assets/images/docs/install/wiiu/aroma/aroma-updater-icon.png b/public/assets/images/docs/install/wiiu/aroma/aroma-updater-icon.png new file mode 100644 index 0000000..3e5ff76 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/aroma/aroma-updater-icon.png differ diff --git a/public/assets/images/docs/install/wiiu/aroma/aroma-updater-inkay.png b/public/assets/images/docs/install/wiiu/aroma/aroma-updater-inkay.png new file mode 100644 index 0000000..41ab552 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/aroma/aroma-updater-inkay.png differ diff --git a/public/assets/images/docs/install/wiiu/aroma/aroma-updater-p1.png b/public/assets/images/docs/install/wiiu/aroma/aroma-updater-p1.png new file mode 100644 index 0000000..5109e0d Binary files /dev/null and b/public/assets/images/docs/install/wiiu/aroma/aroma-updater-p1.png differ diff --git a/public/assets/images/docs/install/wiiu/aroma/aroma-updater-p2.png b/public/assets/images/docs/install/wiiu/aroma/aroma-updater-p2.png new file mode 100644 index 0000000..8caa538 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/aroma/aroma-updater-p2.png differ diff --git a/public/assets/images/docs/install/wiiu/aroma/aroma-updater-welcome.png b/public/assets/images/docs/install/wiiu/aroma/aroma-updater-welcome.png new file mode 100644 index 0000000..4a12100 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/aroma/aroma-updater-welcome.png differ diff --git a/public/assets/images/docs/install/wiiu/aroma/inkay-nightly-link.png b/public/assets/images/docs/install/wiiu/aroma/inkay-nightly-link.png deleted file mode 100644 index 5c8d888..0000000 Binary files a/public/assets/images/docs/install/wiiu/aroma/inkay-nightly-link.png and /dev/null differ diff --git a/public/assets/images/docs/install/wiiu/aroma/nimbus-install.png b/public/assets/images/docs/install/wiiu/aroma/nimbus-install.png deleted file mode 100644 index c9d9e4f..0000000 Binary files a/public/assets/images/docs/install/wiiu/aroma/nimbus-install.png and /dev/null differ diff --git a/public/assets/images/docs/install/wiiu/aroma/nimbus-sd.png b/public/assets/images/docs/install/wiiu/aroma/nimbus-sd.png deleted file mode 100644 index e7eccf8..0000000 Binary files a/public/assets/images/docs/install/wiiu/aroma/nimbus-sd.png and /dev/null differ diff --git a/public/assets/images/docs/install/wiiu/aroma/pretendo-notification.jpg b/public/assets/images/docs/install/wiiu/aroma/pretendo-notification.jpg new file mode 100644 index 0000000..bf1215c Binary files /dev/null and b/public/assets/images/docs/install/wiiu/aroma/pretendo-notification.jpg differ diff --git a/public/assets/images/docs/install/wiiu/aroma/pretendo-notification.png b/public/assets/images/docs/install/wiiu/aroma/pretendo-notification.png new file mode 100644 index 0000000..57cfbfb Binary files /dev/null and b/public/assets/images/docs/install/wiiu/aroma/pretendo-notification.png differ diff --git a/public/assets/images/docs/install/wiiu/aroma/rce-sd-card.png b/public/assets/images/docs/install/wiiu/aroma/rce-sd-card.png deleted file mode 100644 index 6effca4..0000000 Binary files a/public/assets/images/docs/install/wiiu/aroma/rce-sd-card.png and /dev/null differ diff --git a/public/assets/images/docs/install/wiiu/aroma/rce-wps-highlight.png b/public/assets/images/docs/install/wiiu/aroma/rce-wps-highlight.png deleted file mode 100644 index c37f3f6..0000000 Binary files a/public/assets/images/docs/install/wiiu/aroma/rce-wps-highlight.png and /dev/null differ diff --git a/public/assets/images/docs/install/wiiu/aroma/releases-highlight.png b/public/assets/images/docs/install/wiiu/aroma/releases-highlight.png deleted file mode 100644 index 22afb15..0000000 Binary files a/public/assets/images/docs/install/wiiu/aroma/releases-highlight.png and /dev/null differ diff --git a/public/assets/images/docs/install/wiiu/aroma/sd-card.png b/public/assets/images/docs/install/wiiu/aroma/sd-card.png deleted file mode 100644 index 8104483..0000000 Binary files a/public/assets/images/docs/install/wiiu/aroma/sd-card.png and /dev/null differ diff --git a/public/assets/images/docs/install/wiiu/aroma/working-notification.jpg b/public/assets/images/docs/install/wiiu/aroma/working-notification.jpg deleted file mode 100644 index 5107ce0..0000000 Binary files a/public/assets/images/docs/install/wiiu/aroma/working-notification.jpg and /dev/null differ diff --git a/public/assets/images/docs/install/wiiu/aroma/working-notification.png b/public/assets/images/docs/install/wiiu/aroma/working-notification.png deleted file mode 100644 index 2f7431e..0000000 Binary files a/public/assets/images/docs/install/wiiu/aroma/working-notification.png and /dev/null differ diff --git a/public/assets/images/docs/install/wiiu/aroma/wps-highlight.png b/public/assets/images/docs/install/wiiu/aroma/wps-highlight.png deleted file mode 100644 index 5c75d7a..0000000 Binary files a/public/assets/images/docs/install/wiiu/aroma/wps-highlight.png and /dev/null differ diff --git a/public/assets/images/docs/install/wiiu/inkay-tips/aroma-plugin-menu.png b/public/assets/images/docs/install/wiiu/inkay-tips/aroma-plugin-menu.png new file mode 100644 index 0000000..f80743a Binary files /dev/null and b/public/assets/images/docs/install/wiiu/inkay-tips/aroma-plugin-menu.png differ diff --git a/public/assets/images/docs/install/wiiu/inkay-tips/inkay-network-false.png b/public/assets/images/docs/install/wiiu/inkay-tips/inkay-network-false.png new file mode 100644 index 0000000..f9dbf2e Binary files /dev/null and b/public/assets/images/docs/install/wiiu/inkay-tips/inkay-network-false.png differ diff --git a/public/assets/images/docs/install/wiiu/inkay-tips/inkay-network-selection.png b/public/assets/images/docs/install/wiiu/inkay-tips/inkay-network-selection.png new file mode 100644 index 0000000..ccfea2f Binary files /dev/null and b/public/assets/images/docs/install/wiiu/inkay-tips/inkay-network-selection.png differ diff --git a/public/assets/images/docs/install/wiiu/inkay-tips/inkay-other-settings.png b/public/assets/images/docs/install/wiiu/inkay-tips/inkay-other-settings.png new file mode 100644 index 0000000..dcae549 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/inkay-tips/inkay-other-settings.png differ diff --git a/public/assets/images/docs/install/wiiu/inkay-tips/inkay-wwp-apply.png b/public/assets/images/docs/install/wiiu/inkay-tips/inkay-wwp-apply.png new file mode 100644 index 0000000..b3d5a16 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/inkay-tips/inkay-wwp-apply.png differ diff --git a/public/assets/images/docs/install/wiiu/inkay-tips/inkay-wwp-reset.png b/public/assets/images/docs/install/wiiu/inkay-tips/inkay-wwp-reset.png new file mode 100644 index 0000000..7bd6b8a Binary files /dev/null and b/public/assets/images/docs/install/wiiu/inkay-tips/inkay-wwp-reset.png differ diff --git a/public/assets/images/docs/install/wiiu/inkay-tips/nintendo-notification.jpg b/public/assets/images/docs/install/wiiu/inkay-tips/nintendo-notification.jpg new file mode 100644 index 0000000..8973201 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/inkay-tips/nintendo-notification.jpg differ diff --git a/public/assets/images/docs/install/wiiu/inkay-tips/nintendo-notification.png b/public/assets/images/docs/install/wiiu/inkay-tips/nintendo-notification.png new file mode 100644 index 0000000..b5d2f41 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/inkay-tips/nintendo-notification.png differ diff --git a/public/assets/images/docs/install/wiiu/pnid/aroma-plugins-list.jpg b/public/assets/images/docs/install/wiiu/pnid/aroma-plugins-list.jpg deleted file mode 100644 index dc4b81f..0000000 Binary files a/public/assets/images/docs/install/wiiu/pnid/aroma-plugins-list.jpg and /dev/null differ diff --git a/public/assets/images/docs/install/wiiu/pnid/inkay-mainmenu.jpg b/public/assets/images/docs/install/wiiu/pnid/inkay-mainmenu.jpg deleted file mode 100644 index 909fa69..0000000 Binary files a/public/assets/images/docs/install/wiiu/pnid/inkay-mainmenu.jpg and /dev/null differ diff --git a/public/assets/images/docs/install/wiiu/pnid/inkay-patching.jpg b/public/assets/images/docs/install/wiiu/pnid/inkay-patching.jpg deleted file mode 100644 index 1906efc..0000000 Binary files a/public/assets/images/docs/install/wiiu/pnid/inkay-patching.jpg and /dev/null differ diff --git a/public/assets/images/docs/install/wiiu/pnid/nintendo-connection.jpg b/public/assets/images/docs/install/wiiu/pnid/nintendo-connection.jpg deleted file mode 100644 index 53a5afd..0000000 Binary files a/public/assets/images/docs/install/wiiu/pnid/nintendo-connection.jpg and /dev/null differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-connection-change.jpg b/public/assets/images/docs/install/wiiu/sssl/internet-connection-change.jpg new file mode 100644 index 0000000..653f669 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-connection-change.jpg differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-connection-change.png b/public/assets/images/docs/install/wiiu/sssl/internet-connection-change.png new file mode 100644 index 0000000..4e0216d Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-connection-change.png differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-button.jpg b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-button.jpg new file mode 100644 index 0000000..9c0e663 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-button.jpg differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-button.png b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-button.png new file mode 100644 index 0000000..a643ce1 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-button.png differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-done.jpg b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-done.jpg new file mode 100644 index 0000000..090527a Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-done.jpg differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-done.png b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-done.png new file mode 100644 index 0000000..416400c Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-done.png differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-editor.jpg b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-editor.jpg new file mode 100644 index 0000000..85fac39 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-editor.jpg differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-editor.png b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-editor.png new file mode 100644 index 0000000..7177b7d Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-editor.png differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-obtain.jpg b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-obtain.jpg new file mode 100644 index 0000000..82f2c64 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-obtain.jpg differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-obtain.png b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-obtain.png new file mode 100644 index 0000000..757d821 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-obtain.png differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-primary.jpg b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-primary.jpg new file mode 100644 index 0000000..cf6e1e6 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-primary.jpg differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-primary.png b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-primary.png new file mode 100644 index 0000000..59a39aa Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-primary.png differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-secondary.jpg b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-secondary.jpg new file mode 100644 index 0000000..8b165fc Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-secondary.jpg differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-secondary.png b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-secondary.png new file mode 100644 index 0000000..cdfc5d7 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-connection-dns-secondary.png differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-connection-list.jpg b/public/assets/images/docs/install/wiiu/sssl/internet-connection-list.jpg new file mode 100644 index 0000000..355d1a4 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-connection-list.jpg differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-connection-list.png b/public/assets/images/docs/install/wiiu/sssl/internet-connection-list.png new file mode 100644 index 0000000..a5576e3 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-connection-list.png differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-settings-connect.jpg b/public/assets/images/docs/install/wiiu/sssl/internet-settings-connect.jpg new file mode 100644 index 0000000..2262626 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-settings-connect.jpg differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-settings-connect.png b/public/assets/images/docs/install/wiiu/sssl/internet-settings-connect.png new file mode 100644 index 0000000..7e12ef4 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-settings-connect.png differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-settings-scan.jpg b/public/assets/images/docs/install/wiiu/sssl/internet-settings-scan.jpg new file mode 100644 index 0000000..e3df68c Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-settings-scan.jpg differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-settings-scan.png b/public/assets/images/docs/install/wiiu/sssl/internet-settings-scan.png new file mode 100644 index 0000000..d25d1a2 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-settings-scan.png differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-settings.jpg b/public/assets/images/docs/install/wiiu/sssl/internet-settings.jpg new file mode 100644 index 0000000..242e065 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-settings.jpg differ diff --git a/public/assets/images/docs/install/wiiu/sssl/internet-settings.png b/public/assets/images/docs/install/wiiu/sssl/internet-settings.png new file mode 100644 index 0000000..38fe170 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/internet-settings.png differ diff --git a/public/assets/images/docs/install/wiiu/sssl/system-settings.jpg b/public/assets/images/docs/install/wiiu/sssl/system-settings.jpg new file mode 100644 index 0000000..58e0b08 Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/system-settings.jpg differ diff --git a/public/assets/images/docs/install/wiiu/sssl/system-settings.png b/public/assets/images/docs/install/wiiu/sssl/system-settings.png new file mode 100644 index 0000000..4fd4e1a Binary files /dev/null and b/public/assets/images/docs/install/wiiu/sssl/system-settings.png differ diff --git a/public/assets/js/account.js b/public/assets/js/account.js index 6c8e360..7d42c68 100644 --- a/public/assets/js/account.js +++ b/public/assets/js/account.js @@ -7,7 +7,7 @@ editSettingsModalButtonClose?.addEventListener('click', () => { editSettingsModal.classList.add('hidden'); }); -document.addEventListener('click', event => { +document.addEventListener('click', (event) => { if (event.target.classList.contains('edit')) { event.preventDefault(); @@ -15,7 +15,7 @@ document.addEventListener('click', event => { } }); -serverSelectionSaveButton.addEventListener('click', event => { +serverSelectionSaveButton.addEventListener('click', (event) => { event.preventDefault(); const checkedInput = updateServerEnvironmentForm.querySelector('input:checked'); @@ -35,7 +35,7 @@ serverSelectionSaveButton.addEventListener('click', event => { }) }) .then(response => response.json()) - .then(json => { + .then((json) => { if (!json.error) { // TODO - Make this prettier alert('Saved server environment'); @@ -44,7 +44,7 @@ serverSelectionSaveButton.addEventListener('click', event => { alert('Failed to server environment'); } }) - .catch(error => { + .catch((error) => { console.log(error); // TODO - Make this prettier alert('Failed to server environment'); diff --git a/public/assets/js/docssidebarhandler.js b/public/assets/js/docssidebarhandler.js index b602fc4..f6b565d 100644 --- a/public/assets/js/docssidebarhandler.js +++ b/public/assets/js/docssidebarhandler.js @@ -1,6 +1,6 @@ const openSidebarBtn = document.querySelector('#openSidebar'); const content = document.querySelector('div.content'); -openSidebarBtn.addEventListener('click', function() { +openSidebarBtn.addEventListener('click', function () { const sidebar = document.querySelector('.sidebar'); sidebar.classList.toggle('open'); content.classList.toggle('open-sidebar'); diff --git a/public/assets/js/forgot-password.js b/public/assets/js/forgot-password.js deleted file mode 100644 index 006177c..0000000 --- a/public/assets/js/forgot-password.js +++ /dev/null @@ -1,24 +0,0 @@ -const input = document.querySelector('#input'); -document.querySelector('form').addEventListener('submit', function (event) { - event.preventDefault(); - - fetch('/account/forgot-password', { - method: 'POST', - headers: { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - input: input.value - }) - }) - .then(response => response.json()) - .then(body => { - if (body.error) { - alert(`Error: ${body.error}. TODO: red error message thing`); - } else { - alert('If an account exists with the provided username/email address an email has been sent. TODO: reword this and green success'); - } - }) - .catch(console.log); -}); diff --git a/public/assets/js/header-handler.js b/public/assets/js/header-handler.js index 5bccda6..4797ec2 100644 --- a/public/assets/js/header-handler.js +++ b/public/assets/js/header-handler.js @@ -1,5 +1,3 @@ -/* eslint-disable no-undef, no-unused-vars */ - const header = document.querySelector('header'); const dropdownButtonWrapper = document.querySelector('.dropdown-button-wrapper'); const dropdown = document.querySelector('header div.dropdown'); @@ -68,10 +66,9 @@ dropdownAnchors.forEach((a) => { }); }); - // make the header background transparent if near the top of the page function makeHeaderBackgroundTransparent() { - if(window.pageYOffset < 100) { + if (window.pageYOffset < 100) { header.classList.add('transparent'); } else { header.classList.remove('transparent'); @@ -83,7 +80,7 @@ window.addEventListener('scroll', () => { }); desktopDropdownBtns.forEach((btn) => { - [ 'click', 'mouseover' ].forEach((event) => { + ['click', 'mouseover'].forEach((event) => { btn.addEventListener(event, () => { const id = btn.id.replace('-button', ''); navbarDropdownHandler(id); @@ -114,7 +111,7 @@ dropdown.addEventListener('mouseleave', (e) => { }); // Account widget handler -const userWidgetToggle = document.querySelector('.user-widget-toggle') ; +const userWidgetToggle = document.querySelector('.user-widget-toggle'); const userWidget = document.querySelector('.user-widget'); // Open widget on click, close locale dropdown @@ -159,7 +156,7 @@ localeOptionsList.forEach((option) => { // close all dropdowns on scroll document.addEventListener('scroll', () => { - localeDropdownOptions.forEach((el) => el.classList.remove('active')); + localeDropdownOptions.forEach(el => el.classList.remove('active')); localeDropdownToggle.classList.remove('active'); userWidget?.classList.remove('active'); @@ -180,9 +177,9 @@ document.addEventListener('click', (e) => { if ( userWidget == targetElement || - userWidget?.contains(targetElement) || - userWidgetToggle == targetElement || - userWidgetToggle?.contains(targetElement) + userWidget?.contains(targetElement) || + userWidgetToggle == targetElement || + userWidgetToggle?.contains(targetElement) ) { found = true; localeDropdownToggle.classList.remove('active'); diff --git a/public/assets/js/miieditor.js b/public/assets/js/miieditor.js index f6df59b..c4c290e 100644 --- a/public/assets/js/miieditor.js +++ b/public/assets/js/miieditor.js @@ -62,12 +62,12 @@ function initializeMiiData(encodedUserMiiData) { console.log('grabbing rendered miis for later use'); const miiStudioNeutralUrl = mii.studioUrl({ width: 512, - bgColor: '13173300', + bgColor: '13173300' }); const miiStudioSorrowUrl = mii.studioUrl({ width: 512, bgColor: '13173300', - expression: 'sorrow', + expression: 'sorrow' }); document.querySelector('.mii-comparison img.old-mii').setAttribute('data-src', miiStudioNeutralUrl); document.querySelector('.mii-comparison.confirmed img.old-mii').setAttribute('data-src', miiStudioSorrowUrl); @@ -113,7 +113,7 @@ function renderMii(heightOverride, buildOverride) { width: 512, bgColor: '13173300', type: 'face_only', - splitMode: 'both', // this will be twice the height + splitMode: 'both' // this will be twice the height }); miiBodyImg.src = mii.studioAssetUrlBody(); } @@ -176,7 +176,7 @@ function renderMii(heightOverride, buildOverride) { if (!heightOverride && !buildOverride) { const faceMiiStudioUrl = mii.studioUrl({ width: 512, - bgColor: '13173300', + bgColor: '13173300' }); const faceMiiStudioSmileUrl = mii.studioUrl({ @@ -282,7 +282,7 @@ document 'mustacheType', 'moleEnabled', 'gender', - 'favoriteColor', + 'favoriteColor' ].forEach((prop) => { const el = document.querySelector(`#${prop}${mii[prop]}`); if (el) { @@ -328,7 +328,7 @@ console.log('[info] preselected value for disableSharing'); 'height', 'build', 'miiName', - 'creatorName', + 'creatorName' ].forEach((prop) => { document.querySelector(`#${prop}`).value = mii[prop]; document.querySelector(`#${prop}`).defaultValue = mii[prop]; @@ -404,10 +404,10 @@ function openTab(e, tabType) { // Here we bind all of the functions to the corresponding buttons document.querySelectorAll('.tabs button.tabbtn').forEach((el) => { - el.addEventListener('click', (e) => openTab(e, 'tab')); + el.addEventListener('click', e => openTab(e, 'tab')); }); document.querySelectorAll('.subtabs button.subtabbtn').forEach((el) => { - el.addEventListener('click', (e) => openTab(e, 'subtab')); + el.addEventListener('click', e => openTab(e, 'subtab')); }); // SUBPAGES @@ -501,10 +501,10 @@ document mii: { name: mii.miiName, primary: 'Y', - data: miiData, + data: miiData } }) - }) .then(({ status }) => { + }).then(({ status }) => { // TODO - Make this prettier alert('Mii has been updated. It may take some time for the cached image on the website to update'); diff --git a/public/assets/js/progress-charts.js b/public/assets/js/progress-charts.js index 6313d34..1bc8733 100644 --- a/public/assets/js/progress-charts.js +++ b/public/assets/js/progress-charts.js @@ -1,6 +1,6 @@ -/* eslint-disable no-undef */ -document.querySelectorAll('.feature-list-wrapper').forEach(progressListElement => { +/* global Chart -- chart.js */ +document.querySelectorAll('.feature-list-wrapper').forEach((progressListElement) => { // Find and generate all relevant data const percentageOverride = progressListElement.querySelector('canvas.percentage-chart').dataset.percentageoverride; const allFeatureNodes = progressListElement.querySelectorAll('.feature'); @@ -12,7 +12,7 @@ document.querySelectorAll('.feature-list-wrapper').forEach(progressListElement = const remainingPercentage = 100 - progressPercentage; // Set inner paragraph - progressListElement.querySelectorAll('.percentage-label').forEach(p => { + progressListElement.querySelectorAll('.percentage-label').forEach((p) => { if (progressPercentage === 0) { p.innerText = progressPercentage.toString() + '%'; } else { diff --git a/public/assets/js/reset-password.js b/public/assets/js/reset-password.js index 5b58f4f..f36cf6f 100644 --- a/public/assets/js/reset-password.js +++ b/public/assets/js/reset-password.js @@ -9,7 +9,7 @@ document.querySelector('form').addEventListener('submit', function (event) { method: 'POST', headers: { 'Accept': 'application/json', - 'Content-Type': 'application/json', + 'Content-Type': 'application/json' }, body: JSON.stringify({ password: passwordInput.value, @@ -18,7 +18,7 @@ document.querySelector('form').addEventListener('submit', function (event) { }) }) .then(response => response.json()) - .then(body => { + .then((body) => { if (body.error) { alert(`Error: ${body.error}. TODO: red error message thing`); } else { diff --git a/public/assets/js/upgrade.js b/public/assets/js/upgrade.js index 104acbb..7e19175 100644 --- a/public/assets/js/upgrade.js +++ b/public/assets/js/upgrade.js @@ -3,13 +3,13 @@ const buttons = { unsubModal: { show: document.getElementById('unsubModalShowButton'), close: document.getElementById('unsubModalCloseButton'), - confirm: document.getElementById('unsubModalConfirmButton'), + confirm: document.getElementById('unsubModalConfirmButton') }, switchTierModal: { show: document.getElementById('switchTierShowButton'), close: document.getElementById('switchTierCloseButton'), - confirm: document.getElementById('switchTierConfirmButton'), - }, + confirm: document.getElementById('switchTierConfirmButton') + } }; const currentTierID = document.querySelector('form').dataset.currentTier || undefined; @@ -52,7 +52,7 @@ if (currentTierElement) { } // If a tier is selected, conditionally enable the submit button. -document.querySelector('form').addEventListener('change', function(e) { +document.querySelector('form').addEventListener('change', function (e) { e.preventDefault(); // If the selected tier is the current tier, set the button to disabled. Else we enable the button @@ -60,7 +60,7 @@ document.querySelector('form').addEventListener('change', function(e) { }); // handle the submit button -buttons.submit.addEventListener('click', function(e) { +buttons.submit.addEventListener('click', function (e) { e.preventDefault(); // If the user is already subscribed to another tier, we show the confirm modal, else if this is a new subscription we submit the form. @@ -77,7 +77,7 @@ buttons.submit.addEventListener('click', function(e) { } }); -buttons.unsubModal.show.addEventListener('click', function(e) { +buttons.unsubModal.show.addEventListener('click', function (e) { e.preventDefault(); const tierNameSpan = document.querySelector('#unsub .modal-caption span'); @@ -87,27 +87,27 @@ buttons.unsubModal.show.addEventListener('click', function(e) { document.body.classList.add('modal-open'); document.querySelector('.modal-wrapper#unsub').classList.remove('hidden'); }); -buttons.unsubModal.close.addEventListener('click', function(e) { +buttons.unsubModal.close.addEventListener('click', function (e) { e.preventDefault(); // Hide the unsubscribe modal document.body.classList.remove('modal-open'); document.querySelector('.modal-wrapper#unsub').classList.add('hidden'); }); -buttons.unsubModal.confirm.addEventListener('click', function(e) { +buttons.unsubModal.confirm.addEventListener('click', function (e) { e.preventDefault(); submitForm(true); }); -buttons.switchTierModal.close.addEventListener('click', function(e) { +buttons.switchTierModal.close.addEventListener('click', function (e) { e.preventDefault(); // Hide the switch tier modal document.body.classList.remove('modal-open'); document.querySelector('.modal-wrapper#switchtier').classList.add('hidden'); }); -buttons.switchTierModal.confirm.addEventListener('click', function(e) { +buttons.switchTierModal.confirm.addEventListener('click', function (e) { e.preventDefault(); submitForm(false); diff --git a/src/cache.js b/src/cache.js index 68f8838..af17544 100644 --- a/src/cache.js +++ b/src/cache.js @@ -1,11 +1,11 @@ const { GraphQLClient, gql } = require('graphql-request'); const Stripe = require('stripe'); +const config = require('./config'); const logger = require('./logger'); -const config = require('../config.json'); const github = new GraphQLClient('https://api.github.com/graphql', { headers: { - Authorization: `bearer ${config.github.graphql_token}`, + Authorization: `bearer ${config.github.graphql_token}` } }); @@ -82,7 +82,7 @@ let stripeDonationCache = { sections: [] }; -async function getGitHubProjectsV2(after='') { +async function getGitHubProjectsV2(after = '') { let projects = []; const data = await github.request(getProjectsV2GQL, { @@ -94,7 +94,7 @@ async function getGitHubProjectsV2(after='') { projects.push({ id: node.id, title: node.title, - url: node.repositories.nodes[0]?.url, + url: node.repositories.nodes[0]?.url }); } @@ -108,7 +108,7 @@ async function getGitHubProjectsV2(after='') { return projects; } -async function getGitHubProjectsV2Fields(id, after='') { +async function getGitHubProjectsV2Fields(id, after = '') { let fields = []; const data = await github.request(getProjectsV2FieldsGQL, { diff --git a/src/config.js b/src/config.js new file mode 100644 index 0000000..f91ef5e --- /dev/null +++ b/src/config.js @@ -0,0 +1,54 @@ +const jsonConfig = require('../config.json'); + +const disableEmail = !jsonConfig.email?.from?.trim() || !jsonConfig.email?.ses?.region?.trim() || !jsonConfig.email?.ses?.key?.trim() || !jsonConfig.email?.ses?.secret?.trim(); + +const email = disableEmail + ? false + : { + from: jsonConfig.email.from, + ses: { + region: jsonConfig.email.ses.region, + key: jsonConfig.email.ses.key, + secret: jsonConfig.email.ses.secret + } + }; + +module.exports = { + api_base: jsonConfig.api_base, + http: { + base_url: jsonConfig.http.base_url, + port: jsonConfig.http.port, + allowed_redirection_suffixes: Array.isArray(jsonConfig.http.allowed_redirection_suffixes) ? jsonConfig.http.allowed_redirection_suffixes : ['pretendo.network'] + }, + github: { + graphql_token: jsonConfig.github.graphql_token + }, + stripe: { + secret_key: jsonConfig.stripe.secret_key, + webhook_secret: jsonConfig.stripe.webhook_secret, + goal_cents: jsonConfig.stripe.goal_cents, + notification_emails: jsonConfig.stripe.notification_emails + }, + database: { + account: { + connection_string: jsonConfig.database.account.connection_string, + options: jsonConfig.database.account.options + } + }, + discord: { + bot_token: jsonConfig.discord.bot_token, + client_id: jsonConfig.discord.client_id, + client_secret: jsonConfig.discord.client_secret, + guild_id: jsonConfig.discord.guild_id, + roles: { + supporter: jsonConfig.discord.roles.supporter, + tester: jsonConfig.discord.roles.tester + } + }, + discourse: { + sso: { + secret: jsonConfig.discourse.sso.secret + } + }, + email +}; diff --git a/src/database.js b/src/database.js index 751b649..4a1e926 100644 --- a/src/database.js +++ b/src/database.js @@ -1,6 +1,6 @@ const mongoose = require('mongoose'); +const config = require('./config'); const PNIDSchema = require('./schema/pnid'); -const config = require('../config.json'); const accountServerConfig = config.database.account; const { connection_string, options } = accountServerConfig; diff --git a/src/mailer.js b/src/mailer.js index 39c0e8e..88e5fa0 100644 --- a/src/mailer.js +++ b/src/mailer.js @@ -1,15 +1,10 @@ const nodemailer = require('nodemailer'); const aws = require('@aws-sdk/client-ses'); -const config = require('../config.json'); +const config = require('./config'); -let disableEmail = false; let transporter; -if (!config.email?.from?.trim() || !config.email?.ses?.region?.trim() || !config.email?.ses?.key?.trim() || !config.email?.ses?.secret?.trim()) { - disableEmail = true; -} - -if (!disableEmail) { +if (config.email) { const ses = new aws.SES({ apiVersion: '2010-12-01', region: config.email.ses.region, diff --git a/src/middleware/redirect.js b/src/middleware/redirect.js index d1e5d38..2c84727 100644 --- a/src/middleware/redirect.js +++ b/src/middleware/redirect.js @@ -1,14 +1,31 @@ +const config = require('../config'); + +function isValidRedirect(redirect) { + if (!redirect) return false; + if (redirect.startsWith('/')) return true; + if (redirect.startsWith('http://') || redirect.startsWith('https://')) { + try { + const url = new URL(redirect); + return config.http.allowed_redirection_suffixes.some(domain => url.hostname.endsWith(domain)); + } catch { + return false; + } + } + + return false; +} + async function redirectMiddleware(request, response, next) { if (request.path.startsWith('/account/logout')) { return next(); } - - if (request.method === 'POST') { - request.redirect = request.body.redirect?.startsWith('/') ? request.body.redirect : null; + + if (request.method === 'POST' && request.body) { + request.redirect = isValidRedirect(request.body.redirect) ? request.body.redirect : null; } if (request.query.redirect) { - response.locals.redirect = request.query.redirect?.startsWith('/') ? request.query.redirect : null; + response.locals.redirect = isValidRedirect(request.query.redirect) ? request.query.redirect : null; } return next(); diff --git a/src/middleware/render-data.js b/src/middleware/render-data.js index e518285..94c62df 100644 --- a/src/middleware/render-data.js +++ b/src/middleware/render-data.js @@ -1,6 +1,6 @@ +const fs = require('fs'); const util = require('../util'); const database = require('../database'); -const fs = require('fs'); const localeFileNames = fs.readdirSync(`${__dirname}/../../locales`); async function renderDataMiddleware(request, response, next) { @@ -16,7 +16,7 @@ async function renderDataMiddleware(request, response, next) { const reqLocale = request.cookies.preferredLocale || request.locale.toString(); const locale = util.getLocale(reqLocale); - let localeList = localeFileNames.map(locale => { + let localeList = localeFileNames.map((locale) => { const code = locale.replace('.json', '').replace('_', '-'); // Check if it's a real language code, or a custom one diff --git a/src/routes/account.js b/src/routes/account.js index a78a6a1..01f293d 100644 --- a/src/routes/account.js +++ b/src/routes/account.js @@ -1,5 +1,5 @@ -const express = require('express'); const crypto = require('crypto'); +const express = require('express'); const DiscordOauth2 = require('discord-oauth2'); const Stripe = require('stripe'); const { REST: DiscordRest } = require('@discordjs/rest'); @@ -10,8 +10,8 @@ const cache = require('../cache'); const util = require('../util'); const { handleStripeEvent } = require('../stripe'); const logger = require('../logger'); -const config = require('../../config.json'); -const editorJSON = require('../json/miieditor.json'); +const editorJSON = require('../json/miieditor.json'); +const config = require('../config'); const { Router } = express; @@ -60,7 +60,7 @@ router.get('/', requireLoginMiddleware, async (request, response) => { // If no Discord account linked, generate an auth URL const discordAuthURL = discordOAuth.generateAuthUrl({ scope: ['identify', 'guilds'], - state: crypto.randomBytes(16).toString('hex'), + state: crypto.randomBytes(16).toString('hex') }); renderData.discordAuthURL = discordAuthURL; @@ -152,12 +152,37 @@ router.get('/logout', async (_request, response) => { }); router.get('/forgot-password', async (request, response) => { - response.render('account/forgot-password'); + const renderData = { + input: request.cookies.input, + success_message: request.cookies.success_message, + error_message: request.cookies.error_message + }; + + response.clearCookie('input', { domain: '.pretendo.network' }); + + response.render('account/forgot-password', renderData); }); router.post('/forgot-password', async (request, response) => { - const apiResponse = await util.apiPostRequest('/v1/forgot-password', {}, request.body); - response.json(apiResponse.body); + const { input, 'h-captcha-response': hCaptchaResponse } = request.body; + + response.cookie('input', input, { domain: '.pretendo.network' }); + + try { + await util.forgotPassword({ + input, + hCaptchaResponse + }); + + response.clearCookie('input', { domain: '.pretendo.network' }); + + response.cookie('success_message', 'An email has been sent.', { domain: '.pretendo.network' }); + + response.redirect(request.redirect || '/account/forgot-password'); + } catch (error) { + response.cookie('error_message', error.message, { domain: '.pretendo.network' }); + return response.redirect('/account/forgot-password'); + } }); router.get('/reset-password', async (request, response) => { @@ -176,9 +201,9 @@ router.get('/connect/discord', requireLoginMiddleware, async (request, response) tokens = await discordOAuth.tokenRequest({ code: request.query.code, scope: 'identify guilds', - grantType: 'authorization_code', + grantType: 'authorization_code' }); - } catch (error) { + } catch { response.cookie('error_message', 'Invalid Discord authorization code. Please try again', { domain: '.pretendo.network' }); return response.redirect('/account'); } @@ -266,7 +291,7 @@ router.get('/upgrade', requireLoginMiddleware, async (request, response) => { renderData.tiers = products .filter(product => product.active) .sort((a, b) => +a.metadata.tier_level - +b.metadata.tier_level) - .map(product => { + .map((product) => { const price = prices.find(price => price.id === product.default_price); const perks = []; @@ -284,7 +309,7 @@ router.get('/upgrade', requireLoginMiddleware, async (request, response) => { name: product.name, description: product.description, perks, - price: (price.unit_amount / 100).toLocaleString('en-US', { style: 'currency', currency: 'USD' }), + price: (price.unit_amount / 100).toLocaleString('en-US', { style: 'currency', currency: 'USD' }) }; }); @@ -333,8 +358,8 @@ router.post('/stripe/checkout/:priceId', requireLoginMiddleware, async (request, line_items: [ { price: priceId, - quantity: 1, - }, + quantity: 1 + } ], customer: customer.id, mode: 'subscription', @@ -366,9 +391,9 @@ router.post('/stripe/unsubscribe', requireLoginMiddleware, async (request, respo const updateData = { 'connections.stripe.subscription_id': null, - 'connections.stripe.price_id': null, + 'connections.stripe.price_id': null, 'connections.stripe.tier_level': 0, - 'connections.stripe.tier_name': null, + 'connections.stripe.tier_name': null }; if (pnid.get('access_level') < 2) { diff --git a/src/routes/blog.js b/src/routes/blog.js index 2e80238..2c07097 100644 --- a/src/routes/blog.js +++ b/src/routes/blog.js @@ -1,41 +1,42 @@ -const { Router } = require('express'); -const logger = require('../logger'); -const router = new Router(); - -const fs = require('fs'); const path = require('path'); +const fs = require('fs-extra'); +const { Router } = require('express'); const { marked } = require('marked'); const matter = require('gray-matter'); +const logger = require('../logger'); -const postList = () => { - const files = fs.readdirSync('blogposts'); +const router = new Router(); - // We get the info for each blogpost, ignoring the ones starting with _ - const posts = files - .filter(filename => !filename.startsWith('_')) - .filter(filename => filename.endsWith('.md')) // Ignores other files/folders - .map((filename) => { - const slug = filename.replace('.md', ''); - const rawPost = fs.readFileSync( - path.join('blogposts', `${filename}`), - 'utf-8' - ); - const { data: postInfo } = matter(rawPost); - return { - slug, - postInfo, - }; - }); +async function getPostsList() { + const files = await fs.readdir('blogposts'); + + const filteredFiles = files + .filter(filename => !filename.startsWith('_')) // Ignore files starting with _ + .filter(filename => filename.endsWith('.md')); // Ignores files that don't end with .md + + const posts = await Promise.all(filteredFiles.map(async (filename) => { + const slug = filename.replace('.md', ''); + const rawPost = await fs.readFile( + path.join('blogposts', `${filename}`), + 'utf-8' + ); + const { data: postInfo } = matter(rawPost); + return { + slug, + postInfo + }; + })); posts.sort((a, b) => { return new Date(b.postInfo.date) - new Date(a.postInfo.date); }); return posts; -}; +} router.get('/', async (request, response) => { - const renderData = { + const postList = await getPostsList(); + const renderData = { postList }; @@ -44,9 +45,10 @@ router.get('/', async (request, response) => { // RSS feed router.get('/feed.xml', async (request, response) => { + const postList = await getPostsList(); // Adds the pubDate and the cover_extension to the post array - const posts = postList().map((post) => { + const posts = postList.map((post) => { post.postInfo.pubDate = new Date(post.postInfo.date).toUTCString(); post.postInfo.cover_extension = post.postInfo.cover_image.substring(post.postInfo.cover_image.lastIndexOf('.') + 1); return post; @@ -60,10 +62,8 @@ router.get('/feed.xml', async (request, response) => { }); router.get('/:slug', async (request, response, next) => { - - const renderData = { - layout: 'blog-opengraph', - postList, + const renderData = { + layout: 'blog-opengraph' }; // Get the name of the post from the URL @@ -72,14 +72,14 @@ router.get('/:slug', async (request, response, next) => { // Get the markdown file corresponding to the post let rawPost; try { - rawPost = fs.readFileSync(path.join('blogposts', `${postName}.md`), 'utf-8'); - } catch(err) { + rawPost = await fs.readFile(path.join('blogposts', `${postName}.md`), 'utf-8'); + } catch (err) { logger.error(err); next(); return; } // Convert the post info into JSON and separate it and the content - // eslint-disable-next-line prefer-const + let { data: postInfo, content } = matter(rawPost); renderData.postInfo = postInfo; diff --git a/src/routes/docs.js b/src/routes/docs.js index 97277dc..6f5aeb6 100644 --- a/src/routes/docs.js +++ b/src/routes/docs.js @@ -13,7 +13,7 @@ router.get('/', async (request, response) => { router.get('/welcome', async (request, response) => { const renderData = { - currentPage: 'welcome', + currentPage: 'welcome' }; response.render('docs/welcome', renderData); @@ -21,7 +21,7 @@ router.get('/welcome', async (request, response) => { router.get('/install', async (request, response) => { const renderData = { - currentPage: 'install', + currentPage: 'install' }; response.render('docs/install', renderData); @@ -29,11 +29,11 @@ router.get('/install', async (request, response) => { router.get([ '/search', // TODO - Deprecate search page - '/errors', + '/errors' ], async (_request, response) => { const renderData = { errorList: JSON.stringify(errorList), - currentPage: 'errors', + currentPage: 'errors' }; response.render('docs/search', renderData); @@ -44,7 +44,7 @@ router.get('/error', async (_request, response) => { }); router.get('/:page', async (request, response, next) => { - const renderData = {}; + const renderData = {}; const locale = response.locals.localeString; const pageName = request.params.page; @@ -63,12 +63,12 @@ router.get('/:page', async (request, response, next) => { router.get([ '/errors/:errorCode', // TODO - Deprecate "errors" route - '/error/:errorCode', + '/error/:errorCode' ], async (request, response, next) => { const locale = response.locals.localeString; const error = request.params.errorCode; - const [ sysmodule, errorCode ] = error.split('-'); + const [sysmodule, errorCode] = error.split('-'); if (!errorCode) { return next(); diff --git a/src/routes/home.js b/src/routes/home.js index a86e5ad..c5eaac8 100644 --- a/src/routes/home.js +++ b/src/routes/home.js @@ -1,10 +1,10 @@ const { Router } = require('express'); -const router = new Router(); - const { getGithubProjectsCache } = require('../cache'); +const router = new Router(); + router.get('/', async (request, response) => { - const renderData = {}; + const renderData = {}; const githubProjectsCache = await getGithubProjectsCache(); @@ -48,7 +48,7 @@ router.get('/', async (request, response) => { }; // Calculates individual completion percentages and progress states - githubProjectsCache.sections.forEach(section => { + githubProjectsCache.sections.forEach((section) => { const { todo, in_progress, done } = section.cards; // Calculates the completion percentage of the project, and sums it to the total @@ -57,7 +57,7 @@ router.get('/', async (request, response) => { const sectionTitle = `${section.title} [${Math.floor(sectionCompletionPercentage * 100)}%]`; - switch(sectionCompletionPercentage) { + switch (sectionCompletionPercentage) { case 0: totalProgress.cards.todo.push(sectionTitle); break; diff --git a/src/routes/progress.js b/src/routes/progress.js index 1de949e..9e43225 100644 --- a/src/routes/progress.js +++ b/src/routes/progress.js @@ -1,10 +1,10 @@ const { Router } = require('express'); -const router = new Router(); - const { getGithubProjectsCache, getStripeDonationCache } = require('../cache'); +const router = new Router(); + router.get('/', async (request, response) => { - const renderData = { + const renderData = { progressLists: await getGithubProjectsCache(), donationCache: await getStripeDonationCache() }; diff --git a/src/server.js b/src/server.js index 04c714b..31c8cc5 100644 --- a/src/server.js +++ b/src/server.js @@ -8,55 +8,58 @@ const handlebars = require('express-handlebars'); const morgan = require('morgan'); const expressLocale = require('express-locale'); const cookieParser = require('cookie-parser'); -//const Stripe = require('stripe'); +// const Stripe = require('stripe'); +const config = require('./config'); const redirectMiddleware = require('./middleware/redirect'); const renderDataMiddleware = require('./middleware/render-data'); const database = require('./database'); -const util = require('./util'); const logger = require('./logger'); -const config = require('../config.json'); const { http: { port } } = config; const app = express(); -//const stripe = new Stripe(config.stripe.secret_key); +// const stripe = new Stripe(config.stripe.secret_key); logger.info('Setting up Middleware'); app.use(morgan('dev')); -//app.use(express.json()); -app.use(express.json({ verify: (req, res, buf) => { req.rawBody = buf; } })); +// app.use(express.json()); +app.use(express.json({ + verify: (req, res, buf) => { + req.rawBody = buf; + } +})); app.use(express.urlencoded({ extended: true })); app.use(cookieParser()); app.use(expressLocale({ - 'priority': ['cookie', 'accept-language', 'map', 'default'], + priority: ['cookie', 'accept-language', 'map', 'default'], cookie: { name: 'preferredLocale' }, // Map unavailable regions to available locales from the same language map: { /* TODO: map more regions to the available locales */ - en: 'en-US', 'en-AU': 'en-US', 'en-CA': 'en-US', - ar: 'ar-AR', - ca: 'ca-ES', - cs: 'cs-CZ', - cn: 'zh-CN', - de: 'de-DE', - nl: 'nl-NL', - es: 'es-ES', - fr: 'fr-FR', 'fr-CA': 'fr-FR', 'fr-CH': 'fr-FR', - fi: 'fi-FI', - it: 'it-IT', 'it-CH': 'it-IT', - ja: 'ja-JP', - kk: 'kk-KZ', - ko: 'ko-KR', - nb: 'nb-NO', - no: 'nb-NO', - pl: 'pl-PL', - pt: 'pt-BR', - ro: 'ro-RO', - ru: 'ru-RU', - sr: 'sr-RS', - tr: 'tr-TR', - uk: 'uk-UA', + 'en': 'en-US', 'en-AU': 'en-US', 'en-CA': 'en-US', + 'ar': 'ar-AR', + 'ca': 'ca-ES', + 'cs': 'cs-CZ', + 'cn': 'zh-CN', + 'de': 'de-DE', + 'nl': 'nl-NL', + 'es': 'es-ES', + 'fr': 'fr-FR', 'fr-CA': 'fr-FR', 'fr-CH': 'fr-FR', + 'fi': 'fi-FI', + 'it': 'it-IT', 'it-CH': 'it-IT', + 'ja': 'ja-JP', + 'kk': 'kk-KZ', + 'ko': 'ko-KR', + 'nb': 'nb-NO', + 'no': 'nb-NO', + 'pl': 'pl-PL', + 'pt': 'pt-BR', + 'ro': 'ro-RO', + 'ru': 'ru-RU', + 'sr': 'sr-RS', + 'tr': 'tr-TR', + 'uk': 'uk-UA' }, allowed: [ 'en', 'en-US', 'en-GB', 'en-AU', 'en-CA', @@ -84,7 +87,7 @@ app.use(expressLocale({ 'uk', 'uk-UA', 'en@uwu' ], - 'default': 'en-US' + default: 'en-US' })); app.use(redirectMiddleware); app.use(renderDataMiddleware); @@ -117,7 +120,6 @@ logger.info('Creating 404 status handler'); // This works because it is the last router created // Meaning the request could not find a valid router app.use((request, response) => { - const fullUrl = util.fullUrl(request); response.render('404'); }); diff --git a/src/stripe.js b/src/stripe.js index eddb382..53e417b 100644 --- a/src/stripe.js +++ b/src/stripe.js @@ -1,9 +1,9 @@ const Stripe = require('stripe'); +const config = require('./config'); const mailer = require('./mailer'); const util = require('./util'); const database = require('./database'); const logger = require('./logger'); -const config = require('../config.json'); const stripe = new Stripe(config.stripe.secret_key); @@ -95,12 +95,12 @@ async function handleStripeEvent(event) { if (subscription.status === 'canceled' && currentSubscriptionId && subscription.id !== currentSubscriptionId) { // Canceling old subscription, do nothing but update webhook date and remove Discord roles if (product.metadata.beta === 'true') { - util.removeDiscordMemberTesterRole(discordId).catch(error => { + util.removeDiscordMemberTesterRole(discordId).catch((error) => { logger.error(`Error removing user Discord tester role | ${customer.id}, ${discordId}, ${pid} | - ${error.message}`); }); } - util.removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => { + util.removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch((error) => { logger.error(`Error removing user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`); }); @@ -123,7 +123,7 @@ async function handleStripeEvent(event) { 'connections.stripe.price_id': subscription.status === 'active' ? subscription.plan.id : null, 'connections.stripe.tier_level': subscription.status === 'active' ? Number(product.metadata.tier_level || 0) : 0, 'connections.stripe.tier_name': subscription.status === 'active' ? product.name : null, - 'connections.stripe.latest_webhook_timestamp': event.created, + 'connections.stripe.latest_webhook_timestamp': event.created }; if (product.metadata.beta === 'true') { @@ -133,7 +133,7 @@ async function handleStripeEvent(event) { updateData.server_access_level = 'test'; } - util.assignDiscordMemberTesterRole(discordId).catch(error => { + util.assignDiscordMemberTesterRole(discordId).catch((error) => { logger.error(`Error assigning user Discord tester role | ${customer.id}, ${discordId}, ${pid} | - ${error.message}`); }); } else { @@ -144,7 +144,7 @@ async function handleStripeEvent(event) { updateData.server_access_level = 'prod'; } - util.removeDiscordMemberTesterRole(discordId).catch(error => { + util.removeDiscordMemberTesterRole(discordId).catch((error) => { logger.error(`Error removing user Discord tester role | ${customer.id}, ${discordId}, ${pid} | - ${error.message}`); }); } @@ -188,7 +188,7 @@ async function handleStripeEvent(event) { logger.error(`Error sending email | ${customer.id}, ${customer.email}, ${pid} | - ${error.message}`); } - util.assignDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => { + util.assignDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch((error) => { logger.error(`Error assigning user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`); }); @@ -215,7 +215,7 @@ async function handleStripeEvent(event) { logger.error(`Error sending email | ${customer.id}, ${customer.email}, ${pid} | - ${error.message}`); } - util.removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => { + util.removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch((error) => { logger.error(`Error removing user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`); }); @@ -242,7 +242,7 @@ async function handleStripeEvent(event) { logger.error(`Error sending email | ${customer.id}, ${customer.email}, ${pid} | - ${error.message}`); } - util.removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => { + util.removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch((error) => { logger.error(`Error removing user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`); }); @@ -269,7 +269,7 @@ async function handleStripeEvent(event) { logger.error(`Error sending email | ${customer.id}, ${customer.email}, ${pid} | - ${error.message}`); } - util.removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => { + util.removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch((error) => { logger.error(`Error removing user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`); }); diff --git a/src/util.js b/src/util.js index f9d52ab..a2bc999 100644 --- a/src/util.js +++ b/src/util.js @@ -1,13 +1,13 @@ const path = require('path'); +const crypto = require('crypto'); const fs = require('fs-extra'); const got = require('got'); -const crypto = require('crypto'); const { marked } = require('marked'); const { REST: DiscordRest } = require('@discordjs/rest'); const { Routes: DiscordRoutes } = require('discord-api-types/v10'); const merge = require('lodash.merge'); +const config = require('./config'); const logger = require('./logger'); -const config = require('../config.json'); const baseLocale = require(`${__dirname}/../locales/en_US.json`); const discordRest = new DiscordRest({ version: '10' }).setToken(config.discord.bot_token); @@ -34,14 +34,13 @@ function getLocale(locale) { } function getRawDocs(locale, subpath, pageName) { - const localePath = path.join(__dirname, '../docs', locale.replace('-', '_'), subpath, `${pageName}.md`); const defaultPath = path.join(__dirname, '../docs', 'en_US', subpath, `${pageName}.md`); if (fs.existsSync(localePath)) { return { content: parseDocs(fs.readFileSync(localePath, 'utf8')), - MDLocale: locale, + MDLocale: locale }; } else if (fs.existsSync(defaultPath)) { return { @@ -77,7 +76,7 @@ function apiGetRequest(path, headers) { responseType: 'json', throwHttpErrors: false, https: { - rejectUnauthorized: false, // Needed for self-signed certificates on localhost testing + rejectUnauthorized: false // Needed for self-signed certificates on localhost testing }, headers }); @@ -88,7 +87,7 @@ function apiPostRequest(path, headers, json) { responseType: 'json', throwHttpErrors: false, https: { - rejectUnauthorized: false, // Needed for self-signed certificates on localhost testing + rejectUnauthorized: false // Needed for self-signed certificates on localhost testing }, headers, json @@ -99,7 +98,7 @@ function apiDeleteRequest(path, headers, json) { return got.delete(`${config.api_base}${path}`, { throwHttpErrors: false, https: { - rejectUnauthorized: false, // Needed for self-signed certificates on localhost testing + rejectUnauthorized: false // Needed for self-signed certificates on localhost testing }, headers, json @@ -130,6 +129,16 @@ async function login(username, password) { return apiResponse.body; } +async function forgotPassword(forgotPasswordData) { + const apiResponse = await apiPostRequest('/v1/forgot-password', {}, forgotPasswordData); + + if (apiResponse.statusCode !== 200) { + throw new Error(apiResponse.body.error); + } + + return apiResponse.body; +} + async function refreshLogin(request, response) { const apiResponse = await apiPostRequest('/v1/login', {}, { refresh_token: request.cookies.refresh_token, @@ -152,9 +161,9 @@ async function refreshLogin(request, response) { request.cookies.token_type = tokens.token_type; } -async function getUserAccountData(request, response, fromRetry=false) { +async function getUserAccountData(request, response, fromRetry = false) { const apiResponse = await apiGetRequest('/v1/user', { - 'Authorization': `${request.cookies.token_type} ${request.cookies.access_token}` + Authorization: `${request.cookies.token_type} ${request.cookies.access_token}` }); if (apiResponse.statusCode !== 200 && fromRetry === true) { @@ -170,9 +179,9 @@ async function getUserAccountData(request, response, fromRetry=false) { return apiResponse.body; } -async function updateDiscordConnection(discordUser, request, response, fromRetry=false) { +async function updateDiscordConnection(discordUser, request, response, fromRetry = false) { const apiResponse = await apiPostRequest('/v1/connections/add/discord', { - 'Authorization': `${request.cookies.token_type} ${request.cookies.access_token}` + Authorization: `${request.cookies.token_type} ${request.cookies.access_token}` }, { data: { id: discordUser.id @@ -192,7 +201,7 @@ async function updateDiscordConnection(discordUser, request, response, fromRetry async function removeDiscordConnection(request, response, fromRetry = false) { const apiResponse = await apiDeleteRequest('/v1/connections/remove/discord', { - 'Authorization': `${request.cookies.token_type} ${request.cookies.access_token}` + Authorization: `${request.cookies.token_type} ${request.cookies.access_token}` }); if (apiResponse.statusCode !== 200 && fromRetry === true) { @@ -261,6 +270,7 @@ module.exports = { apiDeleteRequest, register, login, + forgotPassword, refreshLogin, getUserAccountData, updateDiscordConnection, diff --git a/views/account/forgot-password.handlebars b/views/account/forgot-password.handlebars index 1a4f540..101a6d7 100644 --- a/views/account/forgot-password.handlebars +++ b/views/account/forgot-password.handlebars @@ -1,17 +1,21 @@ - +{{#section 'head'}} + + +{{/section}} {{> header}}
- \ No newline at end of file +{{#if success_message}} + +{{/if}} + +{{#if error_message}} + +{{/if}} \ No newline at end of file diff --git a/views/home.handlebars b/views/home.handlebars index cab1a9f..43cdb8e 100644 --- a/views/home.handlebars +++ b/views/home.handlebars @@ -13,7 +13,7 @@ {{ locale.hero.buttons.readMore }} - + @@ -200,7 +200,7 @@

{{ locale.discordJoin.widget.text }}

-
{{ locale.discordJoin.widget.button }} + {{ locale.discordJoin.widget.button }}
diff --git a/views/partials/footer.handlebars b/views/partials/footer.handlebars index 0ac47fd..a2de82d 100644 --- a/views/partials/footer.handlebars +++ b/views/partials/footer.handlebars @@ -33,7 +33,7 @@

{{ locale.footer.socials }}

Twitter Mastodon - Discord + Discord GitHub
@@ -49,7 +49,7 @@

{{ locale.footer.widget.captions.[0] }}

{{ locale.footer.widget.captions.[1] }}

- + diff --git a/views/partials/header.handlebars b/views/partials/header.handlebars index 9fa354b..41ee76c 100644 --- a/views/partials/header.handlebars +++ b/views/partials/header.handlebars @@ -93,7 +93,7 @@
- + @@ -202,7 +202,7 @@
- +